summaryrefslogtreecommitdiffstats
path: root/net/server
diff options
context:
space:
mode:
authorszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-03 19:03:06 +0000
committerszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-03 19:03:06 +0000
commit8b62f8e537893c76633cc94e2327c2c2bfc340ee (patch)
tree9f38f00402039886c0b306a193f87b6c9d127b3d /net/server
parentdf248dc033de8f3b48f5d2c4dc49d739537c8ad4 (diff)
downloadchromium_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.cc10
-rw-r--r--net/server/http_connection.h7
-rw-r--r--net/server/http_server.cc8
-rw-r--r--net/server/http_server.h6
-rw-r--r--net/server/http_server_unittest.cc10
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);
}