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

Side by Side Diff: ppapi/cpp/private/tcp_socket_private.cc

Issue 12220050: Provide a way to disable Nagle's algorithm on Pepper TCP sockets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add missing completion callback implementation. Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/cpp/private/tcp_socket_private.h" 5 #include "ppapi/cpp/private/tcp_socket_private.h"
6 6
7 #include "ppapi/c/pp_bool.h" 7 #include "ppapi/c/pp_bool.h"
8 #include "ppapi/c/pp_errors.h" 8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/completion_callback.h" 9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/instance_handle.h" 10 #include "ppapi/cpp/instance_handle.h"
11 #include "ppapi/cpp/module.h" 11 #include "ppapi/cpp/module.h"
12 #include "ppapi/cpp/module_impl.h" 12 #include "ppapi/cpp/module_impl.h"
13 13
14 namespace pp { 14 namespace pp {
15 15
16 namespace { 16 namespace {
17 17
18 template <> const char* interface_name<PPB_TCPSocket_Private_0_5>() {
19 return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_5;
20 }
21
18 template <> const char* interface_name<PPB_TCPSocket_Private_0_4>() { 22 template <> const char* interface_name<PPB_TCPSocket_Private_0_4>() {
19 return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_4; 23 return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_4;
20 } 24 }
21 25
22 template <> const char* interface_name<PPB_TCPSocket_Private_0_3>() { 26 template <> const char* interface_name<PPB_TCPSocket_Private_0_3>() {
23 return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_3; 27 return PPB_TCPSOCKET_PRIVATE_INTERFACE_0_3;
24 } 28 }
25 29
26 } // namespace 30 } // namespace
27 31
28 TCPSocketPrivate::TCPSocketPrivate(const InstanceHandle& instance) { 32 TCPSocketPrivate::TCPSocketPrivate(const InstanceHandle& instance) {
29 if (has_interface<PPB_TCPSocket_Private_0_4>()) { 33 if (has_interface<PPB_TCPSocket_Private_0_5>()) {
34 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private_0_5>()->Create(
35 instance.pp_instance()));
36 } else if (has_interface<PPB_TCPSocket_Private_0_4>()) {
30 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private_0_4>()->Create( 37 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private_0_4>()->Create(
31 instance.pp_instance())); 38 instance.pp_instance()));
32 } else if (has_interface<PPB_TCPSocket_Private_0_3>()) { 39 } else if (has_interface<PPB_TCPSocket_Private_0_3>()) {
33 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private_0_3>()->Create( 40 PassRefFromConstructor(get_interface<PPB_TCPSocket_Private_0_3>()->Create(
34 instance.pp_instance())); 41 instance.pp_instance()));
35 } 42 }
36 } 43 }
37 44
38 TCPSocketPrivate::TCPSocketPrivate(PassRef, PP_Resource resource) 45 TCPSocketPrivate::TCPSocketPrivate(PassRef, PP_Resource resource)
39 : Resource(PASS_REF, resource) { 46 : Resource(PASS_REF, resource) {
40 } 47 }
41 48
42 // static 49 // static
43 bool TCPSocketPrivate::IsAvailable() { 50 bool TCPSocketPrivate::IsAvailable() {
44 return has_interface<PPB_TCPSocket_Private_0_4>() || 51 return has_interface<PPB_TCPSocket_Private_0_5>() ||
52 has_interface<PPB_TCPSocket_Private_0_4>() ||
45 has_interface<PPB_TCPSocket_Private_0_3>(); 53 has_interface<PPB_TCPSocket_Private_0_3>();
46 } 54 }
47 55
48 int32_t TCPSocketPrivate::Connect(const char* host, 56 int32_t TCPSocketPrivate::Connect(const char* host,
49 uint16_t port, 57 uint16_t port,
50 const CompletionCallback& callback) { 58 const CompletionCallback& callback) {
51 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
yzshen1 2013/02/08 21:51:11 I am not sure whether we want to make this change.
Wez 2013/02/10 04:47:02 This change was suggested by dmichael@ - let's dis
yzshen1 2013/02/12 17:39:58 Sounds good. On 2013/02/10 04:47:02, Wez wrote:
52 return get_interface<PPB_TCPSocket_Private_0_4>()->Connect(
53 pp_resource(), host, port, callback.pp_completion_callback());
54 }
55 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 59 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
56 return get_interface<PPB_TCPSocket_Private_0_3>()->Connect( 60 return get_interface<PPB_TCPSocket_Private_0_3>()->Connect(
57 pp_resource(), host, port, callback.pp_completion_callback()); 61 pp_resource(), host, port, callback.pp_completion_callback());
58 } 62 }
59 return callback.MayForce(PP_ERROR_NOINTERFACE); 63 return callback.MayForce(PP_ERROR_NOINTERFACE);
60 } 64 }
61 65
62 int32_t TCPSocketPrivate::ConnectWithNetAddress( 66 int32_t TCPSocketPrivate::ConnectWithNetAddress(
63 const PP_NetAddress_Private* addr, 67 const PP_NetAddress_Private* addr,
64 const CompletionCallback& callback) { 68 const CompletionCallback& callback) {
65 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
66 return get_interface<PPB_TCPSocket_Private_0_4>()->ConnectWithNetAddress(
67 pp_resource(), addr, callback.pp_completion_callback());
68 }
69 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 69 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
70 return get_interface<PPB_TCPSocket_Private_0_3>()->ConnectWithNetAddress( 70 return get_interface<PPB_TCPSocket_Private_0_3>()->ConnectWithNetAddress(
71 pp_resource(), addr, callback.pp_completion_callback()); 71 pp_resource(), addr, callback.pp_completion_callback());
72 } 72 }
73 return callback.MayForce(PP_ERROR_NOINTERFACE); 73 return callback.MayForce(PP_ERROR_NOINTERFACE);
74 } 74 }
75 75
76 bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) { 76 bool TCPSocketPrivate::GetLocalAddress(PP_NetAddress_Private* local_addr) {
77 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
78 PP_Bool result = get_interface<PPB_TCPSocket_Private_0_4>()->
79 GetLocalAddress(pp_resource(), local_addr);
80 return PP_ToBool(result);
81 }
82 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 77 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
83 PP_Bool result = get_interface<PPB_TCPSocket_Private_0_3>()-> 78 PP_Bool result = get_interface<PPB_TCPSocket_Private_0_3>()->
84 GetLocalAddress(pp_resource(), local_addr); 79 GetLocalAddress(pp_resource(), local_addr);
85 return PP_ToBool(result); 80 return PP_ToBool(result);
86 } 81 }
87 return false; 82 return false;
88 } 83 }
89 84
90 bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) { 85 bool TCPSocketPrivate::GetRemoteAddress(PP_NetAddress_Private* remote_addr) {
91 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
92 PP_Bool result = get_interface<PPB_TCPSocket_Private_0_4>()->
93 GetRemoteAddress(pp_resource(), remote_addr);
94 return PP_ToBool(result);
95 }
96 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 86 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
97 PP_Bool result = get_interface<PPB_TCPSocket_Private_0_3>()-> 87 PP_Bool result = get_interface<PPB_TCPSocket_Private_0_3>()->
98 GetRemoteAddress(pp_resource(), remote_addr); 88 GetRemoteAddress(pp_resource(), remote_addr);
99 return PP_ToBool(result); 89 return PP_ToBool(result);
100 } 90 }
101 return false; 91 return false;
102 } 92 }
103 93
104 int32_t TCPSocketPrivate::SSLHandshake(const char* server_name, 94 int32_t TCPSocketPrivate::SSLHandshake(const char* server_name,
105 uint16_t server_port, 95 uint16_t server_port,
106 const CompletionCallback& callback) { 96 const CompletionCallback& callback) {
107 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
108 return get_interface<PPB_TCPSocket_Private_0_4>()->SSLHandshake(
109 pp_resource(), server_name, server_port,
110 callback.pp_completion_callback());
111 }
112 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 97 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
113 return get_interface<PPB_TCPSocket_Private_0_3>()->SSLHandshake( 98 return get_interface<PPB_TCPSocket_Private_0_3>()->SSLHandshake(
114 pp_resource(), server_name, server_port, 99 pp_resource(), server_name, server_port,
115 callback.pp_completion_callback()); 100 callback.pp_completion_callback());
116 } 101 }
117 return callback.MayForce(PP_ERROR_NOINTERFACE); 102 return callback.MayForce(PP_ERROR_NOINTERFACE);
118 } 103 }
119 104
120 X509CertificatePrivate TCPSocketPrivate::GetServerCertificate() { 105 X509CertificatePrivate TCPSocketPrivate::GetServerCertificate() {
121 if (has_interface<PPB_TCPSocket_Private_0_4>()) { 106 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
(...skipping 11 matching lines...) Expand all
133 return PP_ToBool(get_interface<PPB_TCPSocket_Private_0_4>()-> 118 return PP_ToBool(get_interface<PPB_TCPSocket_Private_0_4>()->
134 AddChainBuildingCertificate(pp_resource(), cert.pp_resource(), 119 AddChainBuildingCertificate(pp_resource(), cert.pp_resource(),
135 PP_FromBool(trusted))); 120 PP_FromBool(trusted)));
136 } 121 }
137 return false; 122 return false;
138 } 123 }
139 124
140 int32_t TCPSocketPrivate::Read(char* buffer, 125 int32_t TCPSocketPrivate::Read(char* buffer,
141 int32_t bytes_to_read, 126 int32_t bytes_to_read,
142 const CompletionCallback& callback) { 127 const CompletionCallback& callback) {
143 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
144 return get_interface<PPB_TCPSocket_Private_0_4>()->Read(
145 pp_resource(), buffer, bytes_to_read,
146 callback.pp_completion_callback());
147 }
148 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 128 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
149 return get_interface<PPB_TCPSocket_Private_0_3>()->Read( 129 return get_interface<PPB_TCPSocket_Private_0_3>()->Read(
150 pp_resource(), buffer, bytes_to_read, 130 pp_resource(), buffer, bytes_to_read,
151 callback.pp_completion_callback()); 131 callback.pp_completion_callback());
152 } 132 }
153 return callback.MayForce(PP_ERROR_NOINTERFACE); 133 return callback.MayForce(PP_ERROR_NOINTERFACE);
154 } 134 }
155 135
156 int32_t TCPSocketPrivate::Write(const char* buffer, 136 int32_t TCPSocketPrivate::Write(const char* buffer,
157 int32_t bytes_to_write, 137 int32_t bytes_to_write,
158 const CompletionCallback& callback) { 138 const CompletionCallback& callback) {
159 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
160 return get_interface<PPB_TCPSocket_Private_0_4>()->Write(
161 pp_resource(), buffer, bytes_to_write,
162 callback.pp_completion_callback());
163 }
164 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 139 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
165 return get_interface<PPB_TCPSocket_Private_0_3>()->Write( 140 return get_interface<PPB_TCPSocket_Private_0_3>()->Write(
166 pp_resource(), buffer, bytes_to_write, 141 pp_resource(), buffer, bytes_to_write,
167 callback.pp_completion_callback()); 142 callback.pp_completion_callback());
168 } 143 }
169 return callback.MayForce(PP_ERROR_NOINTERFACE); 144 return callback.MayForce(PP_ERROR_NOINTERFACE);
170 } 145 }
171 146
172 void TCPSocketPrivate::Disconnect() { 147 void TCPSocketPrivate::Disconnect() {
173 if (has_interface<PPB_TCPSocket_Private_0_4>()) {
174 return get_interface<PPB_TCPSocket_Private_0_4>()->Disconnect(
175 pp_resource());
176 }
177 if (has_interface<PPB_TCPSocket_Private_0_3>()) { 148 if (has_interface<PPB_TCPSocket_Private_0_3>()) {
178 return get_interface<PPB_TCPSocket_Private_0_3>()->Disconnect( 149 return get_interface<PPB_TCPSocket_Private_0_3>()->Disconnect(
179 pp_resource()); 150 pp_resource());
180 } 151 }
181 } 152 }
182 153
154 int32_t TCPSocketPrivate::SetSocketFeature(PP_TCPSocketFeature_Private name,
155 const Var& value,
156 const CompletionCallback& callback) {
157 if (has_interface<PPB_TCPSocket_Private_0_5>()) {
158 return get_interface<PPB_TCPSocket_Private_0_5>()->SetSocketFeature(
159 pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
160 }
161 return callback.MayForce(PP_ERROR_NOINTERFACE);
162 }
163
183 } // namespace pp 164 } // namespace pp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698