Diarkis C++Client Library API Document
session.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"
7 #include "diarkis/network/tcp.h"
8 #include "diarkis/network/udp.h"
9 #include "diarkis/system/Event.h"
10 #include "diarkis/system/result.h"
11 
12 using namespace Diarkis::Network;
13 
14 // ADD NAMESPACE NAME TAG
15 namespace Diarkis
16 {
17 namespace Modules
18 {
26 {
27  public:
34  virtual ~IDiarkisSession() {}
35 
46  virtual void SetLoggerFactory(const std::shared_ptr<IDiarkisLoggerFactory>& loggerFactory, const Diarkis::StdString& loggerNameSuffix) = 0;
47 
54  virtual bool SetupAsTcp(std::shared_ptr<IDiarkisTcp> tcp) = 0;
55 
62  virtual bool SetupAsUdp(std::shared_ptr<IDiarkisUdp> udp) = 0;
63 
70  virtual bool SetTcp(std::shared_ptr<IDiarkisTcp> tcp) = 0;
71 
78  virtual bool SetUdp(std::shared_ptr<IDiarkisUdp> udp) = 0;
79 
90  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionCreateResponseEventArgs&>> GetCreateResponseEvent() = 0;
91 
102  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionInviteEventArgs&>> GetInviteEvent() = 0;
103 
114  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionNotificationEventArgs&>> GetJoinEvent() = 0;
115 
124  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionNotificationEventArgs&>> GetBroadcastEvent() = 0;
125 
134  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionNotificationEventArgs&>> GetMessageToEvent() = 0;
135 
146  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionNotificationEventArgs&>> GetLeaveEvent() = 0;
147 
154  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionInfoEventArgs&>> GetSessionInfoEvent() = 0;
155 
162  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionNotificationEventArgs&>> GetKickEvent() = 0;
163 
170  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionResponseEventArgs&>> GetInviteResponseEvent() = 0;
171 
178  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionResponseEventArgs&>> GetKickResponseEvent() = 0;
179 
186  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionResponseEventArgs&>> GetJoinResponseEvent() = 0;
187 
194  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionResponseEventArgs&>> GetBroadcastResponseEvent() = 0;
195 
202  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionResponseEventArgs&>> GetMessageToResponseEvent() = 0;
203 
210  virtual std::shared_ptr<IDiarkisEvent<const DiarkisSessionResponseEventArgs&>> GetLeaveResponseEvent() = 0;
211 
226  virtual Diarkis::System::Result SendCreate(uint8_t sessionType, uint8_t maxMembers, uint8_t ttl) = 0;
227 
242  virtual Diarkis::System::Result SendInvite(const char** uids, size_t uidsCount, uint8_t sessionType) = 0;
243 
250  virtual Diarkis::System::Result SendInvite(const Diarkis::StdVector<Diarkis::StdString>& uids, uint8_t sessionType) = 0;
251 
270  virtual Diarkis::System::Result SendInvite(const char** uids, size_t uidsCount, uint8_t sessionType, const uint8_t* message, size_t messageSize) = 0;
271 
279  uint8_t sessionType,
280  const Diarkis::StdVector<uint8_t>& message) = 0;
281 
296  virtual Diarkis::System::Result SendBroadcast(uint8_t sessionType, const uint8_t* message, size_t messageSize) = 0;
297 
304  virtual Diarkis::System::Result SendBroadcast(uint8_t sessionType, const Diarkis::StdVector<uint8_t>& message) = 0;
305 
324  virtual Diarkis::System::Result SendMessageTo(uint8_t sessionType, const char** uids, size_t uidsCount, const uint8_t* message, size_t messageSize) = 0;
325 
332  virtual Diarkis::System::Result SendMessageTo(uint8_t sessionType,
334  const Diarkis::StdVector<uint8_t>& message) = 0;
345  virtual Diarkis::System::Result SendJoin(uint8_t sessionType, const char* sessionID) = 0;
346 
353  virtual Diarkis::System::Result SendJoin(uint8_t sessionType, const Diarkis::StdString& sessionID) = 0;
354 
363  virtual Diarkis::System::Result SendLeave(uint8_t sessionType) = 0;
364 
375  virtual Diarkis::System::Result SendKick(uint8_t sessionType, const Diarkis::StdString& userID) = 0;
376 
383  virtual Diarkis::System::Result SendKick(uint8_t sessionType, const char* userID) = 0;
384 
393  virtual Diarkis::System::Result SendGetSessionInfoBySessionType(uint8_t sessionType) = 0;
394 
403  virtual Diarkis::System::Result SendGetSessionInfoBySessionID(const char* sessionID) = 0;
404 
411  virtual Diarkis::System::Result SendGetSessionInfoBySessionID(const Diarkis::StdString& sessionID) = 0;
412 
423  virtual Diarkis::StdString GetSessionIDByType(uint8_t sessionType) const = 0;
424 
431  virtual bool HasSession(uint8_t sessionType) const = 0;
432 
441  virtual void SetUID(const char* userID) = 0;
442 
449  virtual void SetUID(const Diarkis::StdString& userID) = 0;
450 
457  virtual Diarkis::StdString GetUID() const = 0;
458 };
459 
460 extern "C"
461 {
468  DIARKIS_EXPORT IDiarkisSession* DiarkisCreateSession();
469 }
470 } // namespace Modules
471 } // namespace Diarkis
472 // ADD NAMESPACE } TAG
Diarkis::Modules::IDiarkisSession
Interface class for Session function.
Definition: session.h:25
LoggerFactory.h
Diarkis::Modules::DiarkisCreateSession
DIARKIS_EXPORT IDiarkisSession * DiarkisCreateSession()
Create IDiarkisSession class.
Diarkis::StdString
Definition: common.h:432
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 >
Diarkis
Definition: commands.h:9
Diarkis::Network
Definition: eventArgs.h:10
Diarkis::Modules::IDiarkisSession::~IDiarkisSession
virtual ~IDiarkisSession()
Destructor of IDiarkisSession.
Definition: session.h:34
result.h
Event.h
common.h
tcp.h
udp.h