diff options
author | yutak@chromium.org <yutak@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-01 06:47:32 +0000 |
---|---|---|
committer | yutak@chromium.org <yutak@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-01 06:47:32 +0000 |
commit | 056df82a008ff3120c4fda5d84b0fbc645fd73e0 (patch) | |
tree | f808bd7db875ea06fd067d28b4244e954f2fb1e1 /net/websockets | |
parent | 41517b9911563e2a62647aba006118a2b9757718 (diff) | |
download | chromium_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.cc | 27 | ||||
-rw-r--r-- | net/websockets/websocket_job.h | 4 | ||||
-rw-r--r-- | net/websockets/websocket_job_unittest.cc | 2 | ||||
-rw-r--r-- | net/websockets/websocket_throttle_unittest.cc | 33 |
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()); |