| Index: remoting/protocol/stream_message_pipe_adapter.cc
|
| diff --git a/remoting/protocol/stream_message_pipe_adapter.cc b/remoting/protocol/stream_message_pipe_adapter.cc
|
| index a16019f21d737f69057435c6fe81b9cfdd7d01cd..08da24251df0309a385a3a6f79b812c7b97511bb 100644
|
| --- a/remoting/protocol/stream_message_pipe_adapter.cc
|
| +++ b/remoting/protocol/stream_message_pipe_adapter.cc
|
| @@ -22,27 +22,31 @@ namespace protocol {
|
| StreamMessagePipeAdapter::StreamMessagePipeAdapter(
|
| std::unique_ptr<P2PStreamSocket> socket,
|
| const ErrorCallback& error_callback)
|
| - : socket_(std::move(socket)),
|
| - error_callback_(error_callback),
|
| - writer_(new BufferedSocketWriter()) {
|
| + : socket_(std::move(socket)), error_callback_(error_callback) {
|
| DCHECK(socket_);
|
| - DCHECK(!error_callback_.is_null());
|
| + DCHECK(error_callback_);
|
| +}
|
| +
|
| +StreamMessagePipeAdapter::~StreamMessagePipeAdapter() {}
|
| +
|
| +void StreamMessagePipeAdapter::Start(EventHandler* event_handler) {
|
| + DCHECK(event_handler);
|
| + event_handler_ = event_handler;
|
|
|
| + writer_ = base::MakeUnique<BufferedSocketWriter>();
|
| writer_->Start(
|
| base::Bind(&P2PStreamSocket::Write, base::Unretained(socket_.get())),
|
| base::Bind(&StreamMessagePipeAdapter::CloseOnError,
|
| base::Unretained(this)));
|
| -}
|
|
|
| -StreamMessagePipeAdapter::~StreamMessagePipeAdapter() {}
|
| + reader_ = base::MakeUnique<MessageReader>();
|
| + reader_->StartReading(socket_.get(),
|
| + base::Bind(&EventHandler::OnMessageReceived,
|
| + base::Unretained(event_handler_)),
|
| + base::Bind(&StreamMessagePipeAdapter::CloseOnError,
|
| + base::Unretained(this)));
|
|
|
| -void StreamMessagePipeAdapter::Start(EventHandler* event_handler) {
|
| - reader_.StartReading(socket_.get(),
|
| - base::Bind(&EventHandler::OnMessageReceived,
|
| - base::Unretained(event_handler)),
|
| - base::Bind(&StreamMessagePipeAdapter::CloseOnError,
|
| - base::Unretained(this)));
|
| - event_handler->OnMessagePipeOpen();
|
| + event_handler_->OnMessagePipeOpen();
|
| }
|
|
|
| void StreamMessagePipeAdapter::Send(google::protobuf::MessageLite* message,
|
| @@ -52,11 +56,15 @@ void StreamMessagePipeAdapter::Send(google::protobuf::MessageLite* message,
|
| }
|
|
|
| void StreamMessagePipeAdapter::CloseOnError(int error) {
|
| - // Stop writing on error.
|
| + // Stop reading and writing on error.
|
| writer_.reset();
|
| + reader_.reset();
|
|
|
| - if (!error_callback_.is_null())
|
| + if (error == 0) {
|
| + event_handler_->OnMessagePipeClosed();
|
| + } else if (error_callback_) {
|
| base::ResetAndReturn(&error_callback_).Run(error);
|
| + }
|
| }
|
|
|
| StreamMessageChannelFactoryAdapter::StreamMessageChannelFactoryAdapter(
|
|
|