OLD | NEW |
| (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_SOCKET_WRAPPER_H_ | |
12 #define WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET_WRAPPER_H_ | |
13 | |
14 #include "webrtc/test/channel_transport/udp_transport.h" | |
15 | |
16 namespace webrtc { | |
17 | |
18 class EventWrapper; | |
19 | |
20 namespace test { | |
21 | |
22 class UdpSocketManager; | |
23 | |
24 #define SOCKET_ERROR_NO_QOS -1000 | |
25 | |
26 #ifndef _WIN32 | |
27 typedef int SOCKET; | |
28 #endif | |
29 | |
30 #ifndef INVALID_SOCKET | |
31 #define INVALID_SOCKET (SOCKET)(~0) | |
32 | |
33 #ifndef AF_INET | |
34 #define AF_INET 2 | |
35 #endif | |
36 | |
37 #endif | |
38 | |
39 typedef void* CallbackObj; | |
40 typedef void(*IncomingSocketCallback)(CallbackObj obj, const int8_t* buf, | |
41 size_t len, const SocketAddress* from); | |
42 | |
43 class UdpSocketWrapper | |
44 { | |
45 public: | |
46 static UdpSocketWrapper* CreateSocket(const int32_t id, | |
47 UdpSocketManager* mgr, | |
48 CallbackObj obj, | |
49 IncomingSocketCallback cb, | |
50 bool ipV6Enable = false, | |
51 bool disableGQOS = false); | |
52 | |
53 // Register cb for receiving callbacks when there are incoming packets. | |
54 // Register obj so that it will be passed in calls to cb. | |
55 virtual bool SetCallback(CallbackObj obj, IncomingSocketCallback cb) = 0; | |
56 | |
57 // Socket to local address specified by name. | |
58 virtual bool Bind(const SocketAddress& name) = 0; | |
59 | |
60 // Start receiving UDP data. | |
61 virtual bool StartReceiving(); | |
62 virtual bool StartReceiving(const uint32_t /*receiveBuffers*/); | |
63 // Stop receiving UDP data. | |
64 virtual bool StopReceiving(); | |
65 | |
66 virtual bool ValidHandle() = 0; | |
67 | |
68 // Set socket options. | |
69 virtual bool SetSockopt(int32_t level, int32_t optname, | |
70 const int8_t* optval, int32_t optlen) = 0; | |
71 | |
72 // Set TOS for outgoing packets. | |
73 virtual int32_t SetTOS(const int32_t serviceType) = 0; | |
74 | |
75 // Set 802.1Q PCP field (802.1p) for outgoing VLAN traffic. | |
76 virtual int32_t SetPCP(const int32_t /*pcp*/); | |
77 | |
78 // Send buf of length len to the address specified by to. | |
79 virtual int32_t SendTo(const int8_t* buf, size_t len, | |
80 const SocketAddress& to) = 0; | |
81 | |
82 virtual void SetEventToNull(); | |
83 | |
84 // Close socket and don't return until completed. | |
85 virtual void CloseBlocking() {} | |
86 | |
87 // tokenRate is in bit/s. peakBandwidt is in byte/s | |
88 virtual bool SetQos(int32_t serviceType, int32_t tokenRate, | |
89 int32_t bucketSize, int32_t peekBandwith, | |
90 int32_t minPolicedSize, int32_t maxSduSize, | |
91 const SocketAddress &stRemName, | |
92 int32_t overrideDSCP = 0) = 0; | |
93 | |
94 virtual uint32_t ReceiveBuffers(); | |
95 | |
96 protected: | |
97 // Creating the socket is done via CreateSocket(). | |
98 UdpSocketWrapper(); | |
99 // Destroying the socket is done via CloseBlocking(). | |
100 virtual ~UdpSocketWrapper(); | |
101 | |
102 bool _wantsIncoming; | |
103 EventWrapper* _deleteEvent; | |
104 | |
105 private: | |
106 static bool _initiated; | |
107 }; | |
108 | |
109 } // namespac test | |
110 } // namespace webrtc | |
111 | |
112 #endif // WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET_WRAPPER_H_ | |
OLD | NEW |