| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // 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_ | 
 |  | 
 | #include "base/basictypes.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); | 
 |  | 
 | // 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 SendCommand(command::Type command, int port, Socket* socket); | 
 |  | 
 | }  // namespace forwarder | 
 |  | 
 | #endif  // TOOLS_ANDROID_FORWARDER2_COMMAND_H_ |