// 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_