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.
4
5#ifndef TOOLS_ANDROID_FORWARDER2_COMMAND_H_
6#define TOOLS_ANDROID_FORWARDER2_COMMAND_H_
7
8#include "base/basictypes.h"
9
10namespace forwarder2 {
11
12class Socket;
13
14namespace command {
15
16enum Type {
17  ACCEPT_ERROR = 0,
18  ACCEPT_SUCCESS,
19  ACK,
20  ADB_DATA_SOCKET_ERROR,
21  ADB_DATA_SOCKET_SUCCESS,
22  BIND_ERROR,
23  BIND_SUCCESS,
24  DATA_CONNECTION,
25  HOST_SERVER_ERROR,
26  HOST_SERVER_SUCCESS,
27  KILL_ALL_LISTENERS,
28  LISTEN,
29  UNLISTEN,
30  UNLISTEN_ERROR,
31  UNLISTEN_SUCCESS,
32};
33
34}  // namespace command
35
36bool ReadCommand(Socket* socket,
37                 int* port_out,
38                 command::Type* command_type_out);
39
40// Helper function to read the command from the |socket| and return true if the
41// |command| is equal to the given command parameter.
42bool ReceivedCommand(command::Type command, Socket* socket);
43
44bool SendCommand(command::Type command, int port, Socket* socket);
45
46}  // namespace forwarder
47
48#endif  // TOOLS_ANDROID_FORWARDER2_COMMAND_H_
49