blob: 251fb466affd932058d54f31502a7e873c870fd3 [file] [log] [blame]
Joe Downingb511e4a92018-11-16 21:10:131// Copyright 2018 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.
4
5#ifndef REMOTING_HOST_ACTION_MESSAGE_HANDLER_H_
6#define REMOTING_HOST_ACTION_MESSAGE_HANDLER_H_
7
8#include <memory>
9#include <string>
10#include <vector>
11
12#include "base/containers/flat_set.h"
13#include "base/macros.h"
14#include "remoting/proto/action.pb.h"
15#include "remoting/protocol/named_message_pipe_handler.h"
16
17namespace remoting {
18
19class ActionExecutor;
20
21constexpr char kActionDataChannelPrefix[] = "actions";
22
23class ActionMessageHandler : public protocol::NamedMessagePipeHandler {
24 public:
25 ActionMessageHandler(
26 const std::string& name,
27 const std::vector<protocol::ActionRequest::Action>& actions,
28 std::unique_ptr<protocol::MessagePipe> pipe,
29 std::unique_ptr<ActionExecutor> action_executor);
30 ~ActionMessageHandler() override;
31
32 // protocol::NamedMessagePipeHandler implementation.
33 void OnIncomingMessage(std::unique_ptr<CompoundBuffer> message) override;
34
35 private:
36 std::unique_ptr<ActionExecutor> action_executor_;
37
38 // Populated via the negotiated capabilities between host and client.
39 base::flat_set<protocol::ActionRequest::Action> supported_actions_;
40
41 DISALLOW_COPY_AND_ASSIGN(ActionMessageHandler);
42};
43
44} // namespace remoting
45
46#endif // REMOTING_HOST_ACTION_MESSAGE_HANDLER_H_