Index: remoting/base/buffered_socket_writer.cc |
diff --git a/remoting/base/buffered_socket_writer.cc b/remoting/base/buffered_socket_writer.cc |
index 8213f40a887ac70aabcd391798f6b2493e029958..66d724aff19ed614a0e74f63fbcae0df552c36e4 100644 |
--- a/remoting/base/buffered_socket_writer.cc |
+++ b/remoting/base/buffered_socket_writer.cc |
@@ -25,24 +25,23 @@ struct BufferedSocketWriterBase::PendingPacket { |
}; |
BufferedSocketWriterBase::BufferedSocketWriterBase() |
- : socket_(nullptr), |
- write_pending_(false), |
+ : write_pending_(false), |
closed_(false), |
destroyed_flag_(nullptr) { |
} |
-void BufferedSocketWriterBase::Init(net::Socket* socket, |
- const WriteFailedCallback& callback) { |
+void BufferedSocketWriterBase::Init( |
+ const WriteCallback& write_callback, |
+ const WriteFailedCallback& write_failed_callback) { |
DCHECK(CalledOnValidThread()); |
- DCHECK(socket); |
- socket_ = socket; |
- write_failed_callback_ = callback; |
+ DCHECK(write_callback_.is_null()); |
+ write_callback_ = write_callback; |
+ write_failed_callback_ = write_failed_callback; |
} |
bool BufferedSocketWriterBase::Write( |
scoped_refptr<net::IOBufferWithSize> data, const base::Closure& done_task) { |
DCHECK(CalledOnValidThread()); |
- DCHECK(socket_); |
DCHECK(data.get()); |
// Don't write after Close(). |
@@ -59,7 +58,7 @@ bool BufferedSocketWriterBase::Write( |
void BufferedSocketWriterBase::DoWrite() { |
DCHECK(CalledOnValidThread()); |
- DCHECK(socket_); |
+ DCHECK(!write_callback_.is_null()); |
// Don't try to write if there is another write pending. |
if (write_pending_) |
@@ -78,10 +77,10 @@ void BufferedSocketWriterBase::DoWrite() { |
if (!current_packet) |
return; |
- int result = socket_->Write( |
- current_packet, current_packet_size, |
- base::Bind(&BufferedSocketWriterBase::OnWritten, |
- base::Unretained(this))); |
+ int result = |
+ write_callback_.Run(current_packet, current_packet_size, |
+ base::Bind(&BufferedSocketWriterBase::OnWritten, |
+ base::Unretained(this))); |
bool write_again = false; |
HandleWriteResult(result, &write_again); |
if (!write_again) |