| Index: ppapi/cpp/tcp_socket.cc
|
| diff --git a/ppapi/cpp/tcp_socket.cc b/ppapi/cpp/tcp_socket.cc
|
| index f0002fa5545462f31f6fc97b7a98517459b220bf..892b2564143a0bfe10a311f1eadd312af36710ef 100644
|
| --- a/ppapi/cpp/tcp_socket.cc
|
| +++ b/ppapi/cpp/tcp_socket.cc
|
| @@ -17,13 +17,21 @@ 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>()) {
|
| +TCPSocket::TCPSocket(const InstanceHandle& instance,
|
| + PP_NetAddress_Family family) {
|
| + if (has_interface<PPB_TCPSocket_1_1>()) {
|
| + PassRefFromConstructor(get_interface<PPB_TCPSocket_1_1>()->Create(
|
| + instance.pp_instance(), family));
|
| + } else if (has_interface<PPB_TCPSocket_1_0>()) {
|
| PassRefFromConstructor(get_interface<PPB_TCPSocket_1_0>()->Create(
|
| instance.pp_instance()));
|
| }
|
| @@ -46,11 +54,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 +81,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 +95,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 +111,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 +127,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 +140,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());
|
|
|