Zao SDK for Jetson / libzep API リファレンス  1.0.0.0 (2023-05-08)
TunnelInterface.hpp
1 #ifndef ZEP_SERIAL_TUNNEL_INTERFACE_HPP_
2 #define ZEP_SERIAL_TUNNEL_INTERFACE_HPP_
3 
4 #include <cstdint>
5 #include <future>
6 #include <memory>
7 #include <string>
8 #include <vector>
9 
10 #include "../StreamInterface.hpp"
11 #include "../TimestampInterface.hpp"
12 #include "TunnelConfig.hpp"
13 
14 namespace zep {
15 namespace serial {
16 
17 class TunnelCallbackInterface;
18 
23  public:
31  virtual bool GetRequestedConfig(TunnelConfig& config) const noexcept = 0;
32 
41  virtual std::shared_future<TunnelConfig> GetConfigRequestStatus()
42  const noexcept = 0;
43 
55  virtual void SetAvailable(bool new_value) noexcept = 0;
56 
63  virtual void SetMaxPacketLength(std::size_t length) = 0;
64 
70  virtual void ResetQueue() = 0;
71 
81  virtual void Queue(TimestampInterface::Rep timestamp, const void* bytes,
82  std::size_t length) = 0;
83 
93  virtual void RegisterCallback(
94  const std::shared_ptr<TunnelCallbackInterface>& listener,
95  bool use_weak_ptr = false) = 0;
96 
105  virtual void RegisterCallback(
106  std::unique_ptr<TunnelCallbackInterface>&& listener) = 0;
107 
108  virtual ~TunnelInterface() noexcept = default;
109 };
110 
115  public:
119  enum class EventType {
121  kUnknown = 0,
122 
124  kDisconnected,
125 
127  kUnlinked,
128 
130  kDepacketizeError,
131 
133  kDeactivated,
134 
136  kActivated,
137  };
138 
146  virtual void OnRequestConfig(const TunnelConfig& config) = 0;
147 
154  virtual void OnNotifyTunnelEvent(EventType type, const std::string& message) {
155  }
156 
164  virtual void OnReceivePacket(std::vector<std::uint8_t>&& bytes) = 0;
165 
166  virtual ~TunnelCallbackInterface() noexcept = default;
167 };
168 
169 } // namespace serial
170 } // namespace zep
171 
172 #endif // ZEP_SERIAL_TUNNEL_INTERFACE_HPP_
std::uint64_t Rep
タイムスタンプの表現に用いる整数型
Definition: TimestampInterface.hpp:16
virtual void RegisterCallback(const std::shared_ptr< TunnelCallbackInterface > &listener, bool use_weak_ptr=false)=0
コールバックの送信先をshared_ptrまたはweak_ptrで登録する
ZEP SDK用名前空間
Definition: FactoryInterface.hpp:10
エンドポイント側のストリーム機能インターフェース
Definition: StreamInterface.hpp:13
virtual void Queue(TimestampInterface::Rep timestamp, const void *bytes, std::size_t length)=0
送信データをキューする。
virtual void SetAvailable(bool new_value) noexcept=0
アクティブ状態にできるか否かを設定する。
virtual void OnNotifyTunnelEvent(EventType type, const std::string &message)
エラーなどのイベントが発生した時に呼び出されるコールバック。
Definition: TunnelInterface.hpp:154
virtual void SetMaxPacketLength(std::size_t length)=0
最大パケット長を設定する。
virtual std::shared_future< TunnelConfig > GetConfigRequestStatus() const noexcept=0
設定要求状態を取得するshared_futureを取得する。
virtual void ResetQueue()=0
キューされているデータを削除する。
シリアル通信トンネリング機能のインターフェース
Definition: TunnelInterface.hpp:22
EventType
イベントの種類
Definition: TunnelInterface.hpp:119
シリアル通信トンネリング機能のコールバックインターフェース
Definition: TunnelInterface.hpp:114
トンネリング設定を格納するクラス。
Definition: TunnelConfig.hpp:12
virtual bool GetRequestedConfig(TunnelConfig &config) const noexcept=0
要求されたシリアルトンネリング設定を取得する。