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 "ppapi/shared_impl/private/tcp_socket_private_impl.h" | 5 #include "ppapi/shared_impl/private/tcp_socket_private_impl.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
205 | 205 |
206 connection_state_ = DISCONNECTED; | 206 connection_state_ = DISCONNECTED; |
207 | 207 |
208 SendDisconnect(); | 208 SendDisconnect(); |
209 socket_id_ = 0; | 209 socket_id_ = 0; |
210 | 210 |
211 PostAbortIfNecessary(&connect_callback_); | 211 PostAbortIfNecessary(&connect_callback_); |
212 PostAbortIfNecessary(&ssl_handshake_callback_); | 212 PostAbortIfNecessary(&ssl_handshake_callback_); |
213 PostAbortIfNecessary(&read_callback_); | 213 PostAbortIfNecessary(&read_callback_); |
214 PostAbortIfNecessary(&write_callback_); | 214 PostAbortIfNecessary(&write_callback_); |
215 PostAbortIfNecessary(&set_feature_callback_); | |
215 read_buffer_ = NULL; | 216 read_buffer_ = NULL; |
216 bytes_to_read_ = -1; | 217 bytes_to_read_ = -1; |
217 server_certificate_ = NULL; | 218 server_certificate_ = NULL; |
218 } | 219 } |
219 | 220 |
221 int32_t TCPSocketPrivateImpl::SetSocketFeature( | |
222 PP_TCPSocketFeature_Private name, struct PP_Var value, | |
223 scoped_refptr<TrackedCallback> callback) { | |
224 if (TrackedCallback::IsPending(set_feature_callback_)) | |
225 return PP_ERROR_INPROGRESS; | |
226 | |
227 set_feature_callback_ = callback; | |
228 | |
229 switch (name) { | |
230 case PP_TCPSOCKETFEATURE_NO_DELAY: | |
yzshen1
2013/02/08 21:51:11
wrong indent.
Wez
2013/02/10 04:47:02
Done.
| |
231 if (value.type != PP_VARTYPE_BOOL) | |
232 return PP_ERROR_BADARGUMENT; | |
233 SendBoolSocketFeature(static_cast<int32_t>(name), | |
234 PP_ToBool(value.value.as_bool)); | |
235 return PP_OK_COMPLETIONPENDING; | |
236 default: | |
237 return PP_ERROR_BADARGUMENT; | |
238 } | |
239 } | |
240 | |
220 void TCPSocketPrivateImpl::OnConnectCompleted( | 241 void TCPSocketPrivateImpl::OnConnectCompleted( |
221 bool succeeded, | 242 bool succeeded, |
222 const PP_NetAddress_Private& local_addr, | 243 const PP_NetAddress_Private& local_addr, |
223 const PP_NetAddress_Private& remote_addr) { | 244 const PP_NetAddress_Private& remote_addr) { |
224 if (connection_state_ != BEFORE_CONNECT || | 245 if (connection_state_ != BEFORE_CONNECT || |
225 !TrackedCallback::IsPending(connect_callback_)) { | 246 !TrackedCallback::IsPending(connect_callback_)) { |
226 NOTREACHED(); | 247 NOTREACHED(); |
227 return; | 248 return; |
228 } | 249 } |
229 | 250 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
286 if (!TrackedCallback::IsPending(write_callback_) || | 307 if (!TrackedCallback::IsPending(write_callback_) || |
287 (succeeded && bytes_written < 0)) { | 308 (succeeded && bytes_written < 0)) { |
288 NOTREACHED(); | 309 NOTREACHED(); |
289 return; | 310 return; |
290 } | 311 } |
291 | 312 |
292 write_callback_->Run( | 313 write_callback_->Run( |
293 succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); | 314 succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); |
294 } | 315 } |
295 | 316 |
317 void TCPSocketPrivateImpl::OnSetSocketFeatureCompleted(bool succeeded) { | |
318 if (!TrackedCallback::IsPending(set_feature_callback_)) { | |
319 NOTREACHED(); | |
320 return; | |
321 } | |
322 | |
323 set_feature_callback_->Run(succeeded ? PP_OK : PP_ERROR_FAILED); | |
324 } | |
325 | |
296 void TCPSocketPrivateImpl::Init(uint32 socket_id) { | 326 void TCPSocketPrivateImpl::Init(uint32 socket_id) { |
297 DCHECK(socket_id != 0); | 327 DCHECK(socket_id != 0); |
298 socket_id_ = socket_id; | 328 socket_id_ = socket_id; |
299 connection_state_ = BEFORE_CONNECT; | 329 connection_state_ = BEFORE_CONNECT; |
300 read_buffer_ = NULL; | 330 read_buffer_ = NULL; |
301 bytes_to_read_ = -1; | 331 bytes_to_read_ = -1; |
302 | 332 |
303 local_addr_.size = 0; | 333 local_addr_.size = 0; |
304 memset(local_addr_.data, 0, | 334 memset(local_addr_.data, 0, |
305 arraysize(local_addr_.data) * sizeof(*local_addr_.data)); | 335 arraysize(local_addr_.data) * sizeof(*local_addr_.data)); |
306 remote_addr_.size = 0; | 336 remote_addr_.size = 0; |
307 memset(remote_addr_.data, 0, | 337 memset(remote_addr_.data, 0, |
308 arraysize(remote_addr_.data) * sizeof(*remote_addr_.data)); | 338 arraysize(remote_addr_.data) * sizeof(*remote_addr_.data)); |
309 } | 339 } |
310 | 340 |
311 bool TCPSocketPrivateImpl::IsConnected() const { | 341 bool TCPSocketPrivateImpl::IsConnected() const { |
312 return connection_state_ == CONNECTED || connection_state_ == SSL_CONNECTED; | 342 return connection_state_ == CONNECTED || connection_state_ == SSL_CONNECTED; |
313 } | 343 } |
314 | 344 |
315 void TCPSocketPrivateImpl::PostAbortIfNecessary( | 345 void TCPSocketPrivateImpl::PostAbortIfNecessary( |
316 scoped_refptr<TrackedCallback>* callback) { | 346 scoped_refptr<TrackedCallback>* callback) { |
317 if (TrackedCallback::IsPending(*callback)) | 347 if (TrackedCallback::IsPending(*callback)) |
318 (*callback)->PostAbort(); | 348 (*callback)->PostAbort(); |
319 } | 349 } |
320 | 350 |
321 } // namespace ppapi | 351 } // namespace ppapi |
OLD | NEW |