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

Side by Side Diff: net/curvecp/server_packetizer.cc

Issue 8824006: Migrate net/socket/socket.h, net/socket/stream_socket.h to base::Bind(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/curvecp/server_packetizer.h ('k') | net/curvecp/test_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "net/curvecp/server_packetizer.h" 5 #include "net/curvecp/server_packetizer.h"
6 6
7 #include "net/base/io_buffer.h" 7 #include "net/base/io_buffer.h"
8 #include "net/base/net_errors.h" 8 #include "net/base/net_errors.h"
9 #include "net/curvecp/protocol.h" 9 #include "net/curvecp/protocol.h"
10 #include "net/udp/udp_server_socket.h" 10 #include "net/udp/udp_server_socket.h"
11 11
12 namespace net { 12 namespace net {
13 13
14 ServerPacketizer::ServerPacketizer() 14 ServerPacketizer::ServerPacketizer()
15 : Packetizer(), 15 : Packetizer(),
16 state_(NONE), 16 state_(NONE),
17 listener_(NULL), 17 listener_(NULL),
18 read_buffer_(new IOBuffer(kMaxPacketLength)), 18 read_buffer_(new IOBuffer(kMaxPacketLength)) {
19 ALLOW_THIS_IN_INITIALIZER_LIST(
20 read_callback_(this, &ServerPacketizer::OnReadComplete)),
21 ALLOW_THIS_IN_INITIALIZER_LIST(
22 write_callback_(this, &ServerPacketizer::OnWriteComplete)) {
23 } 19 }
24 20
25 ServerPacketizer::~ServerPacketizer() { 21 ServerPacketizer::~ServerPacketizer() {
26 } 22 }
27 23
28 int ServerPacketizer::Listen(const IPEndPoint& endpoint, 24 int ServerPacketizer::Listen(const IPEndPoint& endpoint,
29 Packetizer::Listener* listener) { 25 Packetizer::Listener* listener) {
30 DCHECK(!listener_); 26 DCHECK(!listener_);
31 listener_ = listener; 27 listener_ = listener;
32 socket_.reset(new UDPServerSocket(NULL, NetLog::Source())); 28 socket_.reset(new UDPServerSocket(NULL, NetLog::Source()));
33 int rv = socket_->Listen(endpoint); 29 int rv = socket_->Listen(endpoint);
34 if (rv != OK) 30 if (rv != OK)
35 return rv; 31 return rv;
36 32
37 return ReadPackets(); 33 return ReadPackets();
38 } 34 }
39 35
40 bool ServerPacketizer::Open(ConnectionKey key, Packetizer::Listener* listener) { 36 bool ServerPacketizer::Open(ConnectionKey key, Packetizer::Listener* listener) {
41 DCHECK(listener_map_.find(key) == listener_map_.end()); 37 DCHECK(listener_map_.find(key) == listener_map_.end());
42 listener_map_[key] = listener; 38 listener_map_[key] = listener;
43 return true; 39 return true;
44 } 40 }
45 41
46 int ServerPacketizer::SendMessage(ConnectionKey key, 42 int ServerPacketizer::SendMessage(ConnectionKey key,
47 const char* data, 43 const char* data,
48 size_t length, 44 size_t length,
49 OldCompletionCallback* callback) { 45 const CompletionCallback& callback) {
50 DCHECK(socket_.get()); 46 DCHECK(socket_.get());
51 DCHECK_LT(0u, length); 47 DCHECK_LT(0u, length);
52 DCHECK_GT(kMaxPacketLength - sizeof(ServerMessagePacket), length); 48 DCHECK_GT(kMaxPacketLength - sizeof(ServerMessagePacket), length);
53 49
54 ConnectionMap::const_iterator it = connection_map_.find(key); 50 ConnectionMap::const_iterator it = connection_map_.find(key);
55 if (it == connection_map_.end()) { 51 if (it == connection_map_.end()) {
56 LOG(ERROR) << "Unknown connection key"; 52 LOG(ERROR) << "Unknown connection key";
57 return ERR_FAILED; // No route to the client! 53 return ERR_FAILED; // No route to the client!
58 } 54 }
59 IPEndPoint endpoint = it->second; 55 IPEndPoint endpoint = it->second;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 scoped_refptr<IOBuffer> buffer(new IOBuffer(sizeof(struct CookiePacket))); 126 scoped_refptr<IOBuffer> buffer(new IOBuffer(sizeof(struct CookiePacket)));
131 struct CookiePacket* data = 127 struct CookiePacket* data =
132 reinterpret_cast<struct CookiePacket*>(buffer->data()); 128 reinterpret_cast<struct CookiePacket*>(buffer->data());
133 memset(data, 0, sizeof(struct CookiePacket)); 129 memset(data, 0, sizeof(struct CookiePacket));
134 memcpy(data->id, "RL3aNMXK", 8); 130 memcpy(data->id, "RL3aNMXK", 8);
135 memcpy(data->client_extension, hello_packet->client_extension, 16); 131 memcpy(data->client_extension, hello_packet->client_extension, 16);
136 // TODO(mbelshe) Fill in the rest of the CookiePacket fields. 132 // TODO(mbelshe) Fill in the rest of the CookiePacket fields.
137 133
138 // XXXMB - Can't have two pending writes at the same time... 134 // XXXMB - Can't have two pending writes at the same time...
139 int rv = socket_->SendTo(buffer, sizeof(struct CookiePacket), recv_address_, 135 int rv = socket_->SendTo(buffer, sizeof(struct CookiePacket), recv_address_,
140 &write_callback_); 136 base::Bind(&ServerPacketizer::OnWriteComplete,
137 base::Unretained(this)));
141 DCHECK(rv == ERR_IO_PENDING || rv == sizeof(struct CookiePacket)); 138 DCHECK(rv == ERR_IO_PENDING || rv == sizeof(struct CookiePacket));
142 } 139 }
143 140
144 void ServerPacketizer::HandleInitiatePacket(Packet* packet, int length) { 141 void ServerPacketizer::HandleInitiatePacket(Packet* packet, int length) {
145 // Handle InitiatePacket 142 // Handle InitiatePacket
146 LOG(ERROR) << "Received Initiate Packet"; 143 LOG(ERROR) << "Received Initiate Packet";
147 144
148 InitiatePacket* initiate_packet = reinterpret_cast<InitiatePacket*>(packet); 145 InitiatePacket* initiate_packet = reinterpret_cast<InitiatePacket*>(packet);
149 146
150 // We have an active connection. 147 // We have an active connection.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 } 210 }
214 211
215 int ServerPacketizer::ReadPackets() { 212 int ServerPacketizer::ReadPackets() {
216 DCHECK(socket_.get()); 213 DCHECK(socket_.get());
217 214
218 int rv; 215 int rv;
219 while (true) { 216 while (true) {
220 rv = socket_->RecvFrom(read_buffer_, 217 rv = socket_->RecvFrom(read_buffer_,
221 kMaxPacketLength, 218 kMaxPacketLength,
222 &recv_address_, 219 &recv_address_,
223 &read_callback_); 220 base::Bind(&ServerPacketizer::OnReadComplete,
221 base::Unretained(this)));
224 if (rv <= 0) { 222 if (rv <= 0) {
225 if (rv != ERR_IO_PENDING) 223 if (rv != ERR_IO_PENDING)
226 LOG(ERROR) << "Error reading listen socket: " << rv; 224 LOG(ERROR) << "Error reading listen socket: " << rv;
227 return rv; 225 return rv;
228 } 226 }
229 227
230 ProcessRead(rv); 228 ProcessRead(rv);
231 } 229 }
232 230
233 return rv; 231 return rv;
234 } 232 }
235 233
236 void ServerPacketizer::OnReadComplete(int result) { 234 void ServerPacketizer::OnReadComplete(int result) {
237 if (result > 0) 235 if (result > 0)
238 ProcessRead(result); 236 ProcessRead(result);
239 ReadPackets(); 237 ReadPackets();
240 } 238 }
241 239
242 void ServerPacketizer::OnWriteComplete(int result) { 240 void ServerPacketizer::OnWriteComplete(int result) {
243 // TODO(mbelshe): do we need to do anything? 241 // TODO(mbelshe): do we need to do anything?
244 } 242 }
245 243
246 } 244 }
OLDNEW
« no previous file with comments | « net/curvecp/server_packetizer.h ('k') | net/curvecp/test_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698