| Index: webrtc/tools/network_tester/test_controller.h
 | 
| diff --git a/webrtc/tools/network_tester/test_controller.h b/webrtc/tools/network_tester/test_controller.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..da5cde608f1eaf0878b76948e755daa7a30d6d04
 | 
| --- /dev/null
 | 
| +++ b/webrtc/tools/network_tester/test_controller.h
 | 
| @@ -0,0 +1,71 @@
 | 
| +/*
 | 
| + *  Copyright 2017 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_TOOLS_NETWORK_TESTER_TEST_CONTROLLER_H_
 | 
| +#define WEBRTC_TOOLS_NETWORK_TESTER_TEST_CONTROLLER_H_
 | 
| +
 | 
| +#include <array>
 | 
| +#include <limits>
 | 
| +#include <memory>
 | 
| +#include <string>
 | 
| +#include <utility>
 | 
| +
 | 
| +#include "webrtc/base/ignore_wundef.h"
 | 
| +#include "webrtc/p2p/base/basicpacketsocketfactory.h"
 | 
| +#include "webrtc/p2p/base/udptransport.h"
 | 
| +#include "webrtc/tools/network_tester/packet_sender.h"
 | 
| +
 | 
| +#ifdef WEBRTC_NETWORK_TESTER_PROTO
 | 
| +RTC_PUSH_IGNORING_WUNDEF()
 | 
| +#include "webrtc/tools/network_tester/network_tester_packet.pb.h"
 | 
| +RTC_POP_IGNORING_WUNDEF()
 | 
| +using webrtc::network_tester::packet::NetworkTesterPacket;
 | 
| +#else
 | 
| +class NetworkTesterPacket;
 | 
| +#endif  // WEBRTC_NETWORK_TESTER_PROTO
 | 
| +
 | 
| +namespace webrtc {
 | 
| +
 | 
| +class TestController : public sigslot::has_slots<> {
 | 
| + public:
 | 
| +  TestController(int min_port,
 | 
| +                 int max_port,
 | 
| +                 const std::string& config_file_path);
 | 
| +
 | 
| +  void Run();
 | 
| +
 | 
| +  void SendConnectTo(const std::string& hostname, int port);
 | 
| +
 | 
| +  void OnReadPacket(rtc::AsyncPacketSocket* socket,
 | 
| +                    const char* data,
 | 
| +                    size_t len,
 | 
| +                    const rtc::SocketAddress& remote_addr,
 | 
| +                    const rtc::PacketTime& packet_time);
 | 
| +
 | 
| +  void SendData(const NetworkTesterPacket& packet,
 | 
| +                rtc::Optional<size_t> data_size);
 | 
| +
 | 
| +  void OnTestDone();
 | 
| +
 | 
| +  bool IsTestDone() { return local_test_done_ && remote_test_done_; }
 | 
| +
 | 
| + private:
 | 
| +  rtc::BasicPacketSocketFactory socket_factory_;
 | 
| +  std::unique_ptr<cricket::UdpTransport> udp_transport_;
 | 
| +  std::unique_ptr<PacketSender> packet_sender_;
 | 
| +  const std::string config_file_path_;
 | 
| +  bool local_test_done_;
 | 
| +  bool remote_test_done_;
 | 
| +  std::array<char, 15000> send_data_;
 | 
| +};
 | 
| +
 | 
| +}  // namespace webrtc
 | 
| +
 | 
| +#endif  // WEBRTC_TOOLS_NETWORK_TESTER_TEST_CONTROLLER_H_
 | 
| 
 |