| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <math.h> | 5 #include <math.h> |
| 6 #include <stdlib.h> | 6 #include <stdlib.h> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "media/cast/test/utility/udp_proxy.h" | 9 #include "media/cast/test/utility/udp_proxy.h" |
| 10 | 10 |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/rand_util.h" | 12 #include "base/rand_util.h" |
| 13 #include "base/synchronization/waitable_event.h" | 13 #include "base/synchronization/waitable_event.h" |
| 14 #include "base/threading/thread.h" | 14 #include "base/threading/thread.h" |
| 15 #include "base/time/default_tick_clock.h" | 15 #include "base/time/default_tick_clock.h" |
| 16 #include "net/base/io_buffer.h" | 16 #include "net/base/io_buffer.h" |
| 17 #include "net/base/net_errors.h" | 17 #include "net/base/net_errors.h" |
| 18 #include "net/udp/udp_socket.h" | 18 #include "net/udp/udp_server_socket.h" |
| 19 | 19 |
| 20 namespace media { | 20 namespace media { |
| 21 namespace cast { | 21 namespace cast { |
| 22 namespace test { | 22 namespace test { |
| 23 | 23 |
| 24 const size_t kMaxPacketSize = 65536; | 24 const size_t kMaxPacketSize = 65536; |
| 25 | 25 |
| 26 PacketPipe::PacketPipe() {} | 26 PacketPipe::PacketPipe() {} |
| 27 PacketPipe::~PacketPipe() {} | 27 PacketPipe::~PacketPipe() {} |
| 28 void PacketPipe::InitOnIOThread( | 28 void PacketPipe::InitOnIOThread( |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 if (result == net::ERR_IO_PENDING) { | 731 if (result == net::ERR_IO_PENDING) { |
| 732 blocked_ = true; | 732 blocked_ = true; |
| 733 } else if (result < 0) { | 733 } else if (result < 0) { |
| 734 LOG(ERROR) << "Failed to write packet."; | 734 LOG(ERROR) << "Failed to write packet."; |
| 735 } | 735 } |
| 736 } | 736 } |
| 737 | 737 |
| 738 private: | 738 private: |
| 739 void Start(base::WaitableEvent* start_event, | 739 void Start(base::WaitableEvent* start_event, |
| 740 net::NetLog* net_log) { | 740 net::NetLog* net_log) { |
| 741 socket_.reset(new net::UDPSocket(net::DatagramSocket::DEFAULT_BIND, | 741 socket_.reset(new net::UDPServerSocket(net_log, net::NetLog::Source())); |
| 742 net::RandIntCallback(), | |
| 743 net_log, | |
| 744 net::NetLog::Source())); | |
| 745 BuildPipe(&to_dest_pipe_, new PacketSender(this, &destination_)); | 742 BuildPipe(&to_dest_pipe_, new PacketSender(this, &destination_)); |
| 746 BuildPipe(&from_dest_pipe_, new PacketSender(this, &return_address_)); | 743 BuildPipe(&from_dest_pipe_, new PacketSender(this, &return_address_)); |
| 747 to_dest_pipe_->InitOnIOThread(base::MessageLoopProxy::current(), | 744 to_dest_pipe_->InitOnIOThread(base::MessageLoopProxy::current(), |
| 748 &tick_clock_); | 745 &tick_clock_); |
| 749 from_dest_pipe_->InitOnIOThread(base::MessageLoopProxy::current(), | 746 from_dest_pipe_->InitOnIOThread(base::MessageLoopProxy::current(), |
| 750 &tick_clock_); | 747 &tick_clock_); |
| 751 | 748 |
| 752 VLOG(0) << "From:" << local_port_.ToString(); | 749 VLOG(0) << "From:" << local_port_.ToString(); |
| 753 if (!destination_is_mutable_) | 750 if (!destination_is_mutable_) |
| 754 VLOG(0) << "To:" << destination_.ToString(); | 751 VLOG(0) << "To:" << destination_.ToString(); |
| 755 | 752 |
| 756 CHECK_GE(socket_->Bind(local_port_), 0); | 753 CHECK_GE(socket_->Listen(local_port_), 0); |
| 757 | 754 |
| 758 start_event->Signal(); | 755 start_event->Signal(); |
| 759 PollRead(); | 756 PollRead(); |
| 760 } | 757 } |
| 761 | 758 |
| 762 void Stop(base::WaitableEvent* stop_event) { | 759 void Stop(base::WaitableEvent* stop_event) { |
| 763 to_dest_pipe_.reset(NULL); | 760 to_dest_pipe_.reset(NULL); |
| 764 from_dest_pipe_.reset(NULL); | 761 from_dest_pipe_.reset(NULL); |
| 765 socket_.reset(NULL); | 762 socket_.reset(NULL); |
| 766 stop_event->Signal(); | 763 stop_event->Signal(); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 net::IPEndPoint local_port_; | 820 net::IPEndPoint local_port_; |
| 824 | 821 |
| 825 net::IPEndPoint destination_; | 822 net::IPEndPoint destination_; |
| 826 bool destination_is_mutable_; | 823 bool destination_is_mutable_; |
| 827 | 824 |
| 828 net::IPEndPoint return_address_; | 825 net::IPEndPoint return_address_; |
| 829 bool set_destination_next_; | 826 bool set_destination_next_; |
| 830 | 827 |
| 831 base::DefaultTickClock tick_clock_; | 828 base::DefaultTickClock tick_clock_; |
| 832 base::Thread proxy_thread_; | 829 base::Thread proxy_thread_; |
| 833 scoped_ptr<net::UDPSocket> socket_; | 830 scoped_ptr<net::UDPServerSocket> socket_; |
| 834 scoped_ptr<PacketPipe> to_dest_pipe_; | 831 scoped_ptr<PacketPipe> to_dest_pipe_; |
| 835 scoped_ptr<PacketPipe> from_dest_pipe_; | 832 scoped_ptr<PacketPipe> from_dest_pipe_; |
| 836 | 833 |
| 837 // For receiving. | 834 // For receiving. |
| 838 net::IPEndPoint recv_address_; | 835 net::IPEndPoint recv_address_; |
| 839 scoped_ptr<Packet> packet_; | 836 scoped_ptr<Packet> packet_; |
| 840 | 837 |
| 841 // For sending. | 838 // For sending. |
| 842 bool blocked_; | 839 bool blocked_; |
| 843 | 840 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 858 destination, | 855 destination, |
| 859 to_dest_pipe.Pass(), | 856 to_dest_pipe.Pass(), |
| 860 from_dest_pipe.Pass(), | 857 from_dest_pipe.Pass(), |
| 861 net_log)); | 858 net_log)); |
| 862 return ret.Pass(); | 859 return ret.Pass(); |
| 863 } | 860 } |
| 864 | 861 |
| 865 } // namespace test | 862 } // namespace test |
| 866 } // namespace cast | 863 } // namespace cast |
| 867 } // namespace media | 864 } // namespace media |
| OLD | NEW |