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 "content/browser/renderer_host/pepper/pepper_udp_socket.h" | 5 #include "content/browser/renderer_host/pepper/pepper_udp_socket.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 } | 76 } |
77 | 77 |
78 void PepperUDPSocket::RecvFrom(int32_t num_bytes) { | 78 void PepperUDPSocket::RecvFrom(int32_t num_bytes) { |
79 if (recvfrom_buffer_.get()) { | 79 if (recvfrom_buffer_.get()) { |
80 SendRecvFromACKError(); | 80 SendRecvFromACKError(); |
81 return; | 81 return; |
82 } | 82 } |
83 | 83 |
84 recvfrom_buffer_ = new net::IOBuffer(num_bytes); | 84 recvfrom_buffer_ = new net::IOBuffer(num_bytes); |
85 int result = socket_->RecvFrom( | 85 int result = socket_->RecvFrom( |
86 recvfrom_buffer_, num_bytes, &recvfrom_address_, | 86 recvfrom_buffer_.get(), num_bytes, &recvfrom_address_, |
87 base::Bind(&PepperUDPSocket::OnRecvFromCompleted, | 87 base::Bind(&PepperUDPSocket::OnRecvFromCompleted, |
88 base::Unretained(this))); | 88 base::Unretained(this))); |
89 | 89 |
90 if (result != net::ERR_IO_PENDING) | 90 if (result != net::ERR_IO_PENDING) |
91 OnRecvFromCompleted(result); | 91 OnRecvFromCompleted(result); |
92 } | 92 } |
93 | 93 |
94 void PepperUDPSocket::SendTo(const std::string& data, | 94 void PepperUDPSocket::SendTo(const std::string& data, |
95 const PP_NetAddress_Private& addr) { | 95 const PP_NetAddress_Private& addr) { |
96 if (sendto_buffer_.get() || data.empty()) { | 96 if (sendto_buffer_.get() || data.empty()) { |
97 SendSendToACKError(); | 97 SendSendToACKError(); |
98 return; | 98 return; |
99 } | 99 } |
100 | 100 |
101 net::IPAddressNumber address; | 101 net::IPAddressNumber address; |
102 int port; | 102 int port; |
103 if (!NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &address, &port)) { | 103 if (!NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &address, &port)) { |
104 SendSendToACKError(); | 104 SendSendToACKError(); |
105 return; | 105 return; |
106 } | 106 } |
107 | 107 |
108 int data_size = data.size(); | 108 int data_size = data.size(); |
109 | 109 |
110 sendto_buffer_ = new net::IOBuffer(data_size); | 110 sendto_buffer_ = new net::IOBuffer(data_size); |
111 memcpy(sendto_buffer_->data(), data.data(), data_size); | 111 memcpy(sendto_buffer_->data(), data.data(), data_size); |
112 int result = socket_->SendTo( | 112 int result = socket_->SendTo( |
113 sendto_buffer_, data_size, net::IPEndPoint(address, port), | 113 sendto_buffer_.get(), data_size, net::IPEndPoint(address, port), |
114 base::Bind(&PepperUDPSocket::OnSendToCompleted, base::Unretained(this))); | 114 base::Bind(&PepperUDPSocket::OnSendToCompleted, base::Unretained(this))); |
115 | 115 |
116 if (result != net::ERR_IO_PENDING) | 116 if (result != net::ERR_IO_PENDING) |
117 OnSendToCompleted(result); | 117 OnSendToCompleted(result); |
118 } | 118 } |
119 | 119 |
120 void PepperUDPSocket::SendRecvFromACKError() { | 120 void PepperUDPSocket::SendRecvFromACKError() { |
121 PP_NetAddress_Private addr = NetAddressPrivateImpl::kInvalidNetAddress; | 121 PP_NetAddress_Private addr = NetAddressPrivateImpl::kInvalidNetAddress; |
122 manager_->Send(new PpapiMsg_PPBUDPSocket_RecvFromACK( | 122 manager_->Send(new PpapiMsg_PPBUDPSocket_RecvFromACK( |
123 routing_id_, plugin_dispatcher_id_, socket_id_, false, std::string(), | 123 routing_id_, plugin_dispatcher_id_, socket_id_, false, std::string(), |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 SendSendToACKError(); | 176 SendSendToACKError(); |
177 } else { | 177 } else { |
178 manager_->Send(new PpapiMsg_PPBUDPSocket_SendToACK( | 178 manager_->Send(new PpapiMsg_PPBUDPSocket_SendToACK( |
179 routing_id_, plugin_dispatcher_id_, socket_id_, true, result)); | 179 routing_id_, plugin_dispatcher_id_, socket_id_, true, result)); |
180 } | 180 } |
181 | 181 |
182 sendto_buffer_ = NULL; | 182 sendto_buffer_ = NULL; |
183 } | 183 } |
184 | 184 |
185 } // namespace content | 185 } // namespace content |
OLD | NEW |