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

Unified Diff: content/browser/renderer_host/pepper/pepper_udp_socket_private_shared.cc

Issue 11441012: PPB_UDPSocket_Private is switched to the new Pepper proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync. Created 8 years 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
Index: content/browser/renderer_host/pepper/pepper_udp_socket_private_shared.cc
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket.cc b/content/browser/renderer_host/pepper/pepper_udp_socket_private_shared.cc
similarity index 54%
copy from content/browser/renderer_host/pepper/pepper_udp_socket.cc
copy to content/browser/renderer_host/pepper/pepper_udp_socket_private_shared.cc
index b6c6d780543e3080cc6b63a5525b0f10277a8e70..ecbf6030c20ca44815d076baa3da726c9e59ab1c 100644
--- a/content/browser/renderer_host/pepper/pepper_udp_socket.cc
+++ b/content/browser/renderer_host/pepper/pepper_udp_socket_private_shared.cc
@@ -2,60 +2,67 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/renderer_host/pepper/pepper_udp_socket.h"
+#include "content/browser/renderer_host/pepper/pepper_udp_socket_private_shared.h"
#include <string.h>
#include "base/compiler_specific.h"
#include "base/logging.h"
-#include "content/browser/renderer_host/pepper/pepper_message_filter.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "net/udp/udp_server_socket.h"
-#include "ppapi/proxy/ppapi_messages.h"
+#include "ppapi/c/private/ppb_net_address_private.h"
+#include "ppapi/c/private/ppb_udp_socket_private.h"
#include "ppapi/shared_impl/private/net_address_private_impl.h"
using ppapi::NetAddressPrivateImpl;
namespace content {
-PepperUDPSocket::PepperUDPSocket(
- PepperMessageFilter* manager,
- int32 routing_id,
- uint32 plugin_dispatcher_id,
- uint32 socket_id)
- : manager_(manager),
- routing_id_(routing_id),
- plugin_dispatcher_id_(plugin_dispatcher_id),
- socket_id_(socket_id),
- allow_address_reuse_(false),
- allow_broadcast_(false) {
- DCHECK(manager);
+PepperUDPSocketPrivateShared::PepperUDPSocketPrivateShared()
+ : allow_address_reuse_(false),
+ allow_broadcast_(false),
+ closed_(false),
+ weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
-PepperUDPSocket::~PepperUDPSocket() {
+PepperUDPSocketPrivateShared::~PepperUDPSocketPrivateShared() {
// Make sure there are no further callbacks from socket_.
if (socket_.get())
socket_->Close();
}
-void PepperUDPSocket::AllowAddressReuse(bool value) {
- allow_address_reuse_ = value;
+void PepperUDPSocketPrivateShared::SetBoolSocketFeature(int32_t name,
+ bool value) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(!socket_.get());
+ DCHECK(!closed());
+
+ switch(static_cast<PP_UDPSocketFeature_Private>(name)) {
+ case PP_UDPSOCKETFEATURE_ADDRESS_REUSE:
+ allow_address_reuse_ = value;
+ break;
+ case PP_UDPSOCKETFEATURE_BROADCAST:
+ allow_broadcast_ = value;
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
}
-void PepperUDPSocket::AllowBroadcast(bool value) {
- allow_broadcast_ = value;
-}
+void PepperUDPSocketPrivateShared::Bind(const PP_NetAddress_Private& addr) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(!closed());
-void PepperUDPSocket::Bind(const PP_NetAddress_Private& addr) {
socket_.reset(new net::UDPServerSocket(NULL, net::NetLog::Source()));
net::IPAddressNumber address;
int port;
if (!socket_.get() ||
!NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &address, &port)) {
- SendBindACKError();
+ SendBindError();
return;
}
@@ -68,40 +75,48 @@ void PepperUDPSocket::Bind(const PP_NetAddress_Private& addr) {
if (result == net::OK &&
socket_->GetLocalAddress(&bound_address_) != net::OK) {
- SendBindACKError();
+ SendBindError();
return;
}
OnBindCompleted(result);
}
-void PepperUDPSocket::RecvFrom(int32_t num_bytes) {
+void PepperUDPSocketPrivateShared::RecvFrom(int32_t num_bytes) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(socket_.get());
+ DCHECK(!closed());
+
if (recvfrom_buffer_.get()) {
- SendRecvFromACKError();
+ SendRecvFromError();
return;
}
recvfrom_buffer_ = new net::IOBuffer(num_bytes);
int result = socket_->RecvFrom(
recvfrom_buffer_, num_bytes, &recvfrom_address_,
- base::Bind(&PepperUDPSocket::OnRecvFromCompleted,
- base::Unretained(this)));
+ base::Bind(&PepperUDPSocketPrivateShared::OnRecvFromCompleted,
+ weak_factory_.GetWeakPtr()));
if (result != net::ERR_IO_PENDING)
OnRecvFromCompleted(result);
}
-void PepperUDPSocket::SendTo(const std::string& data,
+void PepperUDPSocketPrivateShared::SendTo(const std::string& data,
const PP_NetAddress_Private& addr) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(socket_.get());
+ DCHECK(!closed());
+
if (sendto_buffer_.get() || data.empty()) {
- SendSendToACKError();
+ SendSendToError();
return;
}
net::IPAddressNumber address;
int port;
if (!NetAddressPrivateImpl::NetAddressToIPEndPoint(addr, &address, &port)) {
- SendSendToACKError();
+ SendSendToError();
return;
}
@@ -111,44 +126,46 @@ void PepperUDPSocket::SendTo(const std::string& data,
memcpy(sendto_buffer_->data(), data.data(), data_size);
int result = socket_->SendTo(
sendto_buffer_, data_size, net::IPEndPoint(address, port),
- base::Bind(&PepperUDPSocket::OnSendToCompleted, base::Unretained(this)));
+ base::Bind(&PepperUDPSocketPrivateShared::OnSendToCompleted,
+ weak_factory_.GetWeakPtr()));
if (result != net::ERR_IO_PENDING)
OnSendToCompleted(result);
}
-void PepperUDPSocket::SendRecvFromACKError() {
- PP_NetAddress_Private addr = NetAddressPrivateImpl::kInvalidNetAddress;
- manager_->Send(new PpapiMsg_PPBUDPSocket_RecvFromACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, false, std::string(),
- addr));
+void PepperUDPSocketPrivateShared::Close() {
+ if (socket_.get())
+ socket_->Close();
+ closed_ = true;
}
-void PepperUDPSocket::SendSendToACKError() {
- manager_->Send(new PpapiMsg_PPBUDPSocket_SendToACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, false, 0));
+void PepperUDPSocketPrivateShared::SendBindError() {
+ PP_NetAddress_Private addr = NetAddressPrivateImpl::kInvalidNetAddress;
+ SendBindReply(false, addr);
}
-void PepperUDPSocket::SendBindACKError() {
+void PepperUDPSocketPrivateShared::SendRecvFromError() {
PP_NetAddress_Private addr = NetAddressPrivateImpl::kInvalidNetAddress;
- manager_->Send(new PpapiMsg_PPBUDPSocket_BindACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, false, addr));
+ SendRecvFromReply(false, "", addr);
+}
+
+void PepperUDPSocketPrivateShared::SendSendToError() {
+ SendSendToReply(false, 0);
}
-void PepperUDPSocket::OnBindCompleted(int result) {
+void PepperUDPSocketPrivateShared::OnBindCompleted(int result) {
PP_NetAddress_Private addr = NetAddressPrivateImpl::kInvalidNetAddress;
if (result < 0 ||
!NetAddressPrivateImpl::IPEndPointToNetAddress(bound_address_.address(),
bound_address_.port(),
&addr)) {
- SendBindACKError();
+ SendBindError();
} else {
- manager_->Send(new PpapiMsg_PPBUDPSocket_BindACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, true, addr));
+ SendBindReply(true, addr);
}
}
-void PepperUDPSocket::OnRecvFromCompleted(int result) {
+void PepperUDPSocketPrivateShared::OnRecvFromCompleted(int result) {
DCHECK(recvfrom_buffer_.get());
// Convert IPEndPoint we get back from RecvFrom to a PP_NetAddress_Private,
@@ -159,25 +176,23 @@ void PepperUDPSocket::OnRecvFromCompleted(int result) {
recvfrom_address_.address(),
recvfrom_address_.port(),
&addr)) {
- SendRecvFromACKError();
+ SendRecvFromError();
} else {
- manager_->Send(new PpapiMsg_PPBUDPSocket_RecvFromACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, true,
- std::string(recvfrom_buffer_->data(), result), addr));
+ SendRecvFromReply(true,
+ std::string(recvfrom_buffer_->data(), result),
+ addr);
}
recvfrom_buffer_ = NULL;
}
-void PepperUDPSocket::OnSendToCompleted(int result) {
+void PepperUDPSocketPrivateShared::OnSendToCompleted(int result) {
DCHECK(sendto_buffer_.get());
- if (result < 0) {
- SendSendToACKError();
- } else {
- manager_->Send(new PpapiMsg_PPBUDPSocket_SendToACK(
- routing_id_, plugin_dispatcher_id_, socket_id_, true, result));
- }
+ if (result < 0)
+ SendSendToError();
+ else
+ SendSendToReply(true, result);
sendto_buffer_ = NULL;
}

Powered by Google App Engine
This is Rietveld 408576698