ZLMediaKit/src/Rtsp/UDPServer.h

55 lines
1.3 KiB
C
Raw Normal View History

2017-04-01 16:35:56 +08:00
/*
* UDPServer.h
*
* Created on: 2016812
* Author: xzl
*/
#ifndef RTSP_UDPSERVER_H_
#define RTSP_UDPSERVER_H_
2017-04-25 11:35:41 +08:00
2017-04-01 16:35:56 +08:00
#include <mutex>
2017-04-25 11:35:41 +08:00
#include <stdint.h>
#include <unordered_map>
#include <unordered_set>
2017-04-01 16:35:56 +08:00
#include "Util/util.h"
2017-04-25 11:35:41 +08:00
#include "Util/logger.h"
#include "Network/Socket.h"
2017-04-01 16:35:56 +08:00
using namespace std;
using namespace ZL::Util;
using namespace ZL::Network;
2017-04-25 11:35:41 +08:00
2017-04-01 16:35:56 +08:00
namespace ZL {
namespace Rtsp {
class UDPServer {
public:
typedef function< bool(int, const Socket::Buffer::Ptr &, struct sockaddr *)> onRecvData;
UDPServer();
virtual ~UDPServer();
static UDPServer &Instance() {
static UDPServer *instance(new UDPServer());
return *instance;
}
static void Destory() {
delete &UDPServer::Instance();
}
Socket::Ptr getSock(const char *strLocalIp, int iTrackIndex);
void listenPeer(const char *strPeerIp, void *pSelf, const onRecvData &cb);
void stopListenPeer(const char *strPeerIp, void *pSelf);
private:
void onRcvData(int iTrackId, const Socket::Buffer::Ptr &pBuf,struct sockaddr *pPeerAddr);
void onErr(const string &strKey,const SockException &err);
unordered_map<string, Socket::Ptr> m_mapUpdSock;
mutex m_mtxUpdSock;
unordered_map<string, unordered_map<void *, onRecvData> > m_mapDataHandler;
mutex m_mtxDataHandler;
};
} /* namespace Rtsp */
} /* namespace ZL */
#endif /* RTSP_UDPSERVER_H_ */