Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(535)

Unified Diff: ppapi/shared_impl/private/udp_socket_private_impl.cc

Issue 10081020: PPAPI: Make blocking completion callbacks work. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: export AssertLockHeld Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/shared_impl/private/udp_socket_private_impl.h ('k') | ppapi/shared_impl/proxy_lock.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « ppapi/shared_impl/private/udp_socket_private_impl.h ('k') | ppapi/shared_impl/proxy_lock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698