Diarkis C++Client Library API Document
DiarkisTcpBase.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/tcp.h"
8 #include "logging/LoggerFactory.h"
9 #include "protocol.h"
10 
18 {
19  public:
27 
34  virtual ~DiarkisTcpBase();
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 std::string& 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 
101  bool IsConnected();
102 
109  void Disconnect();
110 
117  void Update();
118 
125  void SetSchedulerAddNotifyEvent(std::function<void()> notifyEventFunc);
126 
133  bool IsOffline();
134 
141  std::shared_ptr<IDiarkisTcp> Get();
142 
153  bool SendHeartbeat(void);
154 
163  bool SendMigrate(void);
164 
165  protected:
172  virtual void OnConnect(const DiarkisConnectionEventArgs& args);
173 
180  virtual void OnDisconnect(bool isReconnect);
181 
188  virtual void OnOffline();
189 
196  virtual void OnResponse(const DiarkisResponseEventArgs& args, DiarkisTransportType tt);
197 
204  virtual void OnPush(const DiarkisPushEventArgs& args, DiarkisTransportType tt);
205 
212  virtual void OnHeartbeat();
213 
220  virtual void OnNotification(const DiarkisPushEventArgs& args);
221 
228  std::shared_ptr<IDiarkisTcp> tcp_;
229 
236  std::shared_ptr<IDiarkisLogger> logger_;
237 
245 
252  std::function<void()> schedulerAddNotifyEventFunc_;
253 
260  bool bOffline_;
261 };
DiarkisTcpBase
Base class that wraps the IDiarkisTcp class for easy use of TCP functionality.
Definition: DiarkisTcpBase.h:17
HttpAccessType::Get
@ Get
Diarkis::Network::DiarkisTransportType
DiarkisTransportType
Protocol type.
Definition: transport.h:27
DiarkisTcpBase::bOffline_
bool bOffline_
Whether the server is getting ready to shut down.
Definition: DiarkisTcpBase.h:260
protocol.h
DiarkisTcpBase::schedulerAddNotifyEventFunc_
std::function< void()> schedulerAddNotifyEventFunc_
Callback function called when TCP related events are added.
Definition: DiarkisTcpBase.h:252
Diarkis::StdVector
Definition: common.h:406
DiarkisTcpBase::logger_
std::shared_ptr< IDiarkisLogger > logger_
Pointer to IDiarkisLogger class.
Definition: DiarkisTcpBase.h:236
Diarkis::DiarkisConnectionEventArgs
Arguments of the callback events when connecting to the server.
Definition: eventArgs.h:153
AuthInfo
Definition: common.h:65
Diarkis::DiarkisResponseEventArgs
Argument of the callback event called when a UDP or TCP Response is received.
Definition: eventArgs.h:1365
common.h
tcp.h
DiarkisTcpBase::eventUnsubscriptions_
Diarkis::StdVector< std::function< void()> > eventUnsubscriptions_
List of lambda functions.
Definition: DiarkisTcpBase.h:244
DIARKIS_API
#define DIARKIS_API
Definition: common.h:47
DiarkisTcpBase::tcp_
std::shared_ptr< IDiarkisTcp > tcp_
Pointer to IDiarkisTcp class.
Definition: DiarkisTcpBase.h:228
Diarkis::DiarkisPushEventArgs
Argument of the callback event called when a UDP or TCP Push is received.
Definition: eventArgs.h:1316