| Index: remoting/protocol/channel_dispatcher_base.h
|
| diff --git a/remoting/protocol/channel_dispatcher_base.h b/remoting/protocol/channel_dispatcher_base.h
|
| index 1d97a61d9629f7a9ab5d837a0cb0b8512e883d11..b22548fabfa9d84636405f50248554df1211c2ec 100644
|
| --- a/remoting/protocol/channel_dispatcher_base.h
|
| +++ b/remoting/protocol/channel_dispatcher_base.h
|
| @@ -11,6 +11,7 @@
|
| #include "base/callback.h"
|
| #include "base/macros.h"
|
| #include "remoting/protocol/errors.h"
|
| +#include "remoting/protocol/message_pipe.h"
|
|
|
| namespace remoting {
|
|
|
| @@ -19,34 +20,40 @@ class CompoundBuffer;
|
| namespace protocol {
|
|
|
| class MessageChannelFactory;
|
| -class MessagePipe;
|
|
|
| // Base class for channel message dispatchers. It's responsible for
|
| // creating the named channel. Derived dispatchers then dispatch
|
| // incoming messages on this channel as well as send outgoing
|
| // messages.
|
| -class ChannelDispatcherBase {
|
| +class ChannelDispatcherBase : public MessagePipe::EventHandler {
|
| public:
|
| class EventHandler {
|
| public:
|
| EventHandler() {}
|
| virtual ~EventHandler() {}
|
|
|
| + // Called after the channel is initialized.
|
| virtual void OnChannelInitialized(
|
| ChannelDispatcherBase* channel_dispatcher) = 0;
|
| +
|
| + // Called after the channel is closed.
|
| + virtual void OnChannelClosed(ChannelDispatcherBase* channel_dispatcher) = 0;
|
| };
|
|
|
| // The callback is called when initialization is finished. The
|
| // parameter is set to true on success.
|
| typedef base::Callback<void(bool)> InitializedCallback;
|
|
|
| - virtual ~ChannelDispatcherBase();
|
| + ~ChannelDispatcherBase() override;
|
|
|
| - // Creates and connects the channel in the specified
|
| - // |session|. Caller retains ownership of the Session.
|
| + // Creates and connects the channel using |channel_factory|.
|
| void Init(MessageChannelFactory* channel_factory,
|
| EventHandler* event_handler);
|
|
|
| + // Initializes the channel using |message_pipe| that's already connected.
|
| + void Init(std::unique_ptr<MessagePipe> message_pipe,
|
| + EventHandler* event_handler);
|
| +
|
| const std::string& channel_name() { return channel_name_; }
|
|
|
| // Returns true if the channel is currently connected.
|
| @@ -62,7 +69,10 @@ class ChannelDispatcherBase {
|
|
|
| private:
|
| void OnChannelReady(std::unique_ptr<MessagePipe> message_pipe);
|
| - void OnPipeError(int error);
|
| +
|
| + // MessagePipe::EventHandler interface.
|
| + void OnMessageReceived(std::unique_ptr<CompoundBuffer> message) override;
|
| + void OnMessagePipeClosed() override;
|
|
|
| std::string channel_name_;
|
| MessageChannelFactory* channel_factory_ = nullptr;
|
|
|