summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-03 04:16:50 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-03 04:16:50 +0000
commitdf7a30d0765e92f171bec0bf514077f72be9a177 (patch)
treefc547de5f08cfa441c860a3f7672a03e750472a8
parent2e36b401d9e9439bce4efa6cfeef6dcfb069ba03 (diff)
downloadchromium_src-df7a30d0765e92f171bec0bf514077f72be9a177.zip
chromium_src-df7a30d0765e92f171bec0bf514077f72be9a177.tar.gz
chromium_src-df7a30d0765e92f171bec0bf514077f72be9a177.tar.bz2
base::Bind: Convert ServerSocket::Accept.
BUG=none TEST=none R=csilv Review URL: http://codereview.chromium.org/8771030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112863 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/p2p/socket_host_tcp_server.cc9
-rw-r--r--content/browser/renderer_host/p2p/socket_host_tcp_server.h3
-rw-r--r--content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc22
-rw-r--r--net/socket/server_socket.h2
-rw-r--r--net/socket/tcp_client_socket_unittest.cc4
-rw-r--r--net/socket/tcp_server_socket_libevent.cc12
-rw-r--r--net/socket/tcp_server_socket_libevent.h4
-rw-r--r--net/socket/tcp_server_socket_unittest.cc21
-rw-r--r--net/socket/tcp_server_socket_win.cc12
-rw-r--r--net/socket/tcp_server_socket_win.h5
10 files changed, 50 insertions, 44 deletions
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_server.cc b/content/browser/renderer_host/p2p/socket_host_tcp_server.cc
index 8a19d98..4c7891a 100644
--- a/content/browser/renderer_host/p2p/socket_host_tcp_server.cc
+++ b/content/browser/renderer_host/p2p/socket_host_tcp_server.cc
@@ -4,6 +4,8 @@
#include "content/browser/renderer_host/p2p/socket_host_tcp_server.h"
+#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/stl_util.h"
#include "content/browser/renderer_host/p2p/socket_host_tcp.h"
#include "content/common/p2p_messages.h"
@@ -24,8 +26,9 @@ P2PSocketHostTcpServer::P2PSocketHostTcpServer(
int routing_id, int id)
: P2PSocketHost(message_sender, routing_id, id),
socket_(new net::TCPServerSocket(NULL, net::NetLog::Source())),
- ALLOW_THIS_IN_INITIALIZER_LIST(
- accept_callback_(this, &P2PSocketHostTcpServer::OnAccepted)) {
+ ALLOW_THIS_IN_INITIALIZER_LIST(accept_callback_(
+ base::Bind(&P2PSocketHostTcpServer::OnAccepted,
+ base::Unretained(this)))) {
}
P2PSocketHostTcpServer::~P2PSocketHostTcpServer() {
@@ -76,7 +79,7 @@ void P2PSocketHostTcpServer::OnError() {
void P2PSocketHostTcpServer::DoAccept() {
while (true) {
- int result = socket_->Accept(&accept_socket_, &accept_callback_);
+ int result = socket_->Accept(&accept_socket_, accept_callback_);
if (result == net::ERR_IO_PENDING) {
break;
} else {
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_server.h b/content/browser/renderer_host/p2p/socket_host_tcp_server.h
index 0560d32..28fb34c 100644
--- a/content/browser/renderer_host/p2p/socket_host_tcp_server.h
+++ b/content/browser/renderer_host/p2p/socket_host_tcp_server.h
@@ -14,6 +14,7 @@
#include "content/browser/renderer_host/p2p/socket_host.h"
#include "content/common/content_export.h"
#include "content/common/p2p_sockets.h"
+#include "net/base/completion_callback.h"
#include "net/socket/tcp_server_socket.h"
namespace net {
@@ -55,7 +56,7 @@ class CONTENT_EXPORT P2PSocketHostTcpServer : public P2PSocketHost {
scoped_ptr<net::StreamSocket> accept_socket_;
AcceptedSocketsMap accepted_sockets_;
- net::OldCompletionCallbackImpl<P2PSocketHostTcpServer> accept_callback_;
+ net::CompletionCallback accept_callback_;
DISALLOW_COPY_AND_ASSIGN(P2PSocketHostTcpServer);
};
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc b/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc
index ba625bc..cf3e840 100644
--- a/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc
+++ b/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc
@@ -6,6 +6,7 @@
#include "content/browser/renderer_host/p2p/socket_host_tcp.h"
#include "content/browser/renderer_host/p2p/socket_host_test_utils.h"
+#include "net/base/completion_callback.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -20,22 +21,25 @@ class FakeServerSocket : public net::ServerSocket {
public:
FakeServerSocket()
: listening_(false),
- accept_socket_(NULL),
- accept_callback_(NULL) {
+ accept_socket_(NULL) {
}
- ~FakeServerSocket() { }
+ virtual ~FakeServerSocket() {}
bool listening() { return listening_; }
void AddIncoming(net::StreamSocket* socket) {
- if (accept_callback_) {
+ if (!accept_callback_.is_null()) {
DCHECK(incoming_sockets_.empty());
accept_socket_->reset(socket);
accept_socket_ = NULL;
- net::OldCompletionCallback* cb = accept_callback_;
- accept_callback_ = NULL;
- cb->Run(net::OK);
+
+ // This copy is necessary because this implementation of ServerSocket
+ // bases logic on the null-ness of |accept_callback_| in the bound
+ // callback.
+ net::CompletionCallback cb = accept_callback_;
+ accept_callback_.Reset();
+ cb.Run(net::OK);
} else {
incoming_sockets_.push_back(socket);
}
@@ -54,7 +58,7 @@ class FakeServerSocket : public net::ServerSocket {
}
virtual int Accept(scoped_ptr<net::StreamSocket>* socket,
- net::OldCompletionCallback* callback) OVERRIDE {
+ const net::CompletionCallback& callback) OVERRIDE {
DCHECK(socket);
if (!incoming_sockets_.empty()) {
socket->reset(incoming_sockets_.front());
@@ -73,7 +77,7 @@ class FakeServerSocket : public net::ServerSocket {
net::IPEndPoint local_address_;
scoped_ptr<net::StreamSocket>* accept_socket_;
- net::OldCompletionCallback* accept_callback_;
+ net::CompletionCallback accept_callback_;
std::list<net::StreamSocket*> incoming_sockets_;
};
diff --git a/net/socket/server_socket.h b/net/socket/server_socket.h
index 5931cf5..11151ee 100644
--- a/net/socket/server_socket.h
+++ b/net/socket/server_socket.h
@@ -29,7 +29,7 @@ class NET_EXPORT ServerSocket {
// Accept connection. Callback is called when new connection is
// accepted.
virtual int Accept(scoped_ptr<StreamSocket>* socket,
- OldCompletionCallback* callback) = 0;
+ const CompletionCallback& callback) = 0;
private:
DISALLOW_COPY_AND_ASSIGN(ServerSocket);
diff --git a/net/socket/tcp_client_socket_unittest.cc b/net/socket/tcp_client_socket_unittest.cc
index 4abce1f..50a319b 100644
--- a/net/socket/tcp_client_socket_unittest.cc
+++ b/net/socket/tcp_client_socket_unittest.cc
@@ -41,9 +41,9 @@ TEST(TCPClientSocketTest, BindLoopbackToLoopback) {
TestOldCompletionCallback connect_callback;
EXPECT_EQ(ERR_IO_PENDING, socket.Connect(&connect_callback));
- TestOldCompletionCallback accept_callback;
+ TestCompletionCallback accept_callback;
scoped_ptr<StreamSocket> accepted_socket;
- int result = server.Accept(&accepted_socket, &accept_callback);
+ int result = server.Accept(&accepted_socket, accept_callback.callback());
if (result == ERR_IO_PENDING)
result = accept_callback.WaitForResult();
ASSERT_EQ(OK, result);
diff --git a/net/socket/tcp_server_socket_libevent.cc b/net/socket/tcp_server_socket_libevent.cc
index 5ed52a9..e793dd6 100644
--- a/net/socket/tcp_server_socket_libevent.cc
+++ b/net/socket/tcp_server_socket_libevent.cc
@@ -34,7 +34,6 @@ TCPServerSocketLibevent::TCPServerSocketLibevent(
const net::NetLog::Source& source)
: socket_(kInvalidSocket),
accept_socket_(NULL),
- accept_callback_(NULL),
net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)) {
scoped_refptr<NetLog::EventParameters> params;
if (source.is_valid())
@@ -106,11 +105,11 @@ int TCPServerSocketLibevent::GetLocalAddress(IPEndPoint* address) const {
}
int TCPServerSocketLibevent::Accept(
- scoped_ptr<StreamSocket>* socket, OldCompletionCallback* callback) {
+ scoped_ptr<StreamSocket>* socket, const CompletionCallback& callback) {
DCHECK(CalledOnValidThread());
DCHECK(socket);
- DCHECK(callback);
- DCHECK(!accept_callback_);
+ DCHECK(!callback.is_null());
+ DCHECK(accept_callback_.is_null());
net_log_.BeginEvent(NetLog::TYPE_TCP_ACCEPT, NULL);
@@ -185,12 +184,11 @@ void TCPServerSocketLibevent::OnFileCanReadWithoutBlocking(int fd) {
int result = AcceptInternal(accept_socket_);
if (result != ERR_IO_PENDING) {
- OldCompletionCallback* c = accept_callback_;
- accept_callback_ = NULL;
accept_socket_ = NULL;
bool ok = accept_socket_watcher_.StopWatchingFileDescriptor();
DCHECK(ok);
- c->Run(result);
+ accept_callback_.Run(result);
+ accept_callback_.Reset();
}
}
diff --git a/net/socket/tcp_server_socket_libevent.h b/net/socket/tcp_server_socket_libevent.h
index 1325d06..946cc50 100644
--- a/net/socket/tcp_server_socket_libevent.h
+++ b/net/socket/tcp_server_socket_libevent.h
@@ -29,7 +29,7 @@ class NET_EXPORT_PRIVATE TCPServerSocketLibevent
virtual int Listen(const net::IPEndPoint& address, int backlog) OVERRIDE;
virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE;
virtual int Accept(scoped_ptr<StreamSocket>* socket,
- OldCompletionCallback* callback) OVERRIDE;
+ const CompletionCallback& callback) OVERRIDE;
// MessageLoopForIO::Watcher implementation.
virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE;
@@ -44,7 +44,7 @@ class NET_EXPORT_PRIVATE TCPServerSocketLibevent
MessageLoopForIO::FileDescriptorWatcher accept_socket_watcher_;
scoped_ptr<StreamSocket>* accept_socket_;
- OldCompletionCallback* accept_callback_;
+ CompletionCallback accept_callback_;
BoundNetLog net_log_;
};
diff --git a/net/socket/tcp_server_socket_unittest.cc b/net/socket/tcp_server_socket_unittest.cc
index 8c36dca..573ff4c 100644
--- a/net/socket/tcp_server_socket_unittest.cc
+++ b/net/socket/tcp_server_socket_unittest.cc
@@ -82,9 +82,9 @@ TEST_F(TCPServerSocketTest, Accept) {
NULL, NetLog::Source());
connecting_socket.Connect(&connect_callback);
- TestOldCompletionCallback accept_callback;
+ TestCompletionCallback accept_callback;
scoped_ptr<StreamSocket> accepted_socket;
- int result = socket_.Accept(&accepted_socket, &accept_callback);
+ int result = socket_.Accept(&accepted_socket, accept_callback.callback());
if (result == ERR_IO_PENDING)
result = accept_callback.WaitForResult();
ASSERT_EQ(OK, result);
@@ -102,10 +102,11 @@ TEST_F(TCPServerSocketTest, Accept) {
TEST_F(TCPServerSocketTest, AcceptAsync) {
ASSERT_NO_FATAL_FAILURE(SetUpIPv4());
- TestOldCompletionCallback accept_callback;
+ TestCompletionCallback accept_callback;
scoped_ptr<StreamSocket> accepted_socket;
- ASSERT_EQ(ERR_IO_PENDING, socket_.Accept(&accepted_socket, &accept_callback));
+ ASSERT_EQ(ERR_IO_PENDING,
+ socket_.Accept(&accepted_socket, accept_callback.callback()));
TestOldCompletionCallback connect_callback;
TCPClientSocket connecting_socket(local_address_list(),
@@ -126,11 +127,11 @@ TEST_F(TCPServerSocketTest, AcceptAsync) {
TEST_F(TCPServerSocketTest, Accept2Connections) {
ASSERT_NO_FATAL_FAILURE(SetUpIPv4());
- TestOldCompletionCallback accept_callback;
+ TestCompletionCallback accept_callback;
scoped_ptr<StreamSocket> accepted_socket;
ASSERT_EQ(ERR_IO_PENDING,
- socket_.Accept(&accepted_socket, &accept_callback));
+ socket_.Accept(&accepted_socket, accept_callback.callback()));
TestOldCompletionCallback connect_callback;
TCPClientSocket connecting_socket(local_address_list(),
@@ -144,9 +145,9 @@ TEST_F(TCPServerSocketTest, Accept2Connections) {
EXPECT_EQ(OK, accept_callback.WaitForResult());
- TestOldCompletionCallback accept_callback2;
+ TestCompletionCallback accept_callback2;
scoped_ptr<StreamSocket> accepted_socket2;
- int result = socket_.Accept(&accepted_socket2, &accept_callback2);
+ int result = socket_.Accept(&accepted_socket2, accept_callback2.callback());
if (result == ERR_IO_PENDING)
result = accept_callback2.WaitForResult();
ASSERT_EQ(OK, result);
@@ -174,9 +175,9 @@ TEST_F(TCPServerSocketTest, AcceptIPv6) {
NULL, NetLog::Source());
connecting_socket.Connect(&connect_callback);
- TestOldCompletionCallback accept_callback;
+ TestCompletionCallback accept_callback;
scoped_ptr<StreamSocket> accepted_socket;
- int result = socket_.Accept(&accepted_socket, &accept_callback);
+ int result = socket_.Accept(&accepted_socket, accept_callback.callback());
if (result == ERR_IO_PENDING)
result = accept_callback.WaitForResult();
ASSERT_EQ(OK, result);
diff --git a/net/socket/tcp_server_socket_win.cc b/net/socket/tcp_server_socket_win.cc
index bde65ec..baa5410 100644
--- a/net/socket/tcp_server_socket_win.cc
+++ b/net/socket/tcp_server_socket_win.cc
@@ -20,7 +20,6 @@ TCPServerSocketWin::TCPServerSocketWin(net::NetLog* net_log,
: socket_(INVALID_SOCKET),
socket_event_(WSA_INVALID_EVENT),
accept_socket_(NULL),
- accept_callback_(NULL),
net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SOCKET)) {
scoped_refptr<NetLog::EventParameters> params;
if (source.is_valid())
@@ -99,11 +98,11 @@ int TCPServerSocketWin::GetLocalAddress(IPEndPoint* address) const {
}
int TCPServerSocketWin::Accept(
- scoped_ptr<StreamSocket>* socket, OldCompletionCallback* callback) {
+ scoped_ptr<StreamSocket>* socket, const CompletionCallback& callback) {
DCHECK(CalledOnValidThread());
DCHECK(socket);
- DCHECK(callback);
- DCHECK(!accept_callback_);
+ DCHECK(!callback.is_null());
+ DCHECK(accept_callback_.is_null());
net_log_.BeginEvent(NetLog::TYPE_TCP_ACCEPT, NULL);
@@ -182,10 +181,9 @@ void TCPServerSocketWin::OnObjectSignaled(HANDLE object) {
if (ev.lNetworkEvents & FD_ACCEPT) {
int result = AcceptInternal(accept_socket_);
if (result != ERR_IO_PENDING) {
- OldCompletionCallback* c = accept_callback_;
- accept_callback_ = NULL;
accept_socket_ = NULL;
- c->Run(result);
+ accept_callback_.Run(result);
+ accept_callback_.Reset();
}
}
}
diff --git a/net/socket/tcp_server_socket_win.h b/net/socket/tcp_server_socket_win.h
index 22eab44..a7ab78c 100644
--- a/net/socket/tcp_server_socket_win.h
+++ b/net/socket/tcp_server_socket_win.h
@@ -11,6 +11,7 @@
#include "base/message_loop.h"
#include "base/win/object_watcher.h"
#include "base/threading/non_thread_safe.h"
+#include "net/base/completion_callback.h"
#include "net/base/net_log.h"
#include "net/socket/server_socket.h"
@@ -31,7 +32,7 @@ class NET_EXPORT_PRIVATE TCPServerSocketWin
virtual int Listen(const net::IPEndPoint& address, int backlog);
virtual int GetLocalAddress(IPEndPoint* address) const;
virtual int Accept(scoped_ptr<StreamSocket>* socket,
- OldCompletionCallback* callback);
+ const CompletionCallback& callback);
// base::ObjectWatcher::Delegate implementation.
virtual void OnObjectSignaled(HANDLE object);
@@ -46,7 +47,7 @@ class NET_EXPORT_PRIVATE TCPServerSocketWin
base::win::ObjectWatcher accept_watcher_;
scoped_ptr<StreamSocket>* accept_socket_;
- OldCompletionCallback* accept_callback_;
+ CompletionCallback accept_callback_;
BoundNetLog net_log_;
};