| Index: remoting/protocol/buffered_socket_writer.cc
|
| diff --git a/remoting/protocol/buffered_socket_writer.cc b/remoting/protocol/buffered_socket_writer.cc
|
| index c89a50ed9af4c66b24a35ae2e4dfaa6623313902..ce8dd87b3458ccceeaa18d457f19231d9a2ef911 100644
|
| --- a/remoting/protocol/buffered_socket_writer.cc
|
| +++ b/remoting/protocol/buffered_socket_writer.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "remoting/protocol/buffered_socket_writer.h"
|
|
|
| +#include "base/bind.h"
|
| #include "base/location.h"
|
| #include "base/message_loop_proxy.h"
|
| #include "base/stl_util.h"
|
| @@ -14,13 +15,14 @@ namespace protocol {
|
|
|
| class BufferedSocketWriterBase::PendingPacket {
|
| public:
|
| - PendingPacket(scoped_refptr<net::IOBufferWithSize> data, Task* done_task)
|
| + PendingPacket(scoped_refptr<net::IOBufferWithSize> data,
|
| + const base::Closure& done_task)
|
| : data_(data),
|
| done_task_(done_task) {
|
| }
|
| ~PendingPacket() {
|
| - if (done_task_.get())
|
| - done_task_->Run();
|
| + if (!done_task_.is_null())
|
| + done_task_.Run();
|
| }
|
|
|
| net::IOBufferWithSize* data() {
|
| @@ -29,7 +31,7 @@ class BufferedSocketWriterBase::PendingPacket {
|
|
|
| private:
|
| scoped_refptr<net::IOBufferWithSize> data_;
|
| - scoped_ptr<Task> done_task_;
|
| + base::Closure done_task_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PendingPacket);
|
| };
|
| @@ -48,22 +50,22 @@ BufferedSocketWriterBase::BufferedSocketWriterBase(
|
| BufferedSocketWriterBase::~BufferedSocketWriterBase() { }
|
|
|
| void BufferedSocketWriterBase::Init(net::Socket* socket,
|
| - WriteFailedCallback* callback) {
|
| - // TODO(garykac) Save copy of WriteFailedCallback.
|
| - base::AutoLock auto_lock(lock_);
|
| + const WriteFailedCallback& callback) {
|
| + DCHECK(message_loop_->BelongsToCurrentThread());
|
| + DCHECK(socket);
|
| socket_ = socket;
|
| - DCHECK(socket_);
|
| + write_failed_callback_ = callback;
|
| }
|
|
|
| bool BufferedSocketWriterBase::Write(
|
| - scoped_refptr<net::IOBufferWithSize> data, Task* done_task) {
|
| + scoped_refptr<net::IOBufferWithSize> data, const base::Closure& done_task) {
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| queue_.push_back(new PendingPacket(data, done_task));
|
| buffer_size_ += data->size();
|
| }
|
| message_loop_->PostTask(
|
| - FROM_HERE, NewRunnableMethod(this, &BufferedSocketWriterBase::DoWrite));
|
| + FROM_HERE, base::Bind(&BufferedSocketWriterBase::DoWrite, this));
|
| return true;
|
| }
|
|
|
| @@ -101,8 +103,8 @@ void BufferedSocketWriterBase::DoWrite() {
|
| write_pending_ = true;
|
| } else {
|
| HandleError(result);
|
| - if (write_failed_callback_.get())
|
| - write_failed_callback_->Run(result);
|
| + if (!write_failed_callback_.is_null())
|
| + write_failed_callback_.Run(result);
|
| }
|
| return;
|
| }
|
| @@ -115,8 +117,8 @@ void BufferedSocketWriterBase::OnWritten(int result) {
|
|
|
| if (result < 0) {
|
| HandleError(result);
|
| - if (write_failed_callback_.get())
|
| - write_failed_callback_->Run(result);
|
| + if (!write_failed_callback_.is_null())
|
| + write_failed_callback_.Run(result);
|
| return;
|
| }
|
|
|
|
|