Index: ppapi/shared_impl/private/tcp_socket_private_impl.cc |
diff --git a/ppapi/shared_impl/private/tcp_socket_private_impl.cc b/ppapi/shared_impl/private/tcp_socket_private_impl.cc |
index e2c645f0ae5a1d20cb14c301362fe80e7979dec6..7079738427f4973fd27b4beb76b64f1569e91f54 100644 |
--- a/ppapi/shared_impl/private/tcp_socket_private_impl.cc |
+++ b/ppapi/shared_impl/private/tcp_socket_private_impl.cc |
@@ -212,11 +212,32 @@ void TCPSocketPrivateImpl::Disconnect() { |
PostAbortIfNecessary(&ssl_handshake_callback_); |
PostAbortIfNecessary(&read_callback_); |
PostAbortIfNecessary(&write_callback_); |
+ PostAbortIfNecessary(&set_feature_callback_); |
read_buffer_ = NULL; |
bytes_to_read_ = -1; |
server_certificate_ = NULL; |
} |
+int32_t TCPSocketPrivateImpl::SetSocketFeature( |
+ PP_TCPSocketFeature_Private name, struct PP_Var value, |
+ scoped_refptr<TrackedCallback> callback) { |
+ if (TrackedCallback::IsPending(set_feature_callback_)) |
+ return PP_ERROR_INPROGRESS; |
+ |
+ set_feature_callback_ = callback; |
+ |
+ switch (name) { |
+ case PP_TCPSOCKETFEATURE_NO_DELAY: |
yzshen1
2013/02/08 21:51:11
wrong indent.
Wez
2013/02/10 04:47:02
Done.
|
+ if (value.type != PP_VARTYPE_BOOL) |
+ return PP_ERROR_BADARGUMENT; |
+ SendBoolSocketFeature(static_cast<int32_t>(name), |
+ PP_ToBool(value.value.as_bool)); |
+ return PP_OK_COMPLETIONPENDING; |
+ default: |
+ return PP_ERROR_BADARGUMENT; |
+ } |
+} |
+ |
void TCPSocketPrivateImpl::OnConnectCompleted( |
bool succeeded, |
const PP_NetAddress_Private& local_addr, |
@@ -293,6 +314,15 @@ void TCPSocketPrivateImpl::OnWriteCompleted(bool succeeded, |
succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); |
} |
+void TCPSocketPrivateImpl::OnSetSocketFeatureCompleted(bool succeeded) { |
+ if (!TrackedCallback::IsPending(set_feature_callback_)) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ set_feature_callback_->Run(succeeded ? PP_OK : PP_ERROR_FAILED); |
+} |
+ |
void TCPSocketPrivateImpl::Init(uint32 socket_id) { |
DCHECK(socket_id != 0); |
socket_id_ = socket_id; |