45 #ifndef RTPFAKETRANSMITTER_H 47 #define RTPFAKETRANSMITTER_H 49 #include "rtpconfig.h" 57 #ifdef RTP_SUPPORT_THREAD 59 #endif // RTP_SUPPORT_THREAD 61 #define RTPFAKETRANS_HASHSIZE 8317 62 #define RTPFAKETRANS_DEFAULTPORTBASE 5000 66 typedef void(*packet_ready_cb)(
void*, uint8_t*, uint16_t, uint32_t, uint16_t,
int rtp);
71 RTPFakeTransmissionParams():
RTPTransmissionParams(
RTPTransmitter::UserDefinedProto) { portbase = RTPFAKETRANS_DEFAULTPORTBASE; bindIP = 0; multicastTTL = 1; currentdata = NULL;}
72 void SetBindIP(uint32_t ip) { bindIP = ip; }
73 void SetPortbase(uint16_t pbase) { portbase = pbase; }
74 void SetMulticastTTL(uint8_t mcastTTL) { multicastTTL = mcastTTL; }
75 void SetLocalIPList(std::list<uint32_t> &iplist) { localIPs = iplist; }
76 void ClearLocalIPList() { localIPs.clear(); }
77 void SetCurrentData(uint8_t *data) { currentdata = data; }
78 void SetCurrentDataLen(uint16_t len) { currentdatalen = len; }
79 void SetCurrentDataAddr(uint32_t addr) { currentdataaddr = addr; }
80 void SetCurrentDataPort(uint16_t port) { currentdataport = port; }
81 void SetCurrentDataType(
bool type) { currentdatatype = type; }
82 void SetPacketReadyCB(packet_ready_cb cb) { packetreadycb = cb; };
83 void SetPacketReadyCBData(
void *data) { packetreadycbdata = data; };
84 uint32_t GetBindIP()
const {
return bindIP; }
85 uint16_t GetPortbase()
const {
return portbase; }
86 uint8_t GetMulticastTTL()
const {
return multicastTTL; }
87 const std::list<uint32_t> &GetLocalIPList()
const {
return localIPs; }
88 uint8_t* GetCurrentData()
const {
return currentdata; }
89 uint16_t GetCurrentDataLen()
const {
return currentdatalen; }
90 uint32_t GetCurrentDataAddr()
const {
return currentdataaddr; }
91 uint16_t GetCurrentDataPort()
const {
return currentdataport; }
92 bool GetCurrentDataType()
const {
return currentdatatype; }
93 packet_ready_cb GetPacketReadyCB()
const {
return packetreadycb; }
94 void* GetPacketReadyCBData()
const {
return packetreadycbdata; }
98 std::list<uint32_t> localIPs;
100 uint8_t* currentdata;
101 uint16_t currentdatalen;
102 uint32_t currentdataaddr;
103 uint16_t currentdataport;
104 bool currentdatatype;
105 packet_ready_cb packetreadycb;
106 void *packetreadycbdata;
112 RTPFakeTransmissionInfo(std::list<uint32_t> iplist,
113 RTPFakeTransmissionParams *transparams) :
115 { localIPlist = iplist; params = transparams; }
117 ~RTPFakeTransmissionInfo() { }
118 std::list<uint32_t> GetLocalIPList()
const {
return localIPlist; }
119 RTPFakeTransmissionParams* GetTransParams() {
return params; }
121 std::list<uint32_t> localIPlist;
122 RTPFakeTransmissionParams *params;
125 class RTPFakeTrans_GetHashIndex_IPv4Dest
128 static int GetIndex(
const RTPIPv4Destination &d) {
return d.GetIP()%RTPFAKETRANS_HASHSIZE; }
131 class RTPFakeTrans_GetHashIndex_uint32_t
134 static int GetIndex(
const uint32_t &k) {
return k%RTPFAKETRANS_HASHSIZE; }
137 #define RTPFAKETRANS_HEADERSIZE (20+8) 143 ~RTPFakeTransmitter();
145 int Init(
bool treadsafe);
150 int GetLocalHostName(uint8_t *buffer,
size_t *bufferlength);
151 bool ComesFromThisTransmitter(
const RTPAddress *addr);
152 size_t GetHeaderOverhead() {
return RTPFAKETRANS_HEADERSIZE; }
155 int WaitForIncomingData(
const RTPTime &delay,
bool *dataavailable = 0);
158 int SendRTPData(
const void *data,
size_t len);
159 int SendRTCPData(
const void *data,
size_t len);
162 int DeleteDestination(
const RTPAddress &addr);
163 void ClearDestinations();
165 bool SupportsMulticasting();
166 int JoinMulticastGroup(
const RTPAddress &addr);
167 int LeaveMulticastGroup(
const RTPAddress &addr);
168 void LeaveAllMulticastGroups();
172 int DeleteFromIgnoreList(
const RTPAddress &addr);
173 void ClearIgnoreList();
175 int DeleteFromAcceptList(
const RTPAddress &addr);
176 void ClearAcceptList();
177 int SetMaximumPacketSize(
size_t s);
179 bool NewDataAvailable();
185 int CreateLocalIPList();
186 bool GetLocalIPList_Interfaces();
187 void GetLocalIPList_DNS();
188 void AddLoopbackAddress();
191 int ProcessAddAcceptIgnoreEntry(uint32_t ip,uint16_t port);
192 int ProcessDeleteAcceptIgnoreEntry(uint32_t ip,uint16_t port);
193 #ifdef RTP_SUPPORT_IPV4MULTICAST 194 bool SetMulticastTTL(uint8_t ttl);
195 #endif // RTP_SUPPORT_IPV4MULTICAST 196 bool ShouldAcceptData(uint32_t srcip,uint16_t srcport);
197 void ClearAcceptIgnoreInfo();
199 RTPFakeTransmissionParams *params;
203 std::list<uint32_t> localIPs;
205 uint8_t multicastTTL;
208 uint8_t *localhostname;
209 size_t localhostnamelength;
211 RTPHashTable<const RTPIPv4Destination,RTPFakeTrans_GetHashIndex_IPv4Dest,RTPFAKETRANS_HASHSIZE> destinations;
212 #ifdef RTP_SUPPORT_IPV4MULTICAST 214 #endif // RTP_SUPPORT_IPV4MULTICAST 215 std::list<RTPRawPacket*> rawpacketlist;
217 bool supportsmulticasting;
223 PortInfo() { all =
false; }
226 std::list<uint16_t> portlist;
229 RTPKeyHashTable<const uint32_t,PortInfo*,RTPFakeTrans_GetHashIndex_uint32_t,RTPFAKETRANS_HASHSIZE> acceptignoreinfo;
231 int CreateAbortDescriptors();
232 void DestroyAbortDescriptors();
233 void AbortWaitInternal();
234 #ifdef RTP_SUPPORT_THREAD 235 JMutex mainmutex,waitmutex;
237 #endif // RTP_SUPPORT_THREAD 240 #endif // RTPFakeTRANSMITTER_H A memory manager.
Definition: rtpmemorymanager.h:144
This class is used to specify wallclock time, delay intervals etc.
Definition: rtptimeutilities.h:77
Base class for additional information about the transmitter.
Definition: rtptransmitter.h:236
This class is used by the transmission component to store the incoming RTP and RTCP data in...
Definition: rtprawpacket.h:48
ReceiveMode
Three kind of receive modes can be specified.
Definition: rtptransmitter.h:73
Abstract class from which actual transmission components should be derived.
Definition: rtptransmitter.h:57
This class is an abstract class which is used to specify destinations, multicast groups etc...
Definition: rtpaddress.h:47
Base class for transmission parameters.
Definition: rtptransmitter.h:217