diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-03 19:03:06 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-03 19:03:06 +0000 |
commit | 8b62f8e537893c76633cc94e2327c2c2bfc340ee (patch) | |
tree | 9f38f00402039886c0b306a193f87b6c9d127b3d /net/server | |
parent | df248dc033de8f3b48f5d2c4dc49d739537c8ad4 (diff) | |
download | chromium_src-8b62f8e537893c76633cc94e2327c2c2bfc340ee.zip chromium_src-8b62f8e537893c76633cc94e2327c2c2bfc340ee.tar.gz chromium_src-8b62f8e537893c76633cc94e2327c2c2bfc340ee.tar.bz2 |
Remove ref-counting from StreamListenSocket
Changes APIs for StreamListenSocket, TCPListenSocket, UnixDomainSocket and derived test classes to use scoped_ptr instead of scoped_refptr.
BUG=263963
Review URL: https://chromiumcodereview.appspot.com/20142003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220992 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/server')
-rw-r--r-- | net/server/http_connection.cc | 10 | ||||
-rw-r--r-- | net/server/http_connection.h | 7 | ||||
-rw-r--r-- | net/server/http_server.cc | 8 | ||||
-rw-r--r-- | net/server/http_server.h | 6 | ||||
-rw-r--r-- | net/server/http_server_unittest.cc | 10 |
5 files changed, 17 insertions, 24 deletions
diff --git a/net/server/http_connection.cc b/net/server/http_connection.cc index d964cb0..d433012 100644 --- a/net/server/http_connection.cc +++ b/net/server/http_connection.cc @@ -29,21 +29,17 @@ void HttpConnection::Send(const HttpServerResponseInfo& response) { Send(response.Serialize()); } -HttpConnection::HttpConnection(HttpServer* server, StreamListenSocket* sock) +HttpConnection::HttpConnection(HttpServer* server, + scoped_ptr<StreamListenSocket> sock) : server_(server), - socket_(sock) { + socket_(sock.Pass()) { id_ = last_id_++; } HttpConnection::~HttpConnection() { - DetachSocket(); server_->delegate_->OnClose(id_); } -void HttpConnection::DetachSocket() { - socket_ = NULL; -} - void HttpConnection::Shift(int num_bytes) { recv_data_ = recv_data_.substr(num_bytes); } diff --git a/net/server/http_connection.h b/net/server/http_connection.h index b0e3766..17faa46 100644 --- a/net/server/http_connection.h +++ b/net/server/http_connection.h @@ -8,7 +8,6 @@ #include <string> #include "base/basictypes.h" -#include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "net/http/http_status_code.h" @@ -36,12 +35,10 @@ class HttpConnection { friend class HttpServer; static int last_id_; - HttpConnection(HttpServer* server, StreamListenSocket* sock); - - void DetachSocket(); + HttpConnection(HttpServer* server, scoped_ptr<StreamListenSocket> sock); HttpServer* server_; - scoped_refptr<StreamListenSocket> socket_; + scoped_ptr<StreamListenSocket> socket_; scoped_ptr<WebSocket> web_socket_; std::string recv_data_; int id_; diff --git a/net/server/http_server.cc b/net/server/http_server.cc index 373025c..a51feb8 100644 --- a/net/server/http_server.cc +++ b/net/server/http_server.cc @@ -95,10 +95,11 @@ int HttpServer::GetLocalAddress(IPEndPoint* address) { } void HttpServer::DidAccept(StreamListenSocket* server, - StreamListenSocket* socket) { - HttpConnection* connection = new HttpConnection(this, socket); + scoped_ptr<StreamListenSocket> socket) { + HttpConnection* connection = new HttpConnection(this, socket.Pass()); id_to_connection_[connection->id()] = connection; - socket_to_connection_[socket] = connection; + // TODO(szym): Fix socket access. Make HttpConnection the Delegate. + socket_to_connection_[connection->socket_.get()] = connection; } void HttpServer::DidRead(StreamListenSocket* socket, @@ -180,7 +181,6 @@ void HttpServer::DidClose(StreamListenSocket* socket) { HttpServer::~HttpServer() { STLDeleteContainerPairSecondPointers( id_to_connection_.begin(), id_to_connection_.end()); - server_ = NULL; } // diff --git a/net/server/http_server.h b/net/server/http_server.h index f434575..51bec95 100644 --- a/net/server/http_server.h +++ b/net/server/http_server.h @@ -9,7 +9,7 @@ #include <map> #include "base/basictypes.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" #include "net/http/http_status_code.h" #include "net/socket/stream_listen_socket.h" @@ -65,7 +65,7 @@ class HttpServer : public StreamListenSocket::Delegate, // ListenSocketDelegate virtual void DidAccept(StreamListenSocket* server, - StreamListenSocket* socket) OVERRIDE; + scoped_ptr<StreamListenSocket> socket) OVERRIDE; virtual void DidRead(StreamListenSocket* socket, const char* data, int len) OVERRIDE; @@ -89,7 +89,7 @@ class HttpServer : public StreamListenSocket::Delegate, HttpConnection* FindConnection(StreamListenSocket* socket); HttpServer::Delegate* delegate_; - scoped_refptr<StreamListenSocket> server_; + scoped_ptr<StreamListenSocket> server_; typedef std::map<int, HttpConnection*> IdToConnectionMap; IdToConnectionMap id_to_connection_; typedef std::map<StreamListenSocket*, HttpConnection*> SocketToConnectionMap; diff --git a/net/server/http_server_unittest.cc b/net/server/http_server_unittest.cc index 48a2ce7..ede5066 100644 --- a/net/server/http_server_unittest.cc +++ b/net/server/http_server_unittest.cc @@ -276,9 +276,9 @@ class MockStreamListenSocket : public StreamListenSocket { } // namespace TEST_F(HttpServerTest, RequestWithBodySplitAcrossPackets) { - scoped_refptr<StreamListenSocket> socket( - new MockStreamListenSocket(server_.get())); - server_->DidAccept(NULL, socket.get()); + StreamListenSocket* socket = + new MockStreamListenSocket(server_.get()); + server_->DidAccept(NULL, make_scoped_ptr(socket)); std::string body("body"); std::string request = base::StringPrintf( "GET /test HTTP/1.1\r\n" @@ -286,9 +286,9 @@ TEST_F(HttpServerTest, RequestWithBodySplitAcrossPackets) { "Content-Length: %" PRIuS "\r\n\r\n%s", body.length(), body.c_str()); - server_->DidRead(socket.get(), request.c_str(), request.length() - 2); + server_->DidRead(socket, request.c_str(), request.length() - 2); ASSERT_EQ(0u, requests_.size()); - server_->DidRead(socket.get(), request.c_str() + request.length() - 2, 2); + server_->DidRead(socket, request.c_str() + request.length() - 2, 2); ASSERT_EQ(1u, requests_.size()); ASSERT_EQ(body, requests_[0].data); } |