Diarkis C++Client Library API Document
DiarkisUdpBase.h
[詳解]
1 // © 2019-2024 Diarkis Inc. All rights reserved.
2 
3 #pragma once
4 
5 #include <functional>
6 #include "diarkis/common.h"
7 #include "diarkis/network/udp.h"
8 #include "logging/LoggerFactory.h"
9 #include "protocol.h"
10 
18 {
19  public:
27 
34  virtual ~DiarkisUdpBase();
35 
46  virtual void Setup(const std::shared_ptr<LoggerFactory>& loggerFactory);
47 
60  bool Connect(const char* endpoint, const char* clientKey, const struct AuthInfo* auth);
61 
68  bool Connect(const std::string& endpoint, const std::string& clientKey, const struct AuthInfo* auth);
69 
88  bool Connect(const char* endpoint,
89  const std::string& clientKey,
90  const std::vector<uint8_t>& sid,
91  const std::vector<uint8_t>& key,
92  const std::vector<uint8_t>& iv,
93  const std::vector<uint8_t>& mackey);
94 
111  bool ConnectAsync(const char* endpoint, const char* clientKey, const struct AuthInfo* auth);
112 
119  bool ConnectAsync(const std::string& endpoint, const std::string& clientKey, const struct AuthInfo* auth);
120 
137  bool ConnectDualModeAsync(const char* endpoint, const char* clientKey, const struct AuthInfo* auth);
138 
145  bool ConnectDualModeAsync(const std::string& endpoint, const std::string& clientKey, const struct AuthInfo* auth);
146 
153  bool IsConnected();
154 
163  bool IsAsyncConnectRunning() const;
164 
175  bool GetAsyncConnectResult(System::Result& result) const;
176 
183  void Disconnect();
184 
191  void Update();
192 
199  void SetSchedulerAddNotifyEvent(std::function<void()> notifyEventFunc);
200 
207  bool IsOffline();
208 
215  std::shared_ptr<IDiarkisUdp> Get();
216 
223  void GetGlobalAddress(Diarkis::StdString& address);
224 
231  bool GetLocalAddress(Diarkis::StdVector<Diarkis::StdString>& addressLists);
232 
241  bool SendPing(void);
242 
251  bool SendEcho(void);
252 
261  bool SendMigrate(void);
262 
269  void ClearUdpBuffer(void);
270 
285  bool SetSendThreadParam(const DiarkisThreadScheduler& scheduler);
286 
301  bool SetRecvThreadParam(const DiarkisThreadScheduler& scheduler);
302 
311  Result SendCheckNATType();
312 
313  protected:
320  virtual void OnConnect(const DiarkisConnectionEventArgs& args);
321 
328  virtual void OnDisconnect(bool isReconnect);
329 
336  virtual void OnOffline(void);
337 
344  virtual void OnResponse(const DiarkisResponseEventArgs& args, DiarkisTransportType tt);
345 
352  virtual void OnPush(const DiarkisPushEventArgs& args, DiarkisTransportType tt);
353 
360  virtual void OnEcho(const DiarkisUdpEchoEventArgs& args);
361 
368  virtual void OnPing(const DiarkisUdpPingEventArgs& args);
369 
376  virtual void OnNotification(const DiarkisPushEventArgs& args);
377 
384  virtual void OnCheckNATType(const DiarkisCheckNATTypeEventArgs& args);
385 
410  bool SetConnectionInfo(const char* clientKey,
411  const uint8_t* sid,
412  size_t sidSize,
413  const uint8_t* key,
414  size_t keySize,
415  const uint8_t* iv,
416  size_t ivSize,
417  const uint8_t* mackey,
418  size_t mackeySize);
419 
430  bool SetConnectionInfo(const Diarkis::StdString& clientKey, const AuthInfo& auth);
431 
438  std::shared_ptr<IDiarkisUdp> udp_;
439 
446  std::shared_ptr<IDiarkisLogger> logger_;
447 
455 
462  std::function<void()> schedulerAddNotifyEventFunc_;
463 
470  bool bOffline_;
471 
479 
480 };
Diarkis::DiarkisUdpPingEventArgs
UDP Pingを受信した際に呼び出されるコールバックイベントの引数
Definition: eventArgs.h:1454
Diarkis::StdString
Definition: common.h:432
HttpAccessType::Get
@ Get
Diarkis::Network::DiarkisTransportType
DiarkisTransportType
プロトコルタイプ
Definition: transport.h:27
DiarkisUdpBase::ownGlobalAddress_
Diarkis::StdString ownGlobalAddress_
私のグローバルIPアドレス
Definition: DiarkisUdpBase.h:478
Diarkis::System::Result
特定の結果値に関する情報を含んでいます。 別のResult構造体と比較することができます。デバッグ体験を向上させるためにテキスト形式で出力することも可能です。
Definition: result.h:37
protocol.h
DiarkisUdpBase::eventUnsubscriptions_
Diarkis::StdVector< std::function< void()> > eventUnsubscriptions_
ラムダ関数のリスト
Definition: DiarkisUdpBase.h:454
Diarkis::StdVector< Diarkis::StdString >
Diarkis::DiarkisConnectionEventArgs
サーバーへの接続時のコールバックイベントの引数
Definition: eventArgs.h:153
AuthInfo
Definition: common.h:65
DiarkisUdpBase::logger_
std::shared_ptr< IDiarkisLogger > logger_
IDiarkisLoggerクラスへのポインター
Definition: DiarkisUdpBase.h:446
Diarkis::DiarkisResponseEventArgs
UDPまたはTCPのレスポンスを受信したときにコールバックイベントが呼び出される際の引数。
Definition: eventArgs.h:1365
common.h
DiarkisUdpBase
UDP機能を簡単に使用するためにIDiarkisUdpクラスをラップする基本クラス
Definition: DiarkisUdpBase.h:17
udp.h
Diarkis::DiarkisUdpEchoEventArgs
UDPエコーを受信したときに呼び出されるコールバックイベントの引数
Definition: eventArgs.h:1421
DiarkisUdpBase::udp_
std::shared_ptr< IDiarkisUdp > udp_
IDiarkisUdpクラスへのポインター
Definition: DiarkisUdpBase.h:438
DiarkisUdpBase::schedulerAddNotifyEventFunc_
std::function< void()> schedulerAddNotifyEventFunc_
UDP関連のイベントがスケジューラに追加された時に呼び出されるプロセスを設定します。
Definition: DiarkisUdpBase.h:462
DIARKIS_API
#define DIARKIS_API
Definition: common.h:47
DiarkisUdpBase::bOffline_
bool bOffline_
サーバーがシャットダウンの準備をしているかどうか
Definition: DiarkisUdpBase.h:470
Diarkis::DiarkisCheckNATTypeEventArgs
Diarkis::Modules::IDiarkisRoom::SendCheckNATType() の応答を受け取ったときに呼び出されるコールバックイベントの引数。
Definition: eventArgs.h:1487
Diarkis::DiarkisPushEventArgs
UDPまたはTCP Pushを受信した際に呼び出されるコールバックイベントの引数。
Definition: eventArgs.h:1316