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

Side by Side Diff: net/server/http_server.cc

Issue 10386048: Decouple DevTools from socket implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync Created 8 years, 7 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
« no previous file with comments | « net/server/http_server.h ('k') | no next file » | 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) 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 "net/server/http_server.h" 5 #include "net/server/http_server.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/stl_util.h"
9 #include "base/string_util.h" 10 #include "base/string_util.h"
10 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
11 #include "base/sys_byteorder.h" 12 #include "base/sys_byteorder.h"
12 #include "build/build_config.h" 13 #include "build/build_config.h"
13 #include "net/base/tcp_listen_socket.h" 14 #include "net/base/tcp_listen_socket.h"
14 #include "net/server/http_connection.h" 15 #include "net/server/http_connection.h"
15 #include "net/server/http_server_request_info.h" 16 #include "net/server/http_server_request_info.h"
16 #include "net/server/web_socket.h" 17 #include "net/server/web_socket.h"
17 18
18 namespace net { 19 namespace net {
19 20
20 HttpServer::HttpServer(const std::string& host, 21 HttpServer::HttpServer(const StreamListenSocketFactory& factory,
21 int port, 22 HttpServer::Delegate* delegate)
22 HttpServer::Delegate* del) 23 : delegate_(delegate),
23 : delegate_(del) { 24 ALLOW_THIS_IN_INITIALIZER_LIST(server_(factory.CreateAndListen(this))) {
24 server_ = TCPListenSocket::CreateAndListen(host, port, this); 25 DCHECK(server_);
25 } 26 }
26 27
27 void HttpServer::AcceptWebSocket( 28 void HttpServer::AcceptWebSocket(
28 int connection_id, 29 int connection_id,
29 const HttpServerRequestInfo& request) { 30 const HttpServerRequestInfo& request) {
30 HttpConnection* connection = FindConnection(connection_id); 31 HttpConnection* connection = FindConnection(connection_id);
31 if (connection == NULL) 32 if (connection == NULL)
32 return; 33 return;
33 34
34 DCHECK(connection->web_socket_.get()); 35 DCHECK(connection->web_socket_.get());
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 151
151 void HttpServer::DidClose(StreamListenSocket* socket) { 152 void HttpServer::DidClose(StreamListenSocket* socket) {
152 HttpConnection* connection = FindConnection(socket); 153 HttpConnection* connection = FindConnection(socket);
153 DCHECK(connection != NULL); 154 DCHECK(connection != NULL);
154 id_to_connection_.erase(connection->id()); 155 id_to_connection_.erase(connection->id());
155 socket_to_connection_.erase(connection->socket_); 156 socket_to_connection_.erase(connection->socket_);
156 delete connection; 157 delete connection;
157 } 158 }
158 159
159 HttpServer::~HttpServer() { 160 HttpServer::~HttpServer() {
160 IdToConnectionMap copy = id_to_connection_; 161 STLDeleteContainerPairSecondPointers(
161 for (IdToConnectionMap::iterator it = copy.begin(); it != copy.end(); ++it) 162 id_to_connection_.begin(), id_to_connection_.end());
162 delete it->second;
163
164 server_ = NULL; 163 server_ = NULL;
165 } 164 }
166 165
167 // 166 //
168 // HTTP Request Parser 167 // HTTP Request Parser
169 // This HTTP request parser uses a simple state machine to quickly parse 168 // This HTTP request parser uses a simple state machine to quickly parse
170 // through the headers. The parser is not 100% complete, as it is designed 169 // through the headers. The parser is not 100% complete, as it is designed
171 // for use in this simple test driver. 170 // for use in this simple test driver.
172 // 171 //
173 // Known issues: 172 // Known issues:
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 } 302 }
304 303
305 HttpConnection* HttpServer::FindConnection(StreamListenSocket* socket) { 304 HttpConnection* HttpServer::FindConnection(StreamListenSocket* socket) {
306 SocketToConnectionMap::iterator it = socket_to_connection_.find(socket); 305 SocketToConnectionMap::iterator it = socket_to_connection_.find(socket);
307 if (it == socket_to_connection_.end()) 306 if (it == socket_to_connection_.end())
308 return NULL; 307 return NULL;
309 return it->second; 308 return it->second;
310 } 309 }
311 310
312 } // namespace net 311 } // namespace net
OLDNEW
« no previous file with comments | « net/server/http_server.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698