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

Unified Diff: webrtc/test/channel_transport/udp_socket2_win.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 side-by-side diff with in-line comments
Download patch
Index: webrtc/test/channel_transport/udp_socket2_win.h
diff --git a/webrtc/test/channel_transport/udp_socket2_win.h b/webrtc/test/channel_transport/udp_socket2_win.h
new file mode 100644
index 0000000000000000000000000000000000000000..b41be9727d2beac302aa38f7dab387e437b41202
--- /dev/null
+++ b/webrtc/test/channel_transport/udp_socket2_win.h
@@ -0,0 +1,174 @@
+/*
+ * 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_SOCKET2_WINDOWS_H_
+#define WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET2_WINDOWS_H_
+
+// Disable deprication warning from traffic.h
+#pragma warning(disable : 4995)
+
+// Don't change include order for these header files.
+#include <Winsock2.h>
+#include <Ntddndis.h>
+#include <traffic.h>
+
+#include "webrtc/base/event.h"
+#include "webrtc/system_wrappers/include/atomic32.h"
+#include "webrtc/system_wrappers/include/event_wrapper.h"
+#include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
+#include "webrtc/system_wrappers/include/trace.h"
+#include "webrtc/test/channel_transport/udp_socket2_manager_win.h"
+#include "webrtc/test/channel_transport/udp_socket_wrapper.h"
+
+namespace webrtc {
+namespace test {
+
+class UdpSocket2ManagerWindows;
+class TrafficControlWindows;
+struct PerIoContext;
+
+class UdpSocket2Windows : public UdpSocketWrapper
+{
+public:
+ UdpSocket2Windows(const int32_t id, UdpSocketManager* mgr,
+ bool ipV6Enable = false, bool disableGQOS = false);
+ virtual ~UdpSocket2Windows();
+
+ bool ValidHandle() override;
+
+ bool SetCallback(CallbackObj, IncomingSocketCallback) override;
+
+ bool Bind(const SocketAddress& name) override;
+ bool SetSockopt(int32_t level,
+ int32_t optname,
+ const int8_t* optval,
+ int32_t optlen) override;
+
+ bool StartReceiving(const uint32_t receiveBuffers) override;
+ inline bool StartReceiving() override { return StartReceiving(8); }
+ bool StopReceiving() override;
+
+ int32_t SendTo(const int8_t* buf,
+ size_t len,
+ const SocketAddress& to) override;
+
+ void CloseBlocking() override;
+
+ SOCKET GetFd() { return _socket;}
+
+ 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) override;
+
+ int32_t SetTOS(const int32_t serviceType) override;
+ int32_t SetPCP(const int32_t pcp) override;
+
+ uint32_t ReceiveBuffers() override { return _receiveBuffers.Value(); }
+
+protected:
+ void IOCompleted(PerIoContext* pIOContext, uint32_t ioSize, uint32_t error);
+
+ int32_t PostRecv();
+ // Use pIoContext to post a new WSARecvFrom(..).
+ int32_t PostRecv(PerIoContext* pIoContext);
+
+private:
+ friend class UdpSocket2WorkerWindows;
+
+ // Set traffic control (TC) flow adding it the interface that matches this
+ // sockets address.
+ // A filter is created and added to the flow.
+ // The flow consists of:
+ // (1) QoS send and receive information (flow specifications).
+ // (2) A DS object (for specifying exact DSCP value).
+ // (3) Possibly a traffic object (for specifying exact 802.1p priority (PCP)
+ // value).
+ //
+ // dscp values:
+ // -1 don't change the current dscp value.
+ // 0 don't add any flow to TC, unless pcp is specified.
+ // 1-63 Add a flow to TC with the specified dscp value.
+ // pcp values:
+ // -2 Don't add pcp info to the flow, (3) will not be added.
+ // -1 Don't change the current value.
+ // 0-7 Add pcp info to the flow with the specified value,
+ // (3) will be added.
+ //
+ // If both dscp and pcp are -1 no flow will be created or added to TC.
+ // If dscp is 0 and pcp is 0-7 (1), (2) and (3) will be created.
+ // Note: input parameter values are assumed to be in valid range, checks
+ // must be done by caller.
+ int32_t SetTrafficControl(int32_t dscp, int32_t pcp,
+ const struct sockaddr_in* name,
+ FLOWSPEC* send = NULL,
+ FLOWSPEC* recv = NULL);
+ int32_t CreateFlowSpec(int32_t serviceType,
+ int32_t tokenRate,
+ int32_t bucketSize,
+ int32_t peekBandwith,
+ int32_t minPolicedSize,
+ int32_t maxSduSize, FLOWSPEC *f);
+
+ int32_t _id;
+ RWLockWrapper* _ptrCbRWLock;
+ IncomingSocketCallback _incomingCb;
+ CallbackObj _obj;
+ bool _qos;
+
+ SocketAddress _remoteAddr;
+ SOCKET _socket;
+ int32_t _iProtocol;
+ UdpSocket2ManagerWindows* _mgr;
+
+ Atomic32 _outstandingCalls;
+ Atomic32 _outstandingCallComplete;
+ volatile bool _terminate;
+ volatile bool _addedToMgr;
+
+ rtc::Event delete_event_;
+
+ RWLockWrapper* _ptrDestRWLock;
+ bool _outstandingCallsDisabled;
+ bool NewOutstandingCall();
+ void OutstandingCallCompleted();
+ void DisableNewOutstandingCalls();
+
+ void RemoveSocketFromManager();
+
+ // RWLockWrapper is used as a reference counter for the socket. Write lock
+ // is used for creating and deleting socket. Read lock is used for
+ // accessing the socket.
+ RWLockWrapper* _ptrSocketRWLock;
+ bool AquireSocket();
+ void ReleaseSocket();
+ bool InvalidateSocket();
+
+ // Traffic control handles and structure pointers.
+ HANDLE _clientHandle;
+ HANDLE _flowHandle;
+ HANDLE _filterHandle;
+ PTC_GEN_FLOW _flow;
+ // TrafficControlWindows implements TOS and PCP.
+ TrafficControlWindows* _gtc;
+ // Holds the current pcp value. Can be -2 or 0 - 7.
+ int _pcp;
+
+ Atomic32 _receiveBuffers;
+};
+
+} // namespace test
+} // namespace webrtc
+
+#endif // WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET2_WINDOWS_H_
« no previous file with comments | « webrtc/test/channel_transport/udp_socket2_manager_win.cc ('k') | webrtc/test/channel_transport/udp_socket2_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698