Diarkis C++Client Library API Document
DiarkisGroupBase.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"
8 #include "diarkis/network/tcp.h"
9 #include "diarkis/network/udp.h"
10 #include "logging/LoggerFactory.h"
11 #include "protocol.h"
12 
13 using namespace Diarkis::Modules;
14 
22 {
23  public:
31 
38  virtual ~DiarkisGroupBase();
39 
54  virtual void SetupTcpGroup(const std::shared_ptr<IDiarkisTcp>& tcp, const std::shared_ptr<LoggerFactory>& loggerFactory, bool bRetry);
55 
70  virtual void SetupUdpGroup(const std::shared_ptr<IDiarkisUdp>& udp, const std::shared_ptr<LoggerFactory>& loggerFactory, bool bRetry);
71 
94  virtual void SendCreateGroup(bool allowEmpty, bool join, uint16_t ttl);
95 
114  virtual void SendJoinGroup(const char* groupID, const uint8_t* message, size_t messageSize);
115 
122  virtual void SendJoinGroup(const std::string& groupID, const std::vector<uint8_t>& message);
123 
150  virtual void SendRandomJoinGroup(uint16_t ttl, const uint8_t* message, size_t messageSize, uint32_t interval, bool allowEmpty = false);
151 
158  virtual void SendRandomJoinGroup(uint16_t ttl, const std::vector<uint8_t>& message, uint32_t interval, bool allowEmpty = false);
159 
174  virtual void SendLeaveGroup(const char* groupID, const uint8_t* message, size_t messageSize);
175 
182  virtual void SendLeaveGroup(const std::string& groupID, const std::vector<uint8_t>& message);
183 
196  virtual void SendLeaveGroup(const uint8_t* message, size_t messageSize);
197 
204  virtual void SendLeaveGroup(const std::vector<uint8_t>& message);
205 
222  virtual void SendBroadcastToGroup(const uint8_t* payload, size_t payloadSize, bool reliable);
223 
230  virtual void SendBroadcastToGroup(const std::vector<uint8_t>& payload, bool reliable);
231 
250  virtual void SendBroadcastToGroup(const char* groupID, const uint8_t* payload, size_t payloadSize, bool reliable);
251 
258  virtual void SendBroadcastToGroup(const std::string& groupID, const std::vector<uint8_t>& payload, bool reliable);
259 
266  bool IsJoin();
267 
274  bool IsFail();
275 
282  Diarkis::StdString GetGroupID();
283 
284  protected:
293  virtual void OnGroupCreation(DiarkisTransportType transportType, const DiarkisGroupEventArgs& e);
294 
303  virtual void OnGroupJoin(DiarkisTransportType transportType, const DiarkisGroupEventArgs& e);
304 
313  virtual void OnGroupLeave(DiarkisTransportType transportType, const DiarkisGroupEventArgs& e);
314 
323  virtual void OnGroupMemberJoin(DiarkisTransportType transportType, const DiarkisPayloadEventArgs& e);
324 
333  virtual void OnGroupMemberLeave(DiarkisTransportType transportType, const DiarkisPayloadEventArgs& e);
334 
343  virtual void OnGroupMemberBroadcast(DiarkisTransportType transportType, const DiarkisPayloadEventArgs& e);
344 
351  std::shared_ptr<IDiarkisTcp> tcp_;
352 
359  std::shared_ptr<IDiarkisUdp> udp_;
360 
367  std::shared_ptr<IDiarkisGroup> group_;
368 
375  std::shared_ptr<IDiarkisLogger> logger_;
376 
384 
392 
400 
408 
416 };
DiarkisGroupBase::udp_
std::shared_ptr< IDiarkisUdp > udp_
Pointer to the IDiarkisUdp class.
Definition: DiarkisGroupBase.h:359
Diarkis::DiarkisPayloadEventArgs
Arguments of the callback event called when a payload is sent or received.
Definition: eventArgs.h:252
DiarkisGroupBase::groupConnect_
ConnectState groupConnect_
Group connection status.
Definition: DiarkisGroupBase.h:415
group.h
Diarkis::StdString
Definition: common.h:432
DiarkisGroupBase::group_
std::shared_ptr< IDiarkisGroup > group_
Pointer to the IDiarkisGroup class.
Definition: DiarkisGroupBase.h:367
Diarkis::Network::DiarkisTransportType
DiarkisTransportType
Protocol type.
Definition: transport.h:27
DiarkisGroupBase::groupID_
Diarkis::StdString groupID_
Group ID.
Definition: DiarkisGroupBase.h:391
protocol.h
Diarkis::Modules
Definition: directMessage.h:16
Diarkis::StdVector
Definition: common.h:406
DiarkisGroupBase::messageFromUid_
Diarkis::StdString messageFromUid_
User ID of the sender of the most recent message received.
Definition: DiarkisGroupBase.h:407
DiarkisGroupBase
Base class that wraps the IDiarkisGroup class for easy use of Group functionality.
Definition: DiarkisGroupBase.h:21
DiarkisGroupBase::groupMessage_
Diarkis::StdString groupMessage_
Latest message received.
Definition: DiarkisGroupBase.h:399
ConnectState
ConnectState
connection state
Definition: protocol.h:40
DiarkisGroupBase::eventUnsubscriptions_
Diarkis::StdVector< std::function< void()> > eventUnsubscriptions_
Lambda functions list.
Definition: DiarkisGroupBase.h:383
DiarkisGroupBase::tcp_
std::shared_ptr< IDiarkisTcp > tcp_
Pointer to the IDiarkisTcp class.
Definition: DiarkisGroupBase.h:351
common.h
tcp.h
udp.h
Diarkis::DiarkisGroupEventArgs
Arguments of the callback event called when the group is created.
Definition: eventArgs.h:199
DIARKIS_API
#define DIARKIS_API
Definition: common.h:47
DiarkisGroupBase::logger_
std::shared_ptr< IDiarkisLogger > logger_
Pointer to the IDiarkisLogger class.
Definition: DiarkisGroupBase.h:375