diff options
author | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-21 15:21:56 +0000 |
---|---|---|
committer | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-21 15:21:56 +0000 |
commit | 9e14121e3f252f278ee8d05cbb51d0e45a735603 (patch) | |
tree | d3eb50e71cf9f5a95bda1be5abeb47dc383aa6c6 /ppapi/shared_impl/private | |
parent | a69876c076c218567d4059a8a27ca63d2a1f1af2 (diff) | |
download | chromium_src-9e14121e3f252f278ee8d05cbb51d0e45a735603.zip chromium_src-9e14121e3f252f278ee8d05cbb51d0e45a735603.tar.gz chromium_src-9e14121e3f252f278ee8d05cbb51d0e45a735603.tar.bz2 |
PPB_UDPSocket_Private is switched to the new Pepper proxy.
BUG=164370
TEST=browser_tests:*UDPSocketPrivate*
Review URL: https://chromiumcodereview.appspot.com/11441012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177915 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/shared_impl/private')
-rw-r--r-- | ppapi/shared_impl/private/udp_socket_private_impl.cc | 223 | ||||
-rw-r--r-- | ppapi/shared_impl/private/udp_socket_private_impl.h | 99 |
2 files changed, 0 insertions, 322 deletions
diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/shared_impl/private/udp_socket_private_impl.cc deleted file mode 100644 index 288c38f..0000000 --- a/ppapi/shared_impl/private/udp_socket_private_impl.cc +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ppapi/shared_impl/private/udp_socket_private_impl.h" - -#include <string.h> - -#include <algorithm> - -#include "base/basictypes.h" -#include "base/bind.h" -#include "base/logging.h" -#include "base/message_loop.h" -#include "ppapi/c/pp_bool.h" -#include "ppapi/c/pp_completion_callback.h" -#include "ppapi/c/pp_errors.h" - -namespace ppapi { - -const int32_t UDPSocketPrivateImpl::kMaxReadSize = 1024 * 1024; -const int32_t UDPSocketPrivateImpl::kMaxWriteSize = 1024 * 1024; - -UDPSocketPrivateImpl::UDPSocketPrivateImpl(const HostResource& resource, - uint32 socket_id) - : Resource(OBJECT_IS_PROXY, resource) { - Init(socket_id); -} - -UDPSocketPrivateImpl::UDPSocketPrivateImpl(PP_Instance instance, - uint32 socket_id) - : Resource(OBJECT_IS_IMPL, instance) { - Init(socket_id); -} - -UDPSocketPrivateImpl::~UDPSocketPrivateImpl() { -} - -thunk::PPB_UDPSocket_Private_API* -UDPSocketPrivateImpl::AsPPB_UDPSocket_Private_API() { - return this; -} - -int32_t UDPSocketPrivateImpl::SetSocketFeature(PP_UDPSocketFeature_Private name, - PP_Var value) { - if (bound_ || closed_) - return PP_ERROR_FAILED; - - switch (name) { - case PP_UDPSOCKETFEATURE_ADDRESS_REUSE: - case PP_UDPSOCKETFEATURE_BROADCAST: - if (value.type != PP_VARTYPE_BOOL) - return PP_ERROR_BADARGUMENT; - SendBoolSocketFeature(static_cast<int32_t>(name), - PP_ToBool(value.value.as_bool)); - break; - default: - return PP_ERROR_BADARGUMENT; - } - return PP_OK; -} - -int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr, - 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; - - bind_callback_ = callback; - - // Send the request, the browser will call us back via BindACK. - SendBind(*addr); - return PP_OK_COMPLETIONPENDING; -} - -PP_Bool UDPSocketPrivateImpl::GetBoundAddress(PP_NetAddress_Private* addr) { - if (!addr || !bound_ || closed_) - return PP_FALSE; - - *addr = bound_addr_; - return PP_TRUE; -} - -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; - if (TrackedCallback::IsPending(recvfrom_callback_)) - return PP_ERROR_INPROGRESS; - - read_buffer_ = buffer; - bytes_to_read_ = std::min(num_bytes, kMaxReadSize); - recvfrom_callback_ = callback; - - // Send the request, the browser will call us back via RecvFromACK. - SendRecvFrom(bytes_to_read_); - return PP_OK_COMPLETIONPENDING; -} - -PP_Bool UDPSocketPrivateImpl::GetRecvFromAddress(PP_NetAddress_Private* addr) { - if (!addr) - return PP_FALSE; - - *addr = recvfrom_addr_; - return PP_TRUE; -} - -int32_t UDPSocketPrivateImpl::SendTo(const char* buffer, - int32_t num_bytes, - const PP_NetAddress_Private* addr, - scoped_refptr<TrackedCallback> callback) { - if (!buffer || num_bytes <= 0 || !addr) - return PP_ERROR_BADARGUMENT; - if (!bound_) - return PP_ERROR_FAILED; - if (TrackedCallback::IsPending(sendto_callback_)) - return PP_ERROR_INPROGRESS; - - if (num_bytes > kMaxWriteSize) - num_bytes = kMaxWriteSize; - - sendto_callback_ = callback; - - // Send the request, the browser will call us back via SendToACK. - SendSendTo(std::string(buffer, num_bytes), *addr); - return PP_OK_COMPLETIONPENDING; -} - -void UDPSocketPrivateImpl::Close() { - if(closed_) - return; - - bound_ = false; - closed_ = true; - - SendClose(); - - socket_id_ = 0; - - PostAbortIfNecessary(&bind_callback_); - PostAbortIfNecessary(&recvfrom_callback_); - PostAbortIfNecessary(&sendto_callback_); -} - -void UDPSocketPrivateImpl::OnBindCompleted( - bool succeeded, - const PP_NetAddress_Private& addr) { - if (!TrackedCallback::IsPending(bind_callback_)) { - NOTREACHED(); - return; - } - - if (succeeded) - bound_ = true; - - bound_addr_ = addr; - - bind_callback_->Run(succeeded ? PP_OK : PP_ERROR_FAILED); -} - -void UDPSocketPrivateImpl::OnRecvFromCompleted( - bool succeeded, - const std::string& data, - const PP_NetAddress_Private& addr) { - if (!TrackedCallback::IsPending(recvfrom_callback_) || !read_buffer_) { - NOTREACHED(); - return; - } - - if (succeeded) { - CHECK_LE(static_cast<int32_t>(data.size()), bytes_to_read_); - if (!data.empty()) - memcpy(read_buffer_, data.c_str(), data.size()); - } - read_buffer_ = NULL; - bytes_to_read_ = -1; - recvfrom_addr_ = addr; - - recvfrom_callback_->Run(succeeded ? static_cast<int32_t>(data.size()) : - static_cast<int32_t>(PP_ERROR_FAILED)); -} - -void UDPSocketPrivateImpl::OnSendToCompleted(bool succeeded, - int32_t bytes_written) { - if (!TrackedCallback::IsPending(sendto_callback_)) { - NOTREACHED(); - return; - } - - sendto_callback_->Run( - succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); -} - -void UDPSocketPrivateImpl::Init(uint32 socket_id) { - DCHECK(socket_id != 0); - socket_id_ = socket_id; - bound_ = false; - closed_ = false; - read_buffer_ = NULL; - bytes_to_read_ = -1; - - recvfrom_addr_.size = 0; - memset(recvfrom_addr_.data, 0, - arraysize(recvfrom_addr_.data) * sizeof(*recvfrom_addr_.data)); - bound_addr_.size = 0; - memset(bound_addr_.data, 0, - arraysize(bound_addr_.data) * sizeof(*bound_addr_.data)); -} - -void UDPSocketPrivateImpl::PostAbortIfNecessary( - scoped_refptr<TrackedCallback>* callback) { - if (TrackedCallback::IsPending(*callback)) - (*callback)->PostAbort(); -} - -} // namespace ppapi diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.h b/ppapi/shared_impl/private/udp_socket_private_impl.h deleted file mode 100644 index e8e3cb2..0000000 --- a/ppapi/shared_impl/private/udp_socket_private_impl.h +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PPAPI_SHARED_IMPL_PRIVATE_UDP_SOCKET_PRIVATE_IMPL_H_ -#define PPAPI_SHARED_IMPL_PRIVATE_UDP_SOCKET_PRIVATE_IMPL_H_ - -#include <string> - -#include "base/compiler_specific.h" -#include "ppapi/shared_impl/resource.h" -#include "ppapi/shared_impl/tracked_callback.h" -#include "ppapi/thunk/ppb_udp_socket_private_api.h" - -namespace ppapi { - -// This class provides the shared implementation of a -// PPB_UDPSocket_Private. The functions that actually send messages -// to browser are implemented differently for the proxied and -// non-proxied derived classes. -class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl - : public thunk::PPB_UDPSocket_Private_API, - public Resource { - public: - // C-tor used in Impl case. - UDPSocketPrivateImpl(PP_Instance instance, uint32 socket_id); - // C-tor used in Proxy case. - UDPSocketPrivateImpl(const HostResource& resource, uint32 socket_id); - - virtual ~UDPSocketPrivateImpl(); - - // The maximum number of bytes that each PpapiHostMsg_PPBUDPSocket_RecvFrom - // message is allowed to request. - static const int32_t kMaxReadSize; - // The maximum number of bytes that each PpapiHostMsg_PPBUDPSocket_SendTo - // message is allowed to carry. - static const int32_t kMaxWriteSize; - - // Resource overrides. - virtual PPB_UDPSocket_Private_API* AsPPB_UDPSocket_Private_API() OVERRIDE; - - // PPB_UDPSocket_Private_API implementation. - virtual int32_t SetSocketFeature(PP_UDPSocketFeature_Private name, - PP_Var value) OVERRIDE; - virtual int32_t Bind(const PP_NetAddress_Private* addr, - scoped_refptr<TrackedCallback> callback) OVERRIDE; - virtual PP_Bool GetBoundAddress(PP_NetAddress_Private* addr) OVERRIDE; - virtual int32_t RecvFrom(char* buffer, - int32_t num_bytes, - scoped_refptr<TrackedCallback> callback) OVERRIDE; - virtual PP_Bool GetRecvFromAddress(PP_NetAddress_Private* addr) OVERRIDE; - virtual int32_t SendTo(const char* buffer, - int32_t num_bytes, - const PP_NetAddress_Private* addr, - scoped_refptr<TrackedCallback> callback) OVERRIDE; - virtual void Close() OVERRIDE; - - // Notifications from the proxy. - void OnBindCompleted(bool succeeded, - const PP_NetAddress_Private& bound_addr); - void OnRecvFromCompleted(bool succeeded, - const std::string& data, - const PP_NetAddress_Private& addr); - void OnSendToCompleted(bool succeeded, int32_t bytes_written); - - // Send functions that need to be implemented differently for - // the proxied and non-proxied derived classes. - virtual void SendBoolSocketFeature(int32_t name, bool value) = 0; - virtual void SendBind(const PP_NetAddress_Private& addr) = 0; - virtual void SendRecvFrom(int32_t num_bytes) = 0; - virtual void SendSendTo(const std::string& buffer, - const PP_NetAddress_Private& addr) = 0; - virtual void SendClose() = 0; - - protected: - void Init(uint32 socket_id); - void PostAbortIfNecessary(scoped_refptr<TrackedCallback>* callback); - - uint32 socket_id_; - - bool bound_; - bool closed_; - - scoped_refptr<TrackedCallback> bind_callback_; - scoped_refptr<TrackedCallback> recvfrom_callback_; - scoped_refptr<TrackedCallback> sendto_callback_; - - char* read_buffer_; - int32_t bytes_to_read_; - - PP_NetAddress_Private recvfrom_addr_; - PP_NetAddress_Private bound_addr_; - - DISALLOW_COPY_AND_ASSIGN(UDPSocketPrivateImpl); -}; - -} // namespace ppapi - -#endif // PPAPI_SHARED_IMPL_PRIVATE_UDP_SOCKET_PRIVATE_IMPL_H_ |