Chromium Code Reviews| 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..8dc488418603bd811ffe8d2a2b7e26e06c44a652 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()); |
| +} |
| + |
| +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_.is_null()) { |
|
joedow
2017/03/17 15:13:28
nit:
replace
if (!error_callback_.is_null())
Sergey Ulanov
2017/03/17 18:18:22
Done.
|
| base::ResetAndReturn(&error_callback_).Run(error); |
| + } |
| } |
| StreamMessageChannelFactoryAdapter::StreamMessageChannelFactoryAdapter( |