15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef TOOLS_ANDROID_FORWARDER2_COMMAND_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TOOLS_ANDROID_FORWARDER2_COMMAND_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace forwarder2 {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Socket;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace command {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum Type {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ACCEPT_ERROR = 0,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ACCEPT_SUCCESS,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ACK,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ADB_DATA_SOCKET_ERROR,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ADB_DATA_SOCKET_SUCCESS,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BIND_ERROR,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BIND_SUCCESS,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DATA_CONNECTION,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HOST_SERVER_ERROR,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HOST_SERVER_SUCCESS,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  KILL_ALL_LISTENERS,
28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  LISTEN,
29d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch  UNLISTEN,
30d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch  UNLISTEN_ERROR,
31d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch  UNLISTEN_SUCCESS,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace command
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ReadCommand(Socket* socket,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 int* port_out,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 command::Type* command_type_out);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper function to read the command from the |socket| and return true if the
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |command| is equal to the given command parameter.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ReceivedCommand(command::Type command, Socket* socket);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SendCommand(command::Type command, int port, Socket* socket);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace forwarder
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // TOOLS_ANDROID_FORWARDER2_COMMAND_H_
49