diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-07 02:03:33 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-07 02:03:33 +0000 |
commit | 3f55aa10587b3eaa629d7e95de87998b399fe3e2 (patch) | |
tree | 0f407a7e7fc837bed337a9a5af787edbd9473ef6 /net/socket/ssl_server_socket_unittest.cc | |
parent | b456003a580041d83e7f5a998c15f62ce380560f (diff) | |
download | chromium_src-3f55aa10587b3eaa629d7e95de87998b399fe3e2.zip chromium_src-3f55aa10587b3eaa629d7e95de87998b399fe3e2.tar.gz chromium_src-3f55aa10587b3eaa629d7e95de87998b399fe3e2.tar.bz2 |
base::Bind: Convert Socket::Read.
BUG=none
TEST=none
R=csilv
Review URL: http://codereview.chromium.org/8801005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113326 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/ssl_server_socket_unittest.cc')
-rw-r--r-- | net/socket/ssl_server_socket_unittest.cc | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/net/socket/ssl_server_socket_unittest.cc b/net/socket/ssl_server_socket_unittest.cc index 5af50f8..eb9dc7c 100644 --- a/net/socket/ssl_server_socket_unittest.cc +++ b/net/socket/ssl_server_socket_unittest.cc @@ -51,7 +51,7 @@ namespace { class FakeDataChannel { public: FakeDataChannel() - : read_callback_(NULL), + : old_read_callback_(NULL), read_buf_len_(0), ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)) { } @@ -59,6 +59,16 @@ class FakeDataChannel { virtual int Read(IOBuffer* buf, int buf_len, OldCompletionCallback* callback) { if (data_.empty()) { + old_read_callback_ = callback; + read_buf_ = buf; + read_buf_len_ = buf_len; + return net::ERR_IO_PENDING; + } + return PropogateData(buf, buf_len); + } + virtual int Read(IOBuffer* buf, int buf_len, + const CompletionCallback& callback) { + if (data_.empty()) { read_callback_ = callback; read_buf_ = buf; read_buf_len_ = buf_len; @@ -78,15 +88,23 @@ class FakeDataChannel { private: void DoReadCallback() { - if (!read_callback_ || data_.empty()) + if ((!old_read_callback_ && read_callback_.is_null()) || data_.empty()) return; int copied = PropogateData(read_buf_, read_buf_len_); - net::OldCompletionCallback* callback = read_callback_; - read_callback_ = NULL; - read_buf_ = NULL; - read_buf_len_ = 0; - callback->Run(copied); + if (old_read_callback_) { + net::OldCompletionCallback* callback = old_read_callback_; + old_read_callback_ = NULL; + read_buf_ = NULL; + read_buf_len_ = 0; + callback->Run(copied); + } else { + net::CompletionCallback callback = read_callback_; + read_callback_.Reset(); + read_buf_ = NULL; + read_buf_len_ = 0; + callback.Run(copied); + } } int PropogateData(scoped_refptr<net::IOBuffer> read_buf, int read_buf_len) { @@ -100,7 +118,8 @@ class FakeDataChannel { return copied; } - net::OldCompletionCallback* read_callback_; + net::OldCompletionCallback* old_read_callback_; + net::CompletionCallback read_callback_; scoped_refptr<net::IOBuffer> read_buf_; int read_buf_len_; @@ -128,6 +147,12 @@ class FakeSocket : public StreamSocket { buf_len = rand() % buf_len + 1; return incoming_->Read(buf, buf_len, callback); } + virtual int Read(IOBuffer* buf, int buf_len, + const CompletionCallback& callback) { + // Read random number of bytes. + buf_len = rand() % buf_len + 1; + return incoming_->Read(buf, buf_len, callback); + } virtual int Write(IOBuffer* buf, int buf_len, OldCompletionCallback* callback) { |