chromium/tools/android/forwarder2/command.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TOOLS_ANDROID_FORWARDER2_COMMAND_H_
#define TOOLS_ANDROID_FORWARDER2_COMMAND_H_


namespace forwarder2 {

class Socket;

namespace command {

enum Type {
  ACCEPT_ERROR = 0,
  ACCEPT_SUCCESS,
  ACK,
  ADB_DATA_SOCKET_ERROR,
  ADB_DATA_SOCKET_SUCCESS,
  BIND_ERROR,
  BIND_SUCCESS,
  DATA_CONNECTION,
  HOST_SERVER_ERROR,
  HOST_SERVER_SUCCESS,
  KILL_ALL_LISTENERS,
  LISTEN,
  UNLISTEN,
  UNLISTEN_ERROR,
  UNLISTEN_SUCCESS,
};

}  // namespace command

bool ReadCommand(Socket* socket,
                 int* port_out,
                 command::Type* command_type_out);

bool ReadCommandWithTimeout(Socket* socket,
                            int* port_out,
                            command::Type* command_type_out,
                            int timeout_secs);

// Helper function to read the command from the |socket| and return true if the
// |command| is equal to the given command parameter.
bool ReceivedCommand(command::Type command, Socket* socket);

bool ReceivedCommandWithTimeout(command::Type command,
                                Socket* socket,
                                int timeout_secs);

bool SendCommand(command::Type command, int port, Socket* socket);

}  // namespace forwarder

#endif  // TOOLS_ANDROID_FORWARDER2_COMMAND_H_