Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1168)

Side by Side Diff: webrtc/test/channel_transport/udp_transport_impl.h

Issue 2336123002: Revert of Moved webrtc/test/channel_transport/ into webrtc/voice_engine/test/ (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_TRANSPORT_IMPL_H_
12 #define WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_TRANSPORT_IMPL_H_
13
14 #include "webrtc/test/channel_transport/udp_socket_wrapper.h"
15 #include "webrtc/test/channel_transport/udp_transport.h"
16
17 namespace webrtc {
18
19 class CriticalSectionWrapper;
20 class RWLockWrapper;
21
22 namespace test {
23
24 class UdpSocketManager;
25
26 class UdpTransportImpl : public UdpTransport
27 {
28 public:
29 // A factory that returns a wrapped UDP socket or equivalent.
30 class SocketFactoryInterface {
31 public:
32 virtual ~SocketFactoryInterface() {}
33 virtual UdpSocketWrapper* CreateSocket(const int32_t id,
34 UdpSocketManager* mgr,
35 CallbackObj obj,
36 IncomingSocketCallback cb,
37 bool ipV6Enable,
38 bool disableGQOS) = 0;
39 };
40
41 // Constructor, only called by UdpTransport::Create and tests.
42 // The constructor takes ownership of the "maker".
43 // The constructor does not take ownership of socket_manager.
44 UdpTransportImpl(const int32_t id,
45 SocketFactoryInterface* maker,
46 UdpSocketManager* socket_manager);
47 virtual ~UdpTransportImpl();
48
49 // UdpTransport functions
50 int32_t InitializeSendSockets(const char* ipAddr,
51 const uint16_t rtpPort,
52 const uint16_t rtcpPort = 0) override;
53 int32_t InitializeReceiveSockets(UdpTransportData* const packetCallback,
54 const uint16_t rtpPort,
55 const char* ipAddr = NULL,
56 const char* multicastIpAddr = NULL,
57 const uint16_t rtcpPort = 0) override;
58 int32_t InitializeSourcePorts(const uint16_t rtpPort,
59 const uint16_t rtcpPort = 0) override;
60 int32_t SourcePorts(uint16_t& rtpPort, uint16_t& rtcpPort) const override;
61 int32_t ReceiveSocketInformation(
62 char ipAddr[kIpAddressVersion6Length],
63 uint16_t& rtpPort,
64 uint16_t& rtcpPort,
65 char multicastIpAddr[kIpAddressVersion6Length]) const override;
66 int32_t SendSocketInformation(char ipAddr[kIpAddressVersion6Length],
67 uint16_t& rtpPort,
68 uint16_t& rtcpPort) const override;
69 int32_t RemoteSocketInformation(char ipAddr[kIpAddressVersion6Length],
70 uint16_t& rtpPort,
71 uint16_t& rtcpPort) const override;
72 int32_t SetQoS(const bool QoS,
73 const int32_t serviceType,
74 const uint32_t maxBitrate = 0,
75 const int32_t overrideDSCP = 0,
76 const bool audio = false) override;
77 int32_t QoS(bool& QoS,
78 int32_t& serviceType,
79 int32_t& overrideDSCP) const override;
80 int32_t SetToS(const int32_t DSCP,
81 const bool useSetSockOpt = false) override;
82 int32_t ToS(int32_t& DSCP, bool& useSetSockOpt) const override;
83 int32_t SetPCP(const int32_t PCP) override;
84 int32_t PCP(int32_t& PCP) const override;
85 int32_t EnableIpV6() override;
86 bool IpV6Enabled() const override;
87 int32_t SetFilterIP(
88 const char filterIPAddress[kIpAddressVersion6Length]) override;
89 int32_t FilterIP(
90 char filterIPAddress[kIpAddressVersion6Length]) const override;
91 int32_t SetFilterPorts(const uint16_t rtpFilterPort,
92 const uint16_t rtcpFilterPort) override;
93 int32_t FilterPorts(uint16_t& rtpFilterPort,
94 uint16_t& rtcpFilterPort) const override;
95 int32_t StartReceiving(const uint32_t numberOfSocketBuffers) override;
96 int32_t StopReceiving() override;
97 bool Receiving() const override;
98 bool SendSocketsInitialized() const override;
99 bool SourcePortsInitialized() const override;
100 bool ReceiveSocketsInitialized() const override;
101 int32_t SendRaw(const int8_t* data,
102 size_t length,
103 int32_t isRTCP,
104 uint16_t portnr = 0,
105 const char* ip = NULL) override;
106 int32_t SendRTPPacketTo(const int8_t* data,
107 size_t length,
108 const SocketAddress& to) override;
109 int32_t SendRTCPPacketTo(const int8_t* data,
110 size_t length,
111 const SocketAddress& to) override;
112 int32_t SendRTPPacketTo(const int8_t* data,
113 size_t length,
114 uint16_t rtpPort) override;
115 int32_t SendRTCPPacketTo(const int8_t* data,
116 size_t length,
117 uint16_t rtcpPort) override;
118 // Transport functions
119 bool SendRtp(const uint8_t* data,
120 size_t length,
121 const PacketOptions& packet_options) override;
122 bool SendRtcp(const uint8_t* data, size_t length) override;
123
124 // UdpTransport functions continue.
125 int32_t SetSendIP(const char* ipaddr) override;
126 int32_t SetSendPorts(const uint16_t rtpPort,
127 const uint16_t rtcpPort = 0) override;
128
129 ErrorCode LastError() const override;
130
131 int32_t IPAddressCached(const SocketAddress& address,
132 char* ip,
133 uint32_t& ipSize,
134 uint16_t& sourcePort) override;
135
136 int32_t Id() const {return _id;}
137 protected:
138 // IncomingSocketCallback signature functions for receiving callbacks from
139 // UdpSocketWrapper.
140 static void IncomingRTPCallback(CallbackObj obj,
141 const int8_t* rtpPacket,
142 size_t rtpPacketLength,
143 const SocketAddress* from);
144 static void IncomingRTCPCallback(CallbackObj obj,
145 const int8_t* rtcpPacket,
146 size_t rtcpPacketLength,
147 const SocketAddress* from);
148
149 void CloseSendSockets();
150 void CloseReceiveSockets();
151
152 // Update _remoteRTPAddr according to _destPort and _destIP
153 void BuildRemoteRTPAddr();
154 // Update _remoteRTCPAddr according to _destPortRTCP and _destIP
155 void BuildRemoteRTCPAddr();
156
157 void BuildSockaddrIn(uint16_t portnr, const char* ip,
158 SocketAddress& remoteAddr) const;
159
160 ErrorCode BindLocalRTPSocket();
161 ErrorCode BindLocalRTCPSocket();
162
163 ErrorCode BindRTPSendSocket();
164 ErrorCode BindRTCPSendSocket();
165
166 void IncomingRTPFunction(const int8_t* rtpPacket,
167 size_t rtpPacketLength,
168 const SocketAddress* from);
169 void IncomingRTCPFunction(const int8_t* rtcpPacket,
170 size_t rtcpPacketLength,
171 const SocketAddress* from);
172
173 bool FilterIPAddress(const SocketAddress* fromAddress);
174
175 bool SetSockOptUsed();
176
177 int32_t EnableQoS(int32_t serviceType, bool audio,
178 uint32_t maxBitrate, int32_t overrideDSCP);
179
180 int32_t DisableQoS();
181
182 private:
183 void GetCachedAddress(char* ip, uint32_t& ipSize,
184 uint16_t& sourcePort);
185
186 int32_t _id;
187 SocketFactoryInterface* _socket_creator;
188 // Protects the sockets from being re-configured while receiving packets.
189 CriticalSectionWrapper* _crit;
190 CriticalSectionWrapper* _critFilter;
191 // _packetCallback's critical section.
192 CriticalSectionWrapper* _critPacketCallback;
193 UdpSocketManager* _mgr;
194 ErrorCode _lastError;
195
196 // Remote RTP and RTCP ports.
197 uint16_t _destPort;
198 uint16_t _destPortRTCP;
199
200 // Local RTP and RTCP ports.
201 uint16_t _localPort;
202 uint16_t _localPortRTCP;
203
204 // Local port number when the local port for receiving and local port number
205 // for sending are not the same.
206 uint16_t _srcPort;
207 uint16_t _srcPortRTCP;
208
209 // Remote port from which last received packet was sent.
210 uint16_t _fromPort;
211 uint16_t _fromPortRTCP;
212
213 char _fromIP[kIpAddressVersion6Length];
214 char _destIP[kIpAddressVersion6Length];
215 char _localIP[kIpAddressVersion6Length];
216 char _localMulticastIP[kIpAddressVersion6Length];
217
218 UdpSocketWrapper* _ptrRtpSocket;
219 UdpSocketWrapper* _ptrRtcpSocket;
220
221 // Local port when the local port for receiving and local port for sending
222 // are not the same.
223 UdpSocketWrapper* _ptrSendRtpSocket;
224 UdpSocketWrapper* _ptrSendRtcpSocket;
225
226 SocketAddress _remoteRTPAddr;
227 SocketAddress _remoteRTCPAddr;
228
229 SocketAddress _localRTPAddr;
230 SocketAddress _localRTCPAddr;
231
232 int32_t _tos;
233 bool _receiving;
234 bool _useSetSockOpt;
235 bool _qos;
236 int32_t _pcp;
237 bool _ipV6Enabled;
238 int32_t _serviceType;
239 int32_t _overrideDSCP;
240 uint32_t _maxBitrate;
241
242 // Cache used by GetCachedAddress(..).
243 RWLockWrapper* _cachLock;
244 SocketAddress _previousAddress;
245 char _previousIP[kIpAddressVersion6Length];
246 uint32_t _previousIPSize;
247 uint16_t _previousSourcePort;
248
249 SocketAddress _filterIPAddress;
250 uint16_t _rtpFilterPort;
251 uint16_t _rtcpFilterPort;
252
253 UdpTransportData* _packetCallback;
254 };
255
256 } // namespace test
257 } // namespace webrtc
258
259 #endif // WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_TRANSPORT_IMPL_H_
OLDNEW
« no previous file with comments | « webrtc/test/channel_transport/udp_transport.h ('k') | webrtc/test/channel_transport/udp_transport_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698