summaryrefslogtreecommitdiffstats
path: root/net/websockets
diff options
context:
space:
mode:
authoryutak@chromium.org <yutak@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 06:47:32 +0000
committeryutak@chromium.org <yutak@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 06:47:32 +0000
commit056df82a008ff3120c4fda5d84b0fbc645fd73e0 (patch)
treef808bd7db875ea06fd067d28b4244e954f2fb1e1 /net/websockets
parent41517b9911563e2a62647aba006118a2b9757718 (diff)
downloadchromium_src-056df82a008ff3120c4fda5d84b0fbc645fd73e0.zip
chromium_src-056df82a008ff3120c4fda5d84b0fbc645fd73e0.tar.gz
chromium_src-056df82a008ff3120c4fda5d84b0fbc645fd73e0.tar.bz2
Replace OldCompletionCallback in SocketStream::Delegate.
BUG=105683 TEST=none Review URL: http://codereview.chromium.org/8747013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112414 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/websockets')
-rw-r--r--net/websockets/websocket_job.cc27
-rw-r--r--net/websockets/websocket_job.h4
-rw-r--r--net/websockets/websocket_job_unittest.cc2
-rw-r--r--net/websockets/websocket_throttle_unittest.cc33
4 files changed, 35 insertions, 31 deletions
diff --git a/net/websockets/websocket_job.cc b/net/websockets/websocket_job.cc
index 794586b..03ca0da 100644
--- a/net/websockets/websocket_job.cc
+++ b/net/websockets/websocket_job.cc
@@ -76,7 +76,6 @@ WebSocketJob::WebSocketJob(SocketStream::Delegate* delegate)
: delegate_(delegate),
state_(INITIALIZED),
waiting_(false),
- callback_(NULL),
handshake_request_(new WebSocketHandshakeRequestHandler),
handshake_response_(new WebSocketHandshakeResponseHandler),
started_to_send_handshake_request_(false),
@@ -173,16 +172,16 @@ void WebSocketJob::DetachDelegate() {
if (socket_)
socket_->DetachDelegate();
socket_ = NULL;
- if (callback_) {
+ if (!callback_.is_null()) {
waiting_ = false;
- callback_ = NULL;
+ callback_.Reset();
Release(); // Balanced with OnStartOpenConnection().
}
}
int WebSocketJob::OnStartOpenConnection(
- SocketStream* socket, OldCompletionCallback* callback) {
- DCHECK(!callback_);
+ SocketStream* socket, const CompletionCallback& callback) {
+ DCHECK(callback_.is_null());
state_ = CONNECTING;
addresses_ = socket->address_list();
WebSocketThrottle::GetInstance()->PutInQueue(this);
@@ -194,7 +193,7 @@ int WebSocketJob::OnStartOpenConnection(
// PutInQueue() may set |waiting_| true for throttling. In this case,
// Wakeup() will be called later.
callback_ = callback;
- AddRef(); // Balanced when callback_ becomes NULL.
+ AddRef(); // Balanced when callback_ is cleared.
return ERR_IO_PENDING;
}
return TrySpdyStream();
@@ -280,9 +279,9 @@ void WebSocketJob::OnClose(SocketStream* socket) {
SocketStream::Delegate* delegate = delegate_;
delegate_ = NULL;
socket_ = NULL;
- if (callback_) {
+ if (!callback_.is_null()) {
waiting_ = false;
- callback_ = NULL;
+ callback_.Reset();
Release(); // Balanced with OnStartOpenConnection().
}
if (delegate)
@@ -615,7 +614,7 @@ void WebSocketJob::Wakeup() {
if (!waiting_)
return;
waiting_ = false;
- DCHECK(callback_);
+ DCHECK(!callback_.is_null());
MessageLoopForIO::current()->PostTask(
FROM_HERE,
base::Bind(&WebSocketJob::RetryPendingIO,
@@ -632,11 +631,11 @@ void WebSocketJob::RetryPendingIO() {
}
void WebSocketJob::CompleteIO(int result) {
- // |callback_| may be NULL if OnClose() or DetachDelegate() was called.
- if (callback_) {
- net::OldCompletionCallback* callback = callback_;
- callback_ = NULL;
- callback->Run(result);
+ // |callback_| may be null if OnClose() or DetachDelegate() was called.
+ if (!callback_.is_null()) {
+ CompletionCallback callback = callback_;
+ callback_.Reset();
+ callback.Run(result);
Release(); // Balanced with OnStartOpenConnection().
}
}
diff --git a/net/websockets/websocket_job.h b/net/websockets/websocket_job.h
index 1fcf256..61b1d8d 100644
--- a/net/websockets/websocket_job.h
+++ b/net/websockets/websocket_job.h
@@ -61,7 +61,7 @@ class NET_EXPORT WebSocketJob
// SocketStream::Delegate methods.
virtual int OnStartOpenConnection(
- SocketStream* socket, OldCompletionCallback* callback) OVERRIDE;
+ SocketStream* socket, const CompletionCallback& callback) OVERRIDE;
virtual void OnConnected(SocketStream* socket,
int max_pending_send_allowed) OVERRIDE;
virtual void OnSentData(SocketStream* socket, int amount_sent) OVERRIDE;
@@ -119,7 +119,7 @@ class NET_EXPORT WebSocketJob
State state_;
bool waiting_;
AddressList addresses_;
- OldCompletionCallback* callback_; // for throttling.
+ CompletionCallback callback_; // for throttling.
scoped_ptr<WebSocketHandshakeRequestHandler> handshake_request_;
scoped_ptr<WebSocketHandshakeResponseHandler> handshake_response_;
diff --git a/net/websockets/websocket_job_unittest.cc b/net/websockets/websocket_job_unittest.cc
index db3add1..ac67ffd 100644
--- a/net/websockets/websocket_job_unittest.cc
+++ b/net/websockets/websocket_job_unittest.cc
@@ -93,7 +93,7 @@ class MockSocketStreamDelegate : public net::SocketStream::Delegate {
}
virtual int OnStartOpenConnection(net::SocketStream* socket,
- net::OldCompletionCallback* callback) {
+ const net::CompletionCallback& callback) {
if (!on_start_open_connection_.is_null())
on_start_open_connection_.Run();
return net::OK;
diff --git a/net/websockets/websocket_throttle_unittest.cc b/net/websockets/websocket_throttle_unittest.cc
index 909dcf9..4044044 100644
--- a/net/websockets/websocket_throttle_unittest.cc
+++ b/net/websockets/websocket_throttle_unittest.cc
@@ -100,9 +100,9 @@ TEST_F(WebSocketThrottleTest, Throttle) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket1";
- TestOldCompletionCallback callback_s1;
+ TestCompletionCallback callback_s1;
// Trying to open connection to host1 will start without wait.
- EXPECT_EQ(OK, w1->OnStartOpenConnection(s1, &callback_s1));
+ EXPECT_EQ(OK, w1->OnStartOpenConnection(s1, callback_s1.callback()));
// Now connecting to host1, so waiting queue looks like
// Address | head -> tail
@@ -121,9 +121,10 @@ TEST_F(WebSocketThrottleTest, Throttle) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket2";
- TestOldCompletionCallback callback_s2;
+ TestCompletionCallback callback_s2;
// Trying to open connection to host2 will wait for w1.
- EXPECT_EQ(ERR_IO_PENDING, w2->OnStartOpenConnection(s2, &callback_s2));
+ EXPECT_EQ(ERR_IO_PENDING,
+ w2->OnStartOpenConnection(s2, callback_s2.callback()));
// Now waiting queue looks like
// Address | head -> tail
// 1.2.3.4 | w1 w2
@@ -141,9 +142,10 @@ TEST_F(WebSocketThrottleTest, Throttle) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket3";
- TestOldCompletionCallback callback_s3;
+ TestCompletionCallback callback_s3;
// Trying to open connection to host3 will wait for w1.
- EXPECT_EQ(ERR_IO_PENDING, w3->OnStartOpenConnection(s3, &callback_s3));
+ EXPECT_EQ(ERR_IO_PENDING,
+ w3->OnStartOpenConnection(s3, callback_s3.callback()));
// Address | head -> tail
// 1.2.3.4 | w1 w2
// 1.2.3.5 | w1 w3
@@ -161,9 +163,10 @@ TEST_F(WebSocketThrottleTest, Throttle) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket4";
- TestOldCompletionCallback callback_s4;
+ TestCompletionCallback callback_s4;
// Trying to open connection to host4 will wait for w1, w2.
- EXPECT_EQ(ERR_IO_PENDING, w4->OnStartOpenConnection(s4, &callback_s4));
+ EXPECT_EQ(ERR_IO_PENDING,
+ w4->OnStartOpenConnection(s4, callback_s4.callback()));
// Address | head -> tail
// 1.2.3.4 | w1 w2 w4
// 1.2.3.5 | w1 w3
@@ -180,9 +183,10 @@ TEST_F(WebSocketThrottleTest, Throttle) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket5";
- TestOldCompletionCallback callback_s5;
+ TestCompletionCallback callback_s5;
// Trying to open connection to host5 will wait for w1, w4
- EXPECT_EQ(ERR_IO_PENDING, w5->OnStartOpenConnection(s5, &callback_s5));
+ EXPECT_EQ(ERR_IO_PENDING,
+ w5->OnStartOpenConnection(s5, callback_s5.callback()));
// Address | head -> tail
// 1.2.3.4 | w1 w2 w4
// 1.2.3.5 | w1 w3
@@ -199,9 +203,10 @@ TEST_F(WebSocketThrottleTest, Throttle) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket6";
- TestOldCompletionCallback callback_s6;
+ TestCompletionCallback callback_s6;
// Trying to open connection to host6 will wait for w1, w4, w5
- EXPECT_EQ(ERR_IO_PENDING, w6->OnStartOpenConnection(s6, &callback_s6));
+ EXPECT_EQ(ERR_IO_PENDING,
+ w6->OnStartOpenConnection(s6, callback_s6.callback()));
// Address | head -> tail
// 1.2.3.4 | w1 w2 w4
// 1.2.3.5 | w1 w3
@@ -311,9 +316,9 @@ TEST_F(WebSocketThrottleTest, NoThrottleForDuplicateAddress) {
DeleteAddrInfo(addr);
DVLOG(1) << "socket1";
- TestOldCompletionCallback callback_s1;
+ TestCompletionCallback callback_s1;
// Trying to open connection to localhost will start without wait.
- EXPECT_EQ(OK, w1->OnStartOpenConnection(s1, &callback_s1));
+ EXPECT_EQ(OK, w1->OnStartOpenConnection(s1, callback_s1.callback()));
DVLOG(1) << "socket1 close";
w1->OnClose(s1.get());