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

Side by Side Diff: net/curvecp/test_server.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/test_server.h ('k') | net/dns/dns_transaction.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/test_server.h" 5 #include "net/curvecp/test_server.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 void TestServer::OnAccept(CurveCPServerSocket* new_socket) { 57 void TestServer::OnAccept(CurveCPServerSocket* new_socket) {
58 DCHECK(new_socket); 58 DCHECK(new_socket);
59 LOG(ERROR) << "Accepted socket! Starting Echo Server"; 59 LOG(ERROR) << "Accepted socket! Starting Echo Server";
60 EchoServer* new_server = new EchoServer(); 60 EchoServer* new_server = new EchoServer();
61 new_server->Start(new_socket); 61 new_server->Start(new_socket);
62 } 62 }
63 63
64 EchoServer::EchoServer() 64 EchoServer::EchoServer()
65 : socket_(NULL), 65 : socket_(NULL),
66 bytes_received_(0), 66 bytes_received_(0) {
67 ALLOW_THIS_IN_INITIALIZER_LIST(
68 read_callback_(this, &EchoServer::OnReadComplete)),
69 ALLOW_THIS_IN_INITIALIZER_LIST(
70 write_callback_(this, &EchoServer::OnWriteComplete)) {
71 } 67 }
72 68
73 EchoServer::~EchoServer() { 69 EchoServer::~EchoServer() {
74 } 70 }
75 71
76 void EchoServer::Start(CurveCPServerSocket* socket) { 72 void EchoServer::Start(CurveCPServerSocket* socket) {
77 DCHECK(!socket_); 73 DCHECK(!socket_);
78 socket_ = socket; 74 socket_ = socket;
79 75
80 ReadData(); 76 ReadData();
(...skipping 12 matching lines...) Expand all
93 89
94 if (!received_stream_.VerifyBytes(read_buffer_->data(), result)) { 90 if (!received_stream_.VerifyBytes(read_buffer_->data(), result)) {
95 LOG(ERROR) << "Server Received corrupt receive data!"; 91 LOG(ERROR) << "Server Received corrupt receive data!";
96 delete this; 92 delete this;
97 return; 93 return;
98 } 94 }
99 95
100 // Echo the read data back here. 96 // Echo the read data back here.
101 DCHECK(!write_buffer_.get()); 97 DCHECK(!write_buffer_.get());
102 write_buffer_ = new DrainableIOBuffer(read_buffer_, result); 98 write_buffer_ = new DrainableIOBuffer(read_buffer_, result);
103 int rv = socket_->Write(write_buffer_, result, &write_callback_); 99 int rv = socket_->Write(write_buffer_, result,
100 base::Bind(&EchoServer::OnWriteComplete,
101 base::Unretained(this)));
104 if (rv == ERR_IO_PENDING) 102 if (rv == ERR_IO_PENDING)
105 return; 103 return;
106 OnWriteComplete(rv); 104 OnWriteComplete(rv);
107 } 105 }
108 106
109 void EchoServer::OnWriteComplete(int result) { 107 void EchoServer::OnWriteComplete(int result) {
110 if (result <= 0) { 108 if (result <= 0) {
111 delete this; 109 delete this;
112 return; 110 return;
113 } 111 }
114 112
115 write_buffer_->DidConsume(result); 113 write_buffer_->DidConsume(result);
116 while (write_buffer_->BytesRemaining()) { 114 while (write_buffer_->BytesRemaining()) {
117 int rv = socket_->Write(write_buffer_, 115 int rv = socket_->Write(write_buffer_,
118 write_buffer_->BytesRemaining(), 116 write_buffer_->BytesRemaining(),
119 &write_callback_); 117 base::Bind(&EchoServer::OnWriteComplete,
118 base::Unretained(this)));
120 if (rv == ERR_IO_PENDING) 119 if (rv == ERR_IO_PENDING)
121 return; 120 return;
122 OnWriteComplete(rv); 121 OnWriteComplete(rv);
123 } 122 }
124 123
125 // Now we can read more data. 124 // Now we can read more data.
126 write_buffer_ = NULL; 125 write_buffer_ = NULL;
127 // read_buffer_ = NULL; 126 // read_buffer_ = NULL;
128 // ReadData(); 127 // ReadData();
129 } 128 }
130 129
131 void EchoServer::ReadData() { 130 void EchoServer::ReadData() {
132 DCHECK(!read_buffer_.get()); 131 DCHECK(!read_buffer_.get());
133 read_buffer_ = new IOBuffer(kMaxMessage); 132 read_buffer_ = new IOBuffer(kMaxMessage);
134 133
135 int rv; 134 int rv;
136 do { 135 do {
137 rv = socket_->Read(read_buffer_, kMaxMessage, &read_callback_); 136 rv = socket_->Read(read_buffer_, kMaxMessage,
137 base::Bind(&EchoServer::OnReadComplete,
138 base::Unretained(this)));
138 if (rv == ERR_IO_PENDING) 139 if (rv == ERR_IO_PENDING)
139 return; 140 return;
140 OnReadComplete(rv); // Complete the read manually 141 OnReadComplete(rv); // Complete the read manually
141 } while (rv > 0); 142 } while (rv > 0);
142 } 143 }
143 144
144 } // namespace net 145 } // namespace net
OLDNEW
« no previous file with comments | « net/curvecp/test_server.h ('k') | net/dns/dns_transaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698