Zao SDK for Jetson / libzao-endpoint API リファレンス 1.6.0.0 (2024-12-24)
Loading...
Searching...
No Matches
TunnelInterface.hpp
1#ifndef ZAO_ENDPOINT_SERIAL_TUNNEL_INTERFACE_HPP_
2#define ZAO_ENDPOINT_SERIAL_TUNNEL_INTERFACE_HPP_
3
4#include <cassert>
5#include <cstdint>
6#include <cstring>
7#include <future>
8#include <memory>
9#include <string>
10#include <vector>
11
12#include "../EventSourceInterface.hpp"
13#include "../StreamInterface.hpp"
14#include "../TimestampInterface.hpp"
15#include "ChunkSinkBufferDequeueResult.hpp"
16#include "ChunkSinkBufferEnqueueResult.hpp"
17#include "ChunkSinkBufferInterface.hpp"
18#include "ChunkSourceBufferDequeueResult.hpp"
19#include "ChunkSourceBufferEnqueueResult.hpp"
20#include "ChunkSourceBufferInterface.hpp"
21#include "TunnelConfig.hpp"
22
23namespace zao {
24namespace endpoint {
25namespace serial {
26
27class TunnelCallbackInterface;
28
34 public EventSourceInterface<TunnelCallbackInterface> {
35 public:
49 virtual bool GetRequestedConfig(TunnelConfig& config) const = 0;
50
57 [[deprecated("Please use GetRequestedConfigAsync")]]
58 std::shared_future<TunnelConfig> GetConfigRequestStatus() const {
60 }
61
76 virtual std::shared_future<TunnelConfig> GetRequestedConfigAsync() const = 0;
77
100 virtual void SetAvailable(bool new_value) = 0;
101
113 [[deprecated("Please use ConfigureQueue")]]
114 void SetMaxPacketLength(std::size_t length) {
115 ConfigureQueue(length, 0);
116 }
117
127 virtual void ConfigureQueue(std::size_t bytes_per_buffer,
128 std::size_t num_of_buffers) = 0;
129
143
152 std::unique_ptr<ChunkSourceBufferInterface> buffer) = 0;
153
163
177 std::unique_ptr<ChunkSinkBufferInterface> buffer) = 0;
178
186 virtual void FlushQueue() = 0;
187
196 void ResetQueue() { FlushQueue(); }
197
213 [[deprecated("Please use DequeueSourceBuffer/EnqueueSourceBuffer")]]
214 void Queue(TimestampInterface::Rep timestamp, const void* bytes,
215 std::size_t length) {
216 auto result = DequeueSourceBuffer();
217 auto buffer = result.TakeBuffer();
218 if (!buffer) {
219 return;
220 }
221 assert(buffer->GetCapacity() >= length);
222 std::memcpy(buffer->GetPointer(), bytes, length);
223 buffer->SetLength(length);
224 buffer->SetTimestamp(timestamp);
225 EnqueueSourceBuffer(std::move(buffer));
226 }
227
232 virtual ~TunnelInterface() noexcept = default;
233};
234
240 public:
245 enum class EventType {
250 kUnknown = 0,
251
256 kDisconnected,
257
262 kUnlinked,
263
268 kDepacketizeError,
269
274 kDeactivated,
275
280 kActivated,
281 };
282
293 virtual void OnRequestConfig(const TunnelConfig& config) = 0;
294
304 virtual void OnNotifyTunnelEvent(EventType type, const std::string& message) {
305 }
306
320#ifndef LIBZAO_ENDPOINT_INTERNAL
321 [[deprecated("Never called when new pull-type API is selected.")]]
322#endif
323 virtual void OnReceivePacket(std::vector<std::uint8_t>&& bytes) {
324 (void)bytes;
325 }
326
331 virtual ~TunnelCallbackInterface() noexcept = default;
332};
333
334} // namespace serial
335} // namespace endpoint
336} // namespace zao
337
338#endif // ZAO_ENDPOINT_SERIAL_TUNNEL_INTERFACE_HPP_
イベントを生成するクラスの共通インターフェース
Definition EventSourceInterface.hpp:31
エンドポイント側のストリーム機能インターフェース
Definition StreamInterface.hpp:15
std::uint64_t Rep
タイムスタンプの表現に用いる整数型
Definition TimestampInterface.hpp:19
シリアルデータ断片受信用バッファの取り出し結果を示す型。
Definition ChunkSinkBufferDequeueResult.hpp:17
シリアルデータ断片受信用バッファの格納結果を示す型。
Definition ChunkSinkBufferEnqueueResult.hpp:13
シリアルデータ断片送信用バッファの取り出し結果を示す型。
Definition ChunkSourceBufferDequeueResult.hpp:17
シリアルデータ断片送信用バッファの格納結果を示す型。
Definition ChunkSourceBufferEnqueueResult.hpp:13
シリアル通信トンネリング機能のコールバックインターフェース
Definition TunnelInterface.hpp:239
EventType
イベントの種類
Definition TunnelInterface.hpp:245
virtual void OnRequestConfig(const TunnelConfig &config)=0
設定要求時に呼び出されるコールバック。
virtual ~TunnelCallbackInterface() noexcept=default
TunnelCallbackInterface オブジェクトを破棄する。
virtual void OnReceivePacket(std::vector< std::uint8_t > &&bytes)
パケット受信時に呼び出されるコールバック。
Definition TunnelInterface.hpp:323
virtual void OnNotifyTunnelEvent(EventType type, const std::string &message)
エラーなどのイベントが発生した時に呼び出されるコールバック
Definition TunnelInterface.hpp:304
トンネリング設定を格納するクラス
Definition TunnelConfig.hpp:14
シリアル通信トンネリング機能のインターフェース
Definition TunnelInterface.hpp:34
virtual void SetAvailable(bool new_value)=0
アクティブ状態にできるか否かを設定する。
void SetMaxPacketLength(std::size_t length)
最大パケット長を設定する。
Definition TunnelInterface.hpp:114
virtual ~TunnelInterface() noexcept=default
TunnelInterface オブジェクトを破棄する。
void ResetQueue()
キューされているデータを削除する。
Definition TunnelInterface.hpp:196
virtual ChunkSourceBufferEnqueueResult EnqueueSourceBuffer(std::unique_ptr< ChunkSourceBufferInterface > buffer)=0
シリアルデータ断片送信用バッファをキューに格納する。
virtual std::shared_future< TunnelConfig > GetRequestedConfigAsync() const =0
設定要求状態を取得するshared_futureを取得する。
void Queue(TimestampInterface::Rep timestamp, const void *bytes, std::size_t length)
送信データをキューする。
Definition TunnelInterface.hpp:214
virtual ChunkSourceBufferDequeueResult DequeueSourceBuffer()=0
シリアルデータ断片送信用バッファをキューから取り出す。
virtual ChunkSinkBufferEnqueueResult EnqueueSinkBuffer(std::unique_ptr< ChunkSinkBufferInterface > buffer)=0
シリアルデータ断片受信用バッファをキューに返却する。
virtual ChunkSinkBufferDequeueResult DequeueSinkBuffer()=0
シリアルデータ断片受信用バッファをキューから取得する。
virtual bool GetRequestedConfig(TunnelConfig &config) const =0
要求されたシリアルトンネリング設定を取得する。
virtual void FlushQueue()=0
送受信キューの内容を破棄する。
virtual void ConfigureQueue(std::size_t bytes_per_buffer, std::size_t num_of_buffers)=0
キューの設定を行う(送受信両方)。
std::shared_future< TunnelConfig > GetConfigRequestStatus() const
設定要求状態を取得するshared_futureを取得する。
Definition TunnelInterface.hpp:58
Zao製品共通の名前空間
Definition FactoryInterface.hpp:11