Diarkis C++Client Library API Document
group.h
Go to the documentation of this file.
1 // © 2019-2024 Diarkis Inc. All rights reserved.
2 
3 #pragma once
4 
5 #include "diarkis/common.h"
8 #include "diarkis/network/tcp.h"
9 #include "diarkis/network/udp.h"
10 
11 using namespace Diarkis::Network;
12 
13 // ADD NAMESPACE NAME TAG
14 namespace Diarkis
15 {
16 namespace Modules
17 {
27 {
28  public:
35  virtual ~IDiarkisGroup() {}
36 
47  virtual void SetLoggerFactory(const std::shared_ptr<IDiarkisLoggerFactory>& loggerFactory, Diarkis::StdString loggerNameSuffix) = 0;
48 
55  virtual bool SetupAsTcp(const std::shared_ptr<IDiarkisTcp>& tcp) = 0;
56 
63  virtual bool SetupAsUdp(const std::shared_ptr<IDiarkisUdp>& udp) = 0;
64 
73  virtual bool SetTcp(const std::shared_ptr<IDiarkisTcp>& tcp) = 0;
74 
83  virtual bool SetUdp(const std::shared_ptr<IDiarkisUdp>& udp) = 0;
84 
91  virtual std::shared_ptr<IDiarkisEvent<const DiarkisGroupEventArgs&>> GetCreateEvent() = 0;
92 
99  virtual std::shared_ptr<IDiarkisEvent<const DiarkisGroupEventArgs&>> GetJoinEvent() = 0;
100 
107  virtual std::shared_ptr<IDiarkisEvent<const DiarkisGroupEventArgs&>> GetLeaveEvent() = 0;
108 
115  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberJoinEvent() = 0;
116 
123  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberLeaveEvent() = 0;
124 
131  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberBroadcastEvent() = 0;
132 
139  virtual void GetGroupIDs(Diarkis::StdVector<Diarkis::StdString>& idList) = 0;
140 
163  virtual Diarkis::System::Result Create(bool allowEmpty, bool join, uint16_t ttl) = 0;
164 
183  virtual Diarkis::System::Result Join(const char* groupID, const uint8_t* message, size_t messageSize) = 0;
184 
191  virtual Diarkis::System::Result Join(const Diarkis::StdString& groupID, const Diarkis::StdVector<uint8_t>& message) = 0;
192 
219  virtual Diarkis::System::Result JoinRandom(uint16_t ttl, const uint8_t* message, size_t messageSize, uint32_t interval = 200, bool allowEmpty = false) = 0;
220 
227  virtual Diarkis::System::Result JoinRandom(uint16_t ttl, const Diarkis::StdVector<uint8_t>& message, uint32_t interval = 200, bool allowEmpty = false) = 0;
228 
243  virtual Diarkis::System::Result Leave(const char* groupID, const uint8_t* message, size_t messageSize) = 0;
244 
251  virtual Diarkis::System::Result Leave(const Diarkis::StdString& groupID, const Diarkis::StdVector<uint8_t>& message) = 0;
252 
271  virtual Diarkis::System::Result BroadcastTo(const char* groupID, const uint8_t* message, size_t messageSize, bool reliable = true) = 0;
272 
279  virtual Diarkis::System::Result BroadcastTo(const Diarkis::StdString& groupID, const Diarkis::StdVector<uint8_t>& message, bool reliable = true) = 0;
280 };
281 
282 extern "C"
283 {
290  DIARKIS_EXPORT IDiarkisGroup* DiarkisCreateGroup();
291 }
292 
293 } // namespace Modules
294 } // namespace Diarkis
295  // ADD NAMESPACE } TAG
LoggerFactory.h
Diarkis::Modules::IDiarkisGroup
Interface class for Group.
Definition: group.h:26
Diarkis::StdString
Definition: common.h:432
Diarkis::Modules::DiarkisCreateGroup
DIARKIS_EXPORT IDiarkisGroup * DiarkisCreateGroup()
Create IDiarkisDirectMessage class.
Diarkis::System::Result
Contains information about a specific result value. Can be compared against another Result structure....
Definition: result.h:37
Diarkis::StdVector< Diarkis::StdString >
eventArgs.h
Diarkis
Definition: commands.h:9
Diarkis::Network
Definition: eventArgs.h:10
common.h
tcp.h
udp.h
Diarkis::Modules::IDiarkisGroup::~IDiarkisGroup
virtual ~IDiarkisGroup()
Destructor for the IDiarkisGroup class.
Definition: group.h:35