| Index: remoting/jingle_glue/ssl_socket_adapter.cc
|
| diff --git a/remoting/jingle_glue/ssl_socket_adapter.cc b/remoting/jingle_glue/ssl_socket_adapter.cc
|
| index 7414c4b032a38e4015a1a6f8e0424509e6610f29..5bf2f737bcf3e1c6e67556364d2ba1621e039846 100644
|
| --- a/remoting/jingle_glue/ssl_socket_adapter.cc
|
| +++ b/remoting/jingle_glue/ssl_socket_adapter.cc
|
| @@ -27,12 +27,6 @@ SSLSocketAdapter::SSLSocketAdapter(AsyncSocket* socket)
|
| : SSLAdapter(socket),
|
| ignore_bad_cert_(false),
|
| cert_verifier_(new net::CertVerifier()),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(
|
| - connected_callback_(this, &SSLSocketAdapter::OnConnected)),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(
|
| - read_callback_(this, &SSLSocketAdapter::OnRead)),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(
|
| - write_callback_(this, &SSLSocketAdapter::OnWrite)),
|
| ssl_state_(SSLSTATE_NONE),
|
| read_state_(IOSTATE_NONE),
|
| write_state_(IOSTATE_NONE) {
|
| @@ -77,7 +71,8 @@ int SSLSocketAdapter::BeginSSL() {
|
| transport_socket_, net::HostPortPair(hostname_, 443), ssl_config,
|
| NULL /* ssl_host_info */, context));
|
|
|
| - int result = ssl_socket_->Connect(&connected_callback_);
|
| + int result = ssl_socket_->Connect(
|
| + base::Bind(&SSLSocketAdapter::OnConnected, base::Unretained(this)));
|
|
|
| if (result == net::ERR_IO_PENDING || result == net::OK) {
|
| return 0;
|
| @@ -94,7 +89,8 @@ int SSLSocketAdapter::Send(const void* buf, size_t len) {
|
| scoped_refptr<net::IOBuffer> transport_buf(new net::IOBuffer(len));
|
| memcpy(transport_buf->data(), buf, len);
|
|
|
| - int result = ssl_socket_->Write(transport_buf, len, NULL);
|
| + int result = ssl_socket_->Write(transport_buf, len,
|
| + net::CompletionCallback());
|
| if (result == net::ERR_IO_PENDING) {
|
| SetError(EWOULDBLOCK);
|
| }
|
| @@ -116,7 +112,9 @@ int SSLSocketAdapter::Recv(void* buf, size_t len) {
|
| switch (read_state_) {
|
| case IOSTATE_NONE: {
|
| transport_buf_ = new net::IOBuffer(len);
|
| - int result = ssl_socket_->Read(transport_buf_, len, &read_callback_);
|
| + int result = ssl_socket_->Read(
|
| + transport_buf_, len,
|
| + base::Bind(&SSLSocketAdapter::OnRead, base::Unretained(this)));
|
| if (result >= 0) {
|
| memcpy(buf, transport_buf_->data(), len);
|
| }
|
| @@ -187,9 +185,7 @@ void SSLSocketAdapter::OnConnectEvent(talk_base::AsyncSocket* socket) {
|
|
|
| TransportSocket::TransportSocket(talk_base::AsyncSocket* socket,
|
| SSLSocketAdapter *ssl_adapter)
|
| - : old_read_callback_(NULL),
|
| - write_callback_(NULL),
|
| - read_buffer_len_(0),
|
| + : read_buffer_len_(0),
|
| write_buffer_len_(0),
|
| socket_(socket),
|
| was_used_to_convey_data_(false) {
|
| @@ -200,12 +196,6 @@ TransportSocket::TransportSocket(talk_base::AsyncSocket* socket,
|
| TransportSocket::~TransportSocket() {
|
| }
|
|
|
| -int TransportSocket::Connect(net::OldCompletionCallback* callback) {
|
| - // Connect is never called by SSLClientSocket, instead SSLSocketAdapter
|
| - // calls Connect() on socket_ directly.
|
| - NOTREACHED();
|
| - return false;
|
| -}
|
| int TransportSocket::Connect(const net::CompletionCallback& callback) {
|
| // Connect is never called by SSLClientSocket, instead SSLSocketAdapter
|
| // calls Connect() on socket_ directly.
|
| @@ -288,27 +278,9 @@ base::TimeDelta TransportSocket::GetConnectTimeMicros() const {
|
| }
|
|
|
| int TransportSocket::Read(net::IOBuffer* buf, int buf_len,
|
| - net::OldCompletionCallback* callback) {
|
| - DCHECK(buf);
|
| - DCHECK(!old_read_callback_ && read_callback_.is_null());
|
| - DCHECK(!read_buffer_.get());
|
| - int result = socket_->Recv(buf->data(), buf_len);
|
| - if (result < 0) {
|
| - result = net::MapSystemError(socket_->GetError());
|
| - if (result == net::ERR_IO_PENDING) {
|
| - old_read_callback_ = callback;
|
| - read_buffer_ = buf;
|
| - read_buffer_len_ = buf_len;
|
| - }
|
| - }
|
| - if (result != net::ERR_IO_PENDING)
|
| - was_used_to_convey_data_ = true;
|
| - return result;
|
| -}
|
| -int TransportSocket::Read(net::IOBuffer* buf, int buf_len,
|
| const net::CompletionCallback& callback) {
|
| DCHECK(buf);
|
| - DCHECK(!old_read_callback_ && read_callback_.is_null());
|
| + DCHECK(read_callback_.is_null());
|
| DCHECK(!read_buffer_.get());
|
| int result = socket_->Recv(buf->data(), buf_len);
|
| if (result < 0) {
|
| @@ -325,9 +297,9 @@ int TransportSocket::Read(net::IOBuffer* buf, int buf_len,
|
| }
|
|
|
| int TransportSocket::Write(net::IOBuffer* buf, int buf_len,
|
| - net::OldCompletionCallback* callback) {
|
| + const net::CompletionCallback& callback) {
|
| DCHECK(buf);
|
| - DCHECK(!write_callback_);
|
| + DCHECK(write_callback_.is_null());
|
| DCHECK(!write_buffer_.get());
|
| int result = socket_->Send(buf->data(), buf_len);
|
| if (result < 0) {
|
| @@ -354,14 +326,12 @@ bool TransportSocket::SetSendBufferSize(int32 size) {
|
| }
|
|
|
| void TransportSocket::OnReadEvent(talk_base::AsyncSocket* socket) {
|
| - if (old_read_callback_ || !read_callback_.is_null()) {
|
| + if (!read_callback_.is_null()) {
|
| DCHECK(read_buffer_.get());
|
| - net::OldCompletionCallback* old_callback = old_read_callback_;
|
| net::CompletionCallback callback = read_callback_;
|
| scoped_refptr<net::IOBuffer> buffer = read_buffer_;
|
| int buffer_len = read_buffer_len_;
|
|
|
| - old_read_callback_ = NULL;
|
| read_callback_.Reset();
|
| read_buffer_ = NULL;
|
| read_buffer_len_ = 0;
|
| @@ -370,7 +340,6 @@ void TransportSocket::OnReadEvent(talk_base::AsyncSocket* socket) {
|
| if (result < 0) {
|
| result = net::MapSystemError(socket_->GetError());
|
| if (result == net::ERR_IO_PENDING) {
|
| - old_read_callback_ = old_callback;
|
| read_callback_ = callback;
|
| read_buffer_ = buffer;
|
| read_buffer_len_ = buffer_len;
|
| @@ -378,21 +347,18 @@ void TransportSocket::OnReadEvent(talk_base::AsyncSocket* socket) {
|
| }
|
| }
|
| was_used_to_convey_data_ = true;
|
| - if (old_callback)
|
| - old_callback->RunWithParams(Tuple1<int>(result));
|
| - else
|
| - callback.Run(result);
|
| + callback.Run(result);
|
| }
|
| }
|
|
|
| void TransportSocket::OnWriteEvent(talk_base::AsyncSocket* socket) {
|
| - if (write_callback_) {
|
| + if (!write_callback_.is_null()) {
|
| DCHECK(write_buffer_.get());
|
| - net::OldCompletionCallback* callback = write_callback_;
|
| + net::CompletionCallback callback = write_callback_;
|
| scoped_refptr<net::IOBuffer> buffer = write_buffer_;
|
| int buffer_len = write_buffer_len_;
|
|
|
| - write_callback_ = NULL;
|
| + write_callback_.Reset();
|
| write_buffer_ = NULL;
|
| write_buffer_len_ = 0;
|
|
|
| @@ -407,7 +373,7 @@ void TransportSocket::OnWriteEvent(talk_base::AsyncSocket* socket) {
|
| }
|
| }
|
| was_used_to_convey_data_ = true;
|
| - callback->RunWithParams(Tuple1<int>(result));
|
| + callback.Run(result);
|
| }
|
| }
|
|
|
|
|