1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MEDIA_CAST_TEST_TRANSPORT_TRANSPORT_H_
6#define MEDIA_CAST_TEST_TRANSPORT_TRANSPORT_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "media/cast/cast_config.h"
10#include "media/cast/cast_environment.h"
11#include "net/udp/udp_server_socket.h"
12
13
14namespace media {
15namespace cast {
16namespace test {
17
18class LocalUdpTransportData;
19class LocalPacketSender;
20
21// Helper class for Cast test applications.
22class Transport {
23 public:
24  Transport(scoped_refptr<base::TaskRunner> io_thread_proxy);
25  ~Transport();
26
27  // Specifies the ports and IP address to receive packets on.
28  // Will start listening immediately.
29  void SetLocalReceiver(PacketReceiver* packet_receiver,
30                        std::string ip_address,
31                        std::string local_ip_address,
32                        int port);
33
34  // Specifies the destination port and IP address.
35  void SetSendDestination(std::string ip_address, int port);
36
37  PacketSender* packet_sender();
38
39  void SetSendSidePacketLoss(int percentage);
40
41  void StopReceiving();
42
43 private:
44  scoped_ptr<net::UDPServerSocket> udp_socket_;
45  scoped_refptr<LocalPacketSender> packet_sender_;
46  scoped_refptr<LocalUdpTransportData> local_udp_transport_data_;
47  scoped_refptr<base::TaskRunner> io_thread_proxy_;
48
49  DISALLOW_COPY_AND_ASSIGN(Transport);
50};
51
52}  // namespace test
53}  // namespace cast
54}  // namespace media
55
56#endif  // MEDIA_CAST_TEST_TRANSPORT_TRANSPORT_H_
57