/* * Copyright 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __VTS_AGENT_REQUEST_HANDLER_H__ #define __VTS_AGENT_REQUEST_HANDLER_H__ #include #include "SocketClientToDriver.h" #include "test/vts/proto/AndroidSystemControlMessage.pb.h" #include "test/vts/proto/VtsDriverControlMessage.pb.h" namespace android { namespace vts { // Class which contains actual methods to handle the runner requests. class AgentRequestHandler : public VtsDriverCommUtil { public: AgentRequestHandler(const char* spec_dir_path, const char* hal_path32, const char* hal_path64, const char* shell_path32, const char* shell_path64) : VtsDriverCommUtil(), service_name_(), driver_client_(NULL), driver_hal_spec_dir_path_(spec_dir_path), driver_hal_binary32_(hal_path32), driver_hal_binary64_(hal_path64), driver_shell_binary32_(shell_path32), driver_shell_binary64_(shell_path64) {} // handles a new session. bool ProcessOneCommand(); protected: // for the LIST_HAL command bool ListHals(const ::google::protobuf::RepeatedPtrField& base_paths); // for the SET_HOST_INFO command. bool SetHostInfo(const int callback_port); // for the CHECK_DRIVER_SERVICE command bool CheckDriverService(const string& service_name, bool* live); // for the LAUNCH_DRIVER_SERVICE command bool LaunchDriverService( const AndroidSystemControlCommandMessage& command_msg); // for the VTS_AGENT_COMMAND_READ_SPECIFICATION` bool ReadSpecification( const AndroidSystemControlCommandMessage& command_message); // for the LIST_APIS command bool ListApis(); // for the CALL_API command bool CallApi(const string& call_payload, const string& uid); // for the VTS_AGENT_COMMAND_GET_ATTRIBUTE bool GetAttribute(const string& payload); // for the EXECUTE_SHELL command bool ExecuteShellCommand( const AndroidSystemControlCommandMessage& command_message); // Returns a default response message. bool DefaultResponse(); // Send SUCCESS response with given result and/or spec if it is not empty, // otherwise send FAIL. bool SendApiResult(const string& func_name, const string& result, const string& spec = ""); // for processing commands for FMQ. bool ProcessFmqCommand( const AndroidSystemControlCommandMessage& command_message); // for processing commands for hidl_memory. bool ProcessHidlMemoryCommand( const AndroidSystemControlCommandMessage& command_message); // for processing commands for hidl_handle. bool ProcessHidlHandleCommand( const AndroidSystemControlCommandMessage& command_message); protected: // the currently opened, connected service name. string service_name_; // the port number of a host-side callback server. int callback_port_; // the socket client of a launched or connected driver. VtsDriverSocketClient* driver_client_; void CreateSystemControlResponseFromDriverControlResponse( const VtsDriverControlResponseMessage& driver_control_response_message, AndroidSystemControlResponseMessage* system_control_response_message); const string driver_hal_spec_dir_path_; const string driver_hal_binary32_; const string driver_hal_binary64_; const string driver_shell_binary32_; const string driver_shell_binary64_; }; } // namespace vts } // namespace android #endif