From 86acb863ff68128e7da050714f69753f2921fa05 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Wed, 25 Jul 2018 16:07:26 -0700 Subject: [PATCH] adb: split shell_service.h into client/daemon/protocol parts. Test: treehugger Change-Id: I67042f6b29a8a07619b8d56e7376d49b956a840c --- adb/client/commandline.cpp | 2 +- adb/daemon/shell_service.cpp | 1 + adb/daemon/shell_service.h | 34 +++++++++++++++++++++++ adb/daemon/shell_service_test.cpp | 1 + adb/services.cpp | 2 +- adb/{shell_service.h => shell_protocol.h} | 34 +---------------------- adb/shell_service_protocol.cpp | 2 +- adb/shell_service_protocol_test.cpp | 2 +- 8 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 adb/daemon/shell_service.h rename adb/{shell_service.h => shell_protocol.h} (79%) diff --git a/adb/client/commandline.cpp b/adb/client/commandline.cpp index 13e52f6d6..a7a94e775 100644 --- a/adb/client/commandline.cpp +++ b/adb/client/commandline.cpp @@ -59,7 +59,7 @@ #include "client/file_sync_client.h" #include "commandline.h" #include "services.h" -#include "shell_service.h" +#include "shell_protocol.h" #include "sysdeps/chrono.h" #include "sysdeps/memory.h" diff --git a/adb/daemon/shell_service.cpp b/adb/daemon/shell_service.cpp index 56d647a7b..b042e5f67 100644 --- a/adb/daemon/shell_service.cpp +++ b/adb/daemon/shell_service.cpp @@ -106,6 +106,7 @@ #include "adb_unique_fd.h" #include "adb_utils.h" #include "security_log_tags.h" +#include "shell_protocol.h" namespace { diff --git a/adb/daemon/shell_service.h b/adb/daemon/shell_service.h new file mode 100644 index 000000000..3ffffa7ac --- /dev/null +++ b/adb/daemon/shell_service.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 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. + */ + +#pragma once + +enum class SubprocessType { + kPty, + kRaw, +}; + +enum class SubprocessProtocol { + kNone, + kShell, +}; + +// Forks and starts a new shell subprocess. If |name| is empty an interactive +// shell is started, otherwise |name| is executed non-interactively. +// +// Returns an open FD connected to the subprocess or -1 on failure. +int StartSubprocess(const char* name, const char* terminal_type, SubprocessType type, + SubprocessProtocol protocol); diff --git a/adb/daemon/shell_service_test.cpp b/adb/daemon/shell_service_test.cpp index 4e27822d1..d0735373c 100644 --- a/adb/daemon/shell_service_test.cpp +++ b/adb/daemon/shell_service_test.cpp @@ -27,6 +27,7 @@ #include "adb.h" #include "adb_io.h" +#include "shell_protocol.h" #include "sysdeps.h" class ShellServiceTest : public ::testing::Test { diff --git a/adb/services.cpp b/adb/services.cpp index 54c679baa..bbb967388 100644 --- a/adb/services.cpp +++ b/adb/services.cpp @@ -54,10 +54,10 @@ #include "daemon/file_sync_service.h" #include "daemon/framebuffer_service.h" #include "daemon/set_verity_enable_state_service.h" +#include "daemon/shell_service.h" #endif #include "remount_service.h" #include "services.h" -#include "shell_service.h" #include "socket_spec.h" #include "sysdeps.h" #include "transport.h" diff --git a/adb/shell_service.h b/adb/shell_protocol.h similarity index 79% rename from adb/shell_service.h rename to adb/shell_protocol.h index e3d676a5b..2c8268901 100644 --- a/adb/shell_service.h +++ b/adb/shell_protocol.h @@ -14,16 +14,7 @@ * limitations under the License. */ -// This file contains classes and functionality to launch shell subprocesses -// in adbd and communicate between those subprocesses and the adb client. -// -// The main features exposed here are: -// 1. A ShellPacket class to wrap data in a simple protocol. Both adbd and -// the adb client use this class to transmit data between them. -// 2. Functions to launch a subprocess on the adbd side. - -#ifndef SHELL_SERVICE_H_ -#define SHELL_SERVICE_H_ +#pragma once #include @@ -124,26 +115,3 @@ class ShellProtocol { DISALLOW_COPY_AND_ASSIGN(ShellProtocol); }; - -#if !ADB_HOST - -enum class SubprocessType { - kPty, - kRaw, -}; - -enum class SubprocessProtocol { - kNone, - kShell, -}; - -// Forks and starts a new shell subprocess. If |name| is empty an interactive -// shell is started, otherwise |name| is executed non-interactively. -// -// Returns an open FD connected to the subprocess or -1 on failure. -int StartSubprocess(const char* name, const char* terminal_type, - SubprocessType type, SubprocessProtocol protocol); - -#endif // !ADB_HOST - -#endif // SHELL_SERVICE_H_ diff --git a/adb/shell_service_protocol.cpp b/adb/shell_service_protocol.cpp index 623629c75..13b66ec31 100644 --- a/adb/shell_service_protocol.cpp +++ b/adb/shell_service_protocol.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "shell_service.h" +#include "shell_protocol.h" #include diff --git a/adb/shell_service_protocol_test.cpp b/adb/shell_service_protocol_test.cpp index b0fa3edbb..a10b5c055 100644 --- a/adb/shell_service_protocol_test.cpp +++ b/adb/shell_service_protocol_test.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "shell_service.h" +#include "shell_protocol.h" #include