Diarkis C++Client Library API Document
DiarkisUdpBase.h
Go to the documentation of this file.
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
Arguments of the callback event called when an UDP Ping is received.
Definition: eventArgs.h:1454
Diarkis::StdString
Definition: common.h:432
HttpAccessType::Get
@ Get
Diarkis::Network::DiarkisTransportType
DiarkisTransportType
Protocol type.
Definition: transport.h:27
DiarkisUdpBase::ownGlobalAddress_
Diarkis::StdString ownGlobalAddress_
My global IP address.
Definition: DiarkisUdpBase.h:478
Diarkis::System::Result
Contains information about a specific result value. Can be compared against another Result structure....
Definition: result.h:37
protocol.h
DiarkisUdpBase::eventUnsubscriptions_
Diarkis::StdVector< std::function< void()> > eventUnsubscriptions_
List of lambda functions.
Definition: DiarkisUdpBase.h:454
Diarkis::StdVector< Diarkis::StdString >
Diarkis::DiarkisConnectionEventArgs
Arguments of the callback events when connecting to the server.
Definition: eventArgs.h:153
AuthInfo
Definition: common.h:65
DiarkisUdpBase::logger_
std::shared_ptr< IDiarkisLogger > logger_
Pointer to IDiarkisLogger class.
Definition: DiarkisUdpBase.h:446
Diarkis::DiarkisResponseEventArgs
Argument of the callback event called when a UDP or TCP Response is received.
Definition: eventArgs.h:1365
common.h
DiarkisUdpBase
Base class that wraps the IDiarkisUdp class for easy use of UDP functionality.
Definition: DiarkisUdpBase.h:17
udp.h
Diarkis::DiarkisUdpEchoEventArgs
Arguments of the callback event called when an UDP Echo is received.
Definition: eventArgs.h:1421
DiarkisUdpBase::udp_
std::shared_ptr< IDiarkisUdp > udp_
Pointer to IDiarkisUdp class.
Definition: DiarkisUdpBase.h:438
DiarkisUdpBase::schedulerAddNotifyEventFunc_
std::function< void()> schedulerAddNotifyEventFunc_
Sets the process to be called when UDP related events are added to a scheduler.
Definition: DiarkisUdpBase.h:462
DIARKIS_API
#define DIARKIS_API
Definition: common.h:47
DiarkisUdpBase::bOffline_
bool bOffline_
Whether the server is getting ready to shut down.
Definition: DiarkisUdpBase.h:470
Diarkis::DiarkisCheckNATTypeEventArgs
Arguments of the callback event called when the response of Diarkis::Modules::IDiarkisRoom::SendCheck...
Definition: eventArgs.h:1487
Diarkis::DiarkisPushEventArgs
Argument of the callback event called when a UDP or TCP Push is received.
Definition: eventArgs.h:1316