| Index: ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| index 3879b68b26d1db5ac63dacc3b5169ff6c5214cc9..9b509e1f307cf8daf413908e531a4a7b27012ce3 100644
|
| --- a/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| +++ b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| @@ -41,17 +41,15 @@ UDPSocketPrivateImpl::AsPPB_UDPSocket_Private_API() {
|
| }
|
|
|
| int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr,
|
| - PP_CompletionCallback callback) {
|
| - if (!addr || !callback.func)
|
| + scoped_refptr<TrackedCallback> callback) {
|
| + if (!addr)
|
| return PP_ERROR_BADARGUMENT;
|
| if (bound_ || closed_)
|
| return PP_ERROR_FAILED;
|
| if (TrackedCallback::IsPending(bind_callback_))
|
| return PP_ERROR_INPROGRESS;
|
| - // TODO(dmichael): use some other strategy for determining if an
|
| - // operation is in progress
|
|
|
| - bind_callback_ = new TrackedCallback(this, callback);
|
| + bind_callback_ = callback;
|
|
|
| // Send the request, the browser will call us back via BindACK.
|
| SendBind(*addr);
|
| @@ -66,10 +64,11 @@ PP_Bool UDPSocketPrivateImpl::GetBoundAddress(PP_NetAddress_Private* addr) {
|
| return PP_TRUE;
|
| }
|
|
|
| -int32_t UDPSocketPrivateImpl::RecvFrom(char* buffer,
|
| - int32_t num_bytes,
|
| - PP_CompletionCallback callback) {
|
| - if (!buffer || num_bytes <= 0 || !callback.func)
|
| +int32_t UDPSocketPrivateImpl::RecvFrom(
|
| + char* buffer,
|
| + int32_t num_bytes,
|
| + scoped_refptr<TrackedCallback> callback) {
|
| + if (!buffer || num_bytes <= 0)
|
| return PP_ERROR_BADARGUMENT;
|
| if (!bound_)
|
| return PP_ERROR_FAILED;
|
| @@ -78,7 +77,7 @@ int32_t UDPSocketPrivateImpl::RecvFrom(char* buffer,
|
|
|
| read_buffer_ = buffer;
|
| bytes_to_read_ = std::min(num_bytes, kMaxReadSize);
|
| - recvfrom_callback_ = new TrackedCallback(this, callback);
|
| + recvfrom_callback_ = callback;
|
|
|
| // Send the request, the browser will call us back via RecvFromACK.
|
| SendRecvFrom(bytes_to_read_);
|
| @@ -96,8 +95,8 @@ PP_Bool UDPSocketPrivateImpl::GetRecvFromAddress(PP_NetAddress_Private* addr) {
|
| int32_t UDPSocketPrivateImpl::SendTo(const char* buffer,
|
| int32_t num_bytes,
|
| const PP_NetAddress_Private* addr,
|
| - PP_CompletionCallback callback) {
|
| - if (!buffer || num_bytes <= 0 || !addr || !callback.func)
|
| + scoped_refptr<TrackedCallback> callback) {
|
| + if (!buffer || num_bytes <= 0 || !addr)
|
| return PP_ERROR_BADARGUMENT;
|
| if (!bound_)
|
| return PP_ERROR_FAILED;
|
| @@ -107,7 +106,7 @@ int32_t UDPSocketPrivateImpl::SendTo(const char* buffer,
|
| if (num_bytes > kMaxWriteSize)
|
| num_bytes = kMaxWriteSize;
|
|
|
| - sendto_callback_ = new TrackedCallback(this, callback);
|
| + sendto_callback_ = callback;
|
|
|
| // Send the request, the browser will call us back via SendToACK.
|
| SendSendTo(std::string(buffer, num_bytes), *addr);
|
|
|