| Index: webrtc/test/channel_transport/udp_socket_wrapper.h
|
| diff --git a/webrtc/test/channel_transport/udp_socket_wrapper.h b/webrtc/test/channel_transport/udp_socket_wrapper.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d2a1ce6b61dd6677c851b97f902f012a51e520e9
|
| --- /dev/null
|
| +++ b/webrtc/test/channel_transport/udp_socket_wrapper.h
|
| @@ -0,0 +1,112 @@
|
| +/*
|
| + * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license
|
| + * that can be found in the LICENSE file in the root of the source
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +
|
| +#ifndef WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET_WRAPPER_H_
|
| +#define WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET_WRAPPER_H_
|
| +
|
| +#include "webrtc/test/channel_transport/udp_transport.h"
|
| +
|
| +namespace webrtc {
|
| +
|
| +class EventWrapper;
|
| +
|
| +namespace test {
|
| +
|
| +class UdpSocketManager;
|
| +
|
| +#define SOCKET_ERROR_NO_QOS -1000
|
| +
|
| +#ifndef _WIN32
|
| +typedef int SOCKET;
|
| +#endif
|
| +
|
| +#ifndef INVALID_SOCKET
|
| +#define INVALID_SOCKET (SOCKET)(~0)
|
| +
|
| +#ifndef AF_INET
|
| +#define AF_INET 2
|
| +#endif
|
| +
|
| +#endif
|
| +
|
| +typedef void* CallbackObj;
|
| +typedef void(*IncomingSocketCallback)(CallbackObj obj, const int8_t* buf,
|
| + size_t len, const SocketAddress* from);
|
| +
|
| +class UdpSocketWrapper
|
| +{
|
| +public:
|
| + static UdpSocketWrapper* CreateSocket(const int32_t id,
|
| + UdpSocketManager* mgr,
|
| + CallbackObj obj,
|
| + IncomingSocketCallback cb,
|
| + bool ipV6Enable = false,
|
| + bool disableGQOS = false);
|
| +
|
| + // Register cb for receiving callbacks when there are incoming packets.
|
| + // Register obj so that it will be passed in calls to cb.
|
| + virtual bool SetCallback(CallbackObj obj, IncomingSocketCallback cb) = 0;
|
| +
|
| + // Socket to local address specified by name.
|
| + virtual bool Bind(const SocketAddress& name) = 0;
|
| +
|
| + // Start receiving UDP data.
|
| + virtual bool StartReceiving();
|
| + virtual bool StartReceiving(const uint32_t /*receiveBuffers*/);
|
| + // Stop receiving UDP data.
|
| + virtual bool StopReceiving();
|
| +
|
| + virtual bool ValidHandle() = 0;
|
| +
|
| + // Set socket options.
|
| + virtual bool SetSockopt(int32_t level, int32_t optname,
|
| + const int8_t* optval, int32_t optlen) = 0;
|
| +
|
| + // Set TOS for outgoing packets.
|
| + virtual int32_t SetTOS(const int32_t serviceType) = 0;
|
| +
|
| + // Set 802.1Q PCP field (802.1p) for outgoing VLAN traffic.
|
| + virtual int32_t SetPCP(const int32_t /*pcp*/);
|
| +
|
| + // Send buf of length len to the address specified by to.
|
| + virtual int32_t SendTo(const int8_t* buf, size_t len,
|
| + const SocketAddress& to) = 0;
|
| +
|
| + virtual void SetEventToNull();
|
| +
|
| + // Close socket and don't return until completed.
|
| + virtual void CloseBlocking() {}
|
| +
|
| + // tokenRate is in bit/s. peakBandwidt is in byte/s
|
| + virtual bool SetQos(int32_t serviceType, int32_t tokenRate,
|
| + int32_t bucketSize, int32_t peekBandwith,
|
| + int32_t minPolicedSize, int32_t maxSduSize,
|
| + const SocketAddress &stRemName,
|
| + int32_t overrideDSCP = 0) = 0;
|
| +
|
| + virtual uint32_t ReceiveBuffers();
|
| +
|
| +protected:
|
| + // Creating the socket is done via CreateSocket().
|
| + UdpSocketWrapper();
|
| + // Destroying the socket is done via CloseBlocking().
|
| + virtual ~UdpSocketWrapper();
|
| +
|
| + bool _wantsIncoming;
|
| + EventWrapper* _deleteEvent;
|
| +
|
| +private:
|
| + static bool _initiated;
|
| +};
|
| +
|
| +} // namespac test
|
| +} // namespace webrtc
|
| +
|
| +#endif // WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET_WRAPPER_H_
|
|
|