Revert of Revert of Roll android_tools f6e2370:2a860d8 (patchset #1 id:1 of https...
[chromium-blink-merge.git] / remoting / protocol / host_event_dispatcher.h
blob3f1bd88c81ba30a6c8ad81e3903c02f329046f00
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef REMOTING_PROTOCOL_HOST_EVENT_DISPATCHER_H_
6 #define REMOTING_PROTOCOL_HOST_EVENT_DISPATCHER_H_
8 #include "remoting/protocol/channel_dispatcher_base.h"
9 #include "remoting/protocol/protobuf_message_parser.h"
11 namespace remoting {
12 namespace protocol {
14 class EventMessage;
15 class InputStub;
17 // HostEventDispatcher dispatches incoming messages on the event
18 // channel to InputStub.
19 class HostEventDispatcher : public ChannelDispatcherBase {
20 public:
21 typedef base::Callback<void(int64)> EventTimestampCallback;
23 HostEventDispatcher();
24 ~HostEventDispatcher() override;
26 // Set InputStub that will be called for each incoming input
27 // message. Doesn't take ownership of |input_stub|. It must outlive
28 // the dispatcher.
29 void set_input_stub(InputStub* input_stub) { input_stub_ = input_stub; }
31 // Set callback to notify of each message's sequence number. The
32 // callback cannot tear down this object.
33 void set_event_timestamp_callback(const EventTimestampCallback& value) {
34 event_timestamp_callback_ = value;
37 private:
38 void OnMessageReceived(scoped_ptr<EventMessage> message,
39 const base::Closure& done_task);
41 InputStub* input_stub_;
42 EventTimestampCallback event_timestamp_callback_;
44 ProtobufMessageParser<EventMessage> parser_;
46 DISALLOW_COPY_AND_ASSIGN(HostEventDispatcher);
49 } // namespace protocol
50 } // namespace remoting
52 #endif // REMOTING_PROTOCOL_HOST_EVENT_DISPATCHER_H_