| Index: webrtc/test/channel_transport/traffic_control_win.h
|
| diff --git a/webrtc/test/channel_transport/traffic_control_win.h b/webrtc/test/channel_transport/traffic_control_win.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1197b94b206be04a7fc106e34db3ef64a2d283a0
|
| --- /dev/null
|
| +++ b/webrtc/test/channel_transport/traffic_control_win.h
|
| @@ -0,0 +1,99 @@
|
| +/*
|
| + * Copyright (c) 2011 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_TRAFFIC_CONTROL_WINDOWS_H_
|
| +#define WEBRTC_TEST_CHANNEL_TRANSPORT_TRAFFIC_CONTROL_WINDOWS_H_
|
| +
|
| +#ifndef WIN32_LEAN_AND_MEAN
|
| +#define WIN32_LEAN_AND_MEAN
|
| +#endif
|
| +
|
| +// Disable deprication warning from traffic.h
|
| +#pragma warning(disable : 4995)
|
| +
|
| +#include <windows.h>
|
| +#include <qos.h>
|
| +#include <ntddndis.h>
|
| +#include <traffic.h>
|
| +
|
| +#include "webrtc/system_wrappers/include/trace.h"
|
| +
|
| +namespace webrtc {
|
| +namespace test {
|
| +void MyClNotifyHandler(HANDLE ClRegCtx, HANDLE ClIfcCtx, ULONG Event,
|
| + HANDLE SubCode, ULONG BufSize, PVOID Buffer);
|
| +
|
| +
|
| +typedef ULONG (WINAPI *registerFn)(ULONG, HANDLE, PTCI_CLIENT_FUNC_LIST,
|
| + PHANDLE);
|
| +typedef ULONG (WINAPI *deregisterFn)(HANDLE);
|
| +typedef ULONG (WINAPI *enumerateFn)(HANDLE, PULONG, PTC_IFC_DESCRIPTOR);
|
| +typedef ULONG (WINAPI *openInterfaceFn)(LPWSTR, HANDLE, HANDLE, PHANDLE);
|
| +typedef ULONG (WINAPI *closeInterfaceFn)(HANDLE);
|
| +typedef ULONG (WINAPI *flowAddFn)(HANDLE, HANDLE, ULONG, PTC_GEN_FLOW, PHANDLE);
|
| +typedef ULONG (WINAPI *filterAddFn)(HANDLE, PTC_GEN_FILTER, PHANDLE);
|
| +typedef ULONG (WINAPI *flowDeleteFn)(HANDLE);
|
| +typedef ULONG (WINAPI *filterDeleteFn)(HANDLE);
|
| +
|
| +class TrafficControlWindows
|
| +{
|
| + public:
|
| + // Factory method. Constructor disabled.
|
| + static TrafficControlWindows* GetInstance(const int32_t id);
|
| + static void Release(TrafficControlWindows* gtc);
|
| +
|
| + ULONG TcRegisterClient(ULONG TciVersion, HANDLE ClRegCtx,
|
| + PTCI_CLIENT_FUNC_LIST ClientHandlerList,
|
| + PHANDLE pClientHandle);
|
| +
|
| + ULONG TcDeregisterClient(HANDLE clientHandle);
|
| +
|
| + ULONG TcEnumerateInterfaces(HANDLE ClientHandle, PULONG pBufferSize,
|
| + PTC_IFC_DESCRIPTOR interfaceBuffer);
|
| +
|
| + ULONG TcOpenInterfaceW(LPWSTR pInterfaceName, HANDLE ClientHandle,
|
| + HANDLE ClIfcCtx, PHANDLE pIfcHandle);
|
| +
|
| + ULONG TcCloseInterface(HANDLE IfcHandle);
|
| +
|
| + ULONG TcAddFlow(HANDLE IfcHandle, HANDLE ClFlowCtx, ULONG Flags,
|
| + PTC_GEN_FLOW pGenericFlow, PHANDLE pFlowHandle);
|
| +
|
| + ULONG TcAddFilter(HANDLE FlowHandle, PTC_GEN_FILTER pGenericFilter,
|
| + PHANDLE pFilterHandle);
|
| +
|
| + ULONG TcDeleteFlow(HANDLE FlowHandle);
|
| + ULONG TcDeleteFilter(HANDLE FilterHandle);
|
| +private:
|
| + TrafficControlWindows(const int32_t id);
|
| + TCI_CLIENT_FUNC_LIST QoSFunctions;
|
| +
|
| + static TrafficControlWindows* instance;
|
| +
|
| + registerFn tcRegister;
|
| + deregisterFn tcDeregister;
|
| +
|
| + enumerateFn tcEnumerate;
|
| + openInterfaceFn tcOpenInterface;
|
| + closeInterfaceFn tcCloseInterface;
|
| +
|
| + flowAddFn tcAddFlow;
|
| + flowDeleteFn tcDeleteFlow;
|
| +
|
| + filterAddFn tcAddFilter;
|
| + filterDeleteFn tcDeleteFilter;
|
| +
|
| + static uint32_t refCounter;
|
| +};
|
| +
|
| +} // namespace test
|
| +} // namespace webrtc
|
| +
|
| +#endif // WEBRTC_TEST_CHANNEL_TRANSPORT_TRAFFIC_CONTROL_WINDOWS_H_
|
|
|