| // Copyright 2018 The Fuchsia 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 SRC_DEVELOPER_DEBUG_DEBUG_AGENT_REMOTE_API_ADAPTER_H_ | |
| #define SRC_DEVELOPER_DEBUG_DEBUG_AGENT_REMOTE_API_ADAPTER_H_ | |
| #include "src/lib/fxl/macros.h" | |
| namespace debug { | |
| class StreamBuffer; | |
| } | |
| namespace debug_agent { | |
| class RemoteAPI; | |
| // Converts a raw stream of input data to a series of RemoteAPI calls. | |
| class RemoteAPIAdapter { | |
| public: | |
| // The stream will be used to read input and send replies back to the | |
| // client. The creator must set it up so that OnStreamReadable() is called | |
| // whenever there is new data to read on the stream. | |
| // | |
| // The pointers must outlive this class (ownership is not taken). | |
| RemoteAPIAdapter(RemoteAPI* remote_api, debug::StreamBuffer* stream); | |
| ~RemoteAPIAdapter(); | |
| RemoteAPI* api() { return api_; } | |
| debug::StreamBuffer* stream() { return stream_; } | |
| // Callback for when data is available to read on the stream. | |
| void OnStreamReadable(); | |
| private: | |
| // All pointers are non-owning. | |
| RemoteAPI* api_; | |
| debug::StreamBuffer* stream_; | |
| FXL_DISALLOW_COPY_AND_ASSIGN(RemoteAPIAdapter); | |
| }; | |
| } // namespace debug_agent | |
| #endif // SRC_DEVELOPER_DEBUG_DEBUG_AGENT_REMOTE_API_ADAPTER_H_ |