| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "remoting/client/plugin/pepper_packet_socket_factory.h" | 5 #include "remoting/client/plugin/pepper_packet_socket_factory.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/macros.h" |
| 9 #include "net/base/io_buffer.h" | 12 #include "net/base/io_buffer.h" |
| 10 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
| 11 #include "ppapi/cpp/net_address.h" | 14 #include "ppapi/cpp/net_address.h" |
| 12 #include "ppapi/cpp/udp_socket.h" | 15 #include "ppapi/cpp/udp_socket.h" |
| 13 #include "ppapi/utility/completion_callback_factory.h" | 16 #include "ppapi/utility/completion_callback_factory.h" |
| 14 #include "remoting/client/plugin/pepper_address_resolver.h" | 17 #include "remoting/client/plugin/pepper_address_resolver.h" |
| 15 #include "remoting/client/plugin/pepper_util.h" | 18 #include "remoting/client/plugin/pepper_util.h" |
| 16 #include "remoting/protocol/socket_util.h" | 19 #include "remoting/protocol/socket_util.h" |
| 17 #include "third_party/webrtc/base/asyncpacketsocket.h" | 20 #include "third_party/webrtc/base/asyncpacketsocket.h" |
| 18 #include "third_party/webrtc/base/nethelpers.h" | 21 #include "third_party/webrtc/base/nethelpers.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 } | 87 } |
| 85 | 88 |
| 86 class UdpPacketSocket : public rtc::AsyncPacketSocket { | 89 class UdpPacketSocket : public rtc::AsyncPacketSocket { |
| 87 public: | 90 public: |
| 88 explicit UdpPacketSocket(const pp::InstanceHandle& instance); | 91 explicit UdpPacketSocket(const pp::InstanceHandle& instance); |
| 89 ~UdpPacketSocket() override; | 92 ~UdpPacketSocket() override; |
| 90 | 93 |
| 91 // |min_port| and |max_port| are set to zero if the port number | 94 // |min_port| and |max_port| are set to zero if the port number |
| 92 // should be assigned by the OS. | 95 // should be assigned by the OS. |
| 93 bool Init(const rtc::SocketAddress& local_address, | 96 bool Init(const rtc::SocketAddress& local_address, |
| 94 uint16 min_port, | 97 uint16_t min_port, |
| 95 uint16 max_port); | 98 uint16_t max_port); |
| 96 | 99 |
| 97 // rtc::AsyncPacketSocket interface. | 100 // rtc::AsyncPacketSocket interface. |
| 98 rtc::SocketAddress GetLocalAddress() const override; | 101 rtc::SocketAddress GetLocalAddress() const override; |
| 99 rtc::SocketAddress GetRemoteAddress() const override; | 102 rtc::SocketAddress GetRemoteAddress() const override; |
| 100 int Send(const void* data, | 103 int Send(const void* data, |
| 101 size_t data_size, | 104 size_t data_size, |
| 102 const rtc::PacketOptions& options) override; | 105 const rtc::PacketOptions& options) override; |
| 103 int SendTo(const void* data, | 106 int SendTo(const void* data, |
| 104 size_t data_size, | 107 size_t data_size, |
| 105 const rtc::SocketAddress& address, | 108 const rtc::SocketAddress& address, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 send_pending_(false), | 179 send_pending_(false), |
| 177 send_queue_size_(0), | 180 send_queue_size_(0), |
| 178 callback_factory_(this) { | 181 callback_factory_(this) { |
| 179 } | 182 } |
| 180 | 183 |
| 181 UdpPacketSocket::~UdpPacketSocket() { | 184 UdpPacketSocket::~UdpPacketSocket() { |
| 182 Close(); | 185 Close(); |
| 183 } | 186 } |
| 184 | 187 |
| 185 bool UdpPacketSocket::Init(const rtc::SocketAddress& local_address, | 188 bool UdpPacketSocket::Init(const rtc::SocketAddress& local_address, |
| 186 uint16 min_port, | 189 uint16_t min_port, |
| 187 uint16 max_port) { | 190 uint16_t max_port) { |
| 188 if (socket_.is_null()) { | 191 if (socket_.is_null()) { |
| 189 return false; | 192 return false; |
| 190 } | 193 } |
| 191 | 194 |
| 192 local_address_ = local_address; | 195 local_address_ = local_address; |
| 193 max_port_ = max_port; | 196 max_port_ = max_port; |
| 194 min_port_ = min_port; | 197 min_port_ = min_port; |
| 195 | 198 |
| 196 pp::NetAddress pp_local_address; | 199 pp::NetAddress pp_local_address; |
| 197 if (!SocketAddressToPpNetAddressWithPort( | 200 if (!SocketAddressToPpNetAddressWithPort( |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 | 404 |
| 402 PepperPacketSocketFactory::PepperPacketSocketFactory( | 405 PepperPacketSocketFactory::PepperPacketSocketFactory( |
| 403 const pp::InstanceHandle& instance) | 406 const pp::InstanceHandle& instance) |
| 404 : pp_instance_(instance) { | 407 : pp_instance_(instance) { |
| 405 } | 408 } |
| 406 | 409 |
| 407 PepperPacketSocketFactory::~PepperPacketSocketFactory() { | 410 PepperPacketSocketFactory::~PepperPacketSocketFactory() { |
| 408 } | 411 } |
| 409 | 412 |
| 410 rtc::AsyncPacketSocket* PepperPacketSocketFactory::CreateUdpSocket( | 413 rtc::AsyncPacketSocket* PepperPacketSocketFactory::CreateUdpSocket( |
| 411 const rtc::SocketAddress& local_address, | 414 const rtc::SocketAddress& local_address, |
| 412 uint16 min_port, | 415 uint16_t min_port, |
| 413 uint16 max_port) { | 416 uint16_t max_port) { |
| 414 scoped_ptr<UdpPacketSocket> result(new UdpPacketSocket(pp_instance_)); | 417 scoped_ptr<UdpPacketSocket> result(new UdpPacketSocket(pp_instance_)); |
| 415 if (!result->Init(local_address, min_port, max_port)) | 418 if (!result->Init(local_address, min_port, max_port)) |
| 416 return nullptr; | 419 return nullptr; |
| 417 return result.release(); | 420 return result.release(); |
| 418 } | 421 } |
| 419 | 422 |
| 420 rtc::AsyncPacketSocket* PepperPacketSocketFactory::CreateServerTcpSocket( | 423 rtc::AsyncPacketSocket* PepperPacketSocketFactory::CreateServerTcpSocket( |
| 421 const rtc::SocketAddress& local_address, | 424 const rtc::SocketAddress& local_address, |
| 422 uint16 min_port, | 425 uint16_t min_port, |
| 423 uint16 max_port, | 426 uint16_t max_port, |
| 424 int opts) { | 427 int opts) { |
| 425 // We don't use TCP sockets for remoting connections. | 428 // We don't use TCP sockets for remoting connections. |
| 426 NOTREACHED(); | 429 NOTREACHED(); |
| 427 return nullptr; | 430 return nullptr; |
| 428 } | 431 } |
| 429 | 432 |
| 430 rtc::AsyncPacketSocket* PepperPacketSocketFactory::CreateClientTcpSocket( | 433 rtc::AsyncPacketSocket* PepperPacketSocketFactory::CreateClientTcpSocket( |
| 431 const rtc::SocketAddress& local_address, | 434 const rtc::SocketAddress& local_address, |
| 432 const rtc::SocketAddress& remote_address, | 435 const rtc::SocketAddress& remote_address, |
| 433 const rtc::ProxyInfo& proxy_info, | 436 const rtc::ProxyInfo& proxy_info, |
| 434 const std::string& user_agent, | 437 const std::string& user_agent, |
| 435 int opts) { | 438 int opts) { |
| 436 // We don't use TCP sockets for remoting connections. | 439 // We don't use TCP sockets for remoting connections. |
| 437 NOTREACHED(); | 440 NOTREACHED(); |
| 438 return nullptr; | 441 return nullptr; |
| 439 } | 442 } |
| 440 | 443 |
| 441 rtc::AsyncResolverInterface* | 444 rtc::AsyncResolverInterface* |
| 442 PepperPacketSocketFactory::CreateAsyncResolver() { | 445 PepperPacketSocketFactory::CreateAsyncResolver() { |
| 443 return new PepperAddressResolver(pp_instance_); | 446 return new PepperAddressResolver(pp_instance_); |
| 444 } | 447 } |
| 445 | 448 |
| 446 } // namespace remoting | 449 } // namespace remoting |
| OLD | NEW |