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

Unified Diff: ppapi/cpp/tcp_socket.cc

Issue 24195004: PPB_TCPSocket: add support for TCP server socket operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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/cpp/tcp_socket.h ('k') | ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/cpp/tcp_socket.cc
diff --git a/ppapi/cpp/tcp_socket.cc b/ppapi/cpp/tcp_socket.cc
index f0002fa5545462f31f6fc97b7a98517459b220bf..ab08ff3626c66b36da23094ca5305ed286468177 100644
--- a/ppapi/cpp/tcp_socket.cc
+++ b/ppapi/cpp/tcp_socket.cc
@@ -17,13 +17,20 @@ template <> const char* interface_name<PPB_TCPSocket_1_0>() {
return PPB_TCPSOCKET_INTERFACE_1_0;
}
+template <> const char* interface_name<PPB_TCPSocket_1_1>() {
+ return PPB_TCPSOCKET_INTERFACE_1_1;
+}
+
} // namespace
TCPSocket::TCPSocket() {
}
TCPSocket::TCPSocket(const InstanceHandle& instance) {
- if (has_interface<PPB_TCPSocket_1_0>()) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ PassRefFromConstructor(get_interface<PPB_TCPSocket_1_1>()->Create(
+ instance.pp_instance()));
+ } else if (has_interface<PPB_TCPSocket_1_0>()) {
PassRefFromConstructor(get_interface<PPB_TCPSocket_1_0>()->Create(
instance.pp_instance()));
}
@@ -46,11 +53,25 @@ TCPSocket& TCPSocket::operator=(const TCPSocket& other) {
// static
bool TCPSocket::IsAvailable() {
- return has_interface<PPB_TCPSocket_1_0>();
+ return has_interface<PPB_TCPSocket_1_1>() ||
+ has_interface<PPB_TCPSocket_1_0>();
+}
+
+int32_t TCPSocket::Bind(const NetAddress& addr,
+ const CompletionCallback& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->Bind(
+ pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
+ }
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
}
int32_t TCPSocket::Connect(const NetAddress& addr,
const CompletionCallback& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->Connect(
+ pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
+ }
if (has_interface<PPB_TCPSocket_1_0>()) {
return get_interface<PPB_TCPSocket_1_0>()->Connect(
pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
@@ -59,6 +80,11 @@ int32_t TCPSocket::Connect(const NetAddress& addr,
}
NetAddress TCPSocket::GetLocalAddress() const {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return NetAddress(
+ PASS_REF,
+ get_interface<PPB_TCPSocket_1_1>()->GetLocalAddress(pp_resource()));
+ }
if (has_interface<PPB_TCPSocket_1_0>()) {
return NetAddress(
PASS_REF,
@@ -68,6 +94,11 @@ NetAddress TCPSocket::GetLocalAddress() const {
}
NetAddress TCPSocket::GetRemoteAddress() const {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return NetAddress(
+ PASS_REF,
+ get_interface<PPB_TCPSocket_1_1>()->GetRemoteAddress(pp_resource()));
+ }
if (has_interface<PPB_TCPSocket_1_0>()) {
return NetAddress(
PASS_REF,
@@ -79,6 +110,11 @@ NetAddress TCPSocket::GetRemoteAddress() const {
int32_t TCPSocket::Read(char* buffer,
int32_t bytes_to_read,
const CompletionCallback& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->Read(
+ pp_resource(), buffer, bytes_to_read,
+ callback.pp_completion_callback());
+ }
if (has_interface<PPB_TCPSocket_1_0>()) {
return get_interface<PPB_TCPSocket_1_0>()->Read(
pp_resource(), buffer, bytes_to_read,
@@ -90,6 +126,11 @@ int32_t TCPSocket::Read(char* buffer,
int32_t TCPSocket::Write(const char* buffer,
int32_t bytes_to_write,
const CompletionCallback& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->Write(
+ pp_resource(), buffer, bytes_to_write,
+ callback.pp_completion_callback());
+ }
if (has_interface<PPB_TCPSocket_1_0>()) {
return get_interface<PPB_TCPSocket_1_0>()->Write(
pp_resource(), buffer, bytes_to_write,
@@ -98,14 +139,39 @@ int32_t TCPSocket::Write(const char* buffer,
return callback.MayForce(PP_ERROR_NOINTERFACE);
}
+int32_t TCPSocket::Listen(int32_t backlog,
+ const CompletionCallback& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->Listen(
+ pp_resource(), backlog, callback.pp_completion_callback());
+ }
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
+}
+
+int32_t TCPSocket::Accept(
+ const CompletionCallbackWithOutput<TCPSocket>& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->Accept(
+ pp_resource(), callback.output(), callback.pp_completion_callback());
+ }
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
+}
+
void TCPSocket::Close() {
- if (has_interface<PPB_TCPSocket_1_0>())
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ get_interface<PPB_TCPSocket_1_1>()->Close(pp_resource());
+ } else if (has_interface<PPB_TCPSocket_1_0>()) {
get_interface<PPB_TCPSocket_1_0>()->Close(pp_resource());
+ }
}
int32_t TCPSocket::SetOption(PP_TCPSocket_Option name,
const Var& value,
const CompletionCallback& callback) {
+ if (has_interface<PPB_TCPSocket_1_1>()) {
+ return get_interface<PPB_TCPSocket_1_1>()->SetOption(
+ pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
+ }
if (has_interface<PPB_TCPSocket_1_0>()) {
return get_interface<PPB_TCPSocket_1_0>()->SetOption(
pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
« no previous file with comments | « ppapi/cpp/tcp_socket.h ('k') | ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698