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

Unified Diff: net/tools/fetch/http_listen_socket.cc

Issue 20142003: Remove ref-counting from StreamListenSocket (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/fetch/http_listen_socket.h ('k') | net/tools/fetch/http_session.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/fetch/http_listen_socket.cc
diff --git a/net/tools/fetch/http_listen_socket.cc b/net/tools/fetch/http_listen_socket.cc
index c8e1b1bfd55ef6c209ce9d293001153338c898fc..410a0ba55e595b42062bba7b869727b83c2eb759 100644
--- a/net/tools/fetch/http_listen_socket.cc
+++ b/net/tools/fetch/http_listen_socket.cc
@@ -4,11 +4,10 @@
#include "net/tools/fetch/http_listen_socket.h"
-#include <map>
-
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
+#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "net/tools/fetch/http_server_request_info.h"
#include "net/tools/fetch/http_server_response_info.h"
@@ -20,6 +19,7 @@ HttpListenSocket::HttpListenSocket(net::SocketDescriptor s,
}
HttpListenSocket::~HttpListenSocket() {
+ STLDeleteElements(&connections_);
}
void HttpListenSocket::Accept() {
@@ -28,15 +28,14 @@ void HttpListenSocket::Accept() {
if (conn == net::kInvalidSocket) {
// TODO
} else {
- scoped_refptr<HttpListenSocket> sock(
+ scoped_ptr<StreamListenSocket> sock(
new HttpListenSocket(conn, delegate_));
- // It's up to the delegate to AddRef if it wants to keep it around.
- DidAccept(this, sock.get());
+ DidAccept(this, sock.Pass());
}
}
// static
-scoped_refptr<HttpListenSocket> HttpListenSocket::CreateAndListen(
+scoped_ptr<HttpListenSocket> HttpListenSocket::CreateAndListen(
const std::string& ip,
int port,
HttpListenSocket::Delegate* delegate) {
@@ -44,11 +43,11 @@ scoped_refptr<HttpListenSocket> HttpListenSocket::CreateAndListen(
if (s == net::kInvalidSocket) {
// TODO (ibrar): error handling.
} else {
- scoped_refptr<HttpListenSocket> serv = new HttpListenSocket(s, delegate);
+ scoped_ptr<HttpListenSocket> serv(new HttpListenSocket(s, delegate));
serv->Listen();
- return serv;
+ return serv.Pass();
}
- return NULL;
+ return scoped_ptr<HttpListenSocket>();
}
//
@@ -180,9 +179,10 @@ HttpServerRequestInfo* HttpListenSocket::ParseHeaders() {
return NULL;
}
-void HttpListenSocket::DidAccept(net::StreamListenSocket* server,
- net::StreamListenSocket* connection) {
- connection->AddRef();
+void HttpListenSocket::DidAccept(
+ net::StreamListenSocket* server,
+ scoped_ptr<net::StreamListenSocket> connection) {
+ connections_.insert(connection.release());
}
void HttpListenSocket::DidRead(net::StreamListenSocket* connection,
@@ -199,7 +199,9 @@ void HttpListenSocket::DidRead(net::StreamListenSocket* connection,
}
void HttpListenSocket::DidClose(net::StreamListenSocket* sock) {
- sock->Release();
+ size_t count = connections_.erase(sock);
+ DCHECK_EQ(1u, count);
+ delete sock;
}
// Convert the numeric status code to a string.
« no previous file with comments | « net/tools/fetch/http_listen_socket.h ('k') | net/tools/fetch/http_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698