| // 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_ |