telemetry: Support custom 'out' directory
[chromium-blink-merge.git] / remoting / protocol / host_event_dispatcher.h
blobe5d1a46313aa8319829dba96028002f61286f583
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/message_reader.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)> SequenceNumberCallback;
23 HostEventDispatcher();
24 virtual ~HostEventDispatcher();
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_sequence_number_callback(const SequenceNumberCallback& value) {
34 sequence_number_callback_ = value;
37 protected:
38 // ChannelDispatcherBase overrides.
39 virtual void OnInitialized() OVERRIDE;
41 private:
42 void OnMessageReceived(scoped_ptr<EventMessage> message,
43 const base::Closure& done_task);
45 InputStub* input_stub_;
46 SequenceNumberCallback sequence_number_callback_;
48 ProtobufMessageReader<EventMessage> reader_;
50 DISALLOW_COPY_AND_ASSIGN(HostEventDispatcher);
53 } // namespace protocol
54 } // namespace remoting
56 #endif // REMOTING_PROTOCOL_HOST_EVENT_DISPATCHER_H_