Diarkis C++Client Library API Document
room.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"
10 using namespace Diarkis::Network;
11 
12 // ADD NAMESPACE NAME TAG
13 namespace Diarkis
14 {
15 namespace Modules
16 {
26 {
27  public:
34  virtual ~IDiarkisRoom() {}
35 
46  virtual void SetLoggerFactory(const std::shared_ptr<IDiarkisLoggerFactory>& loggerFactory, const Diarkis::StdString& loggerNameSuffix) = 0;
47 
56  virtual bool SetupAsTcp(const std::shared_ptr<IDiarkisTcp>& tcp) = 0;
57 
66  virtual bool SetupAsUdp(const std::shared_ptr<IDiarkisUdp>& udp) = 0;
67 
74  virtual bool SetTcp(const std::shared_ptr<IDiarkisTcp>& tcp) = 0;
75 
82  virtual bool SetUdp(const std::shared_ptr<IDiarkisUdp>& udp) = 0;
83 
92  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomCreationEventArgs&>> GetCreateEvent() = 0;
93 
102  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomJoinEventArgs&>> GetJoinEvent() = 0;
103 
112  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomSuccessEventArgs&>> GetLeaveEvent() = 0;
113 
122  virtual std::shared_ptr<IDiarkisEvent<void*>> GetMigrateStartEvent() = 0;
123 
130  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomMigrateCompleteEventArgs&>> GetMigrateCompleteEvent() = 0;
131 
138  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberJoinEvent() = 0;
139 
146  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberLeaveEvent() = 0;
147 
154  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberBroadcastEvent() = 0;
155 
162  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberMessageEvent() = 0;
163 
164  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberExclusiveBroadcastEvent() = 0;
165  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetMemberExclusiveMessageEvent() = 0;
166 
173  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomSuccessEventArgs&>> GetUpdatePropertiesEvent() = 0;
174 
181  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomPropertiesEventArgs&>> GetGetPropertiesEvent() = 0;
182 
189  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomPropertiesEventArgs&>> GetUpdateSyncPropertiesEvent() = 0;
190 
197  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomIncrementPropertyEventArgs&>> GetIncrementPropertyEvent() = 0;
198 
205  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomIncrementPropertySyncEventArgs&>> GetIncrementPropertySyncEvent() = 0;
206 
213  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomGetOwnerIDEventArgs&>> GetOwnerIDEvent() = 0;
214 
221  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomMemberIDsEventArgs&>> GetMemberIDSEvent() = 0;
222 
229  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomNumberOfMembersEventArgs&>> GetNumberOfMembersEvent() = 0;
230 
237  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomPayloadEventArgs&>> GetRegisterEvent() = 0;
238 
245  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomFindByTypeEventArgs&>> GetFindByTypeEvnet() = 0;
246 
253  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomPayloadEventArgs&>> GetReserveEvent() = 0;
254 
261  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomPayloadEventArgs&>> GetCancelReservationEvent() = 0;
262 
269  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomPayloadEventArgs&>> GetChatSyncResponseEvent() = 0;
270 
277  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomChatEventArgs&>> GetChatSyncEvent() = 0;
278 
285  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomChatLogEventArgs&>> GetChatLogEvent() = 0;
286 
293  virtual std::shared_ptr<IDiarkisEvent<const DiarkisP2PEventArgs&>> GetStartP2PSyncEvent() = 0;
294 
301  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomGetOwnerIDEventArgs&>> GetOwnerChangeEvent() = 0;
302 
309  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomObjectUpdateEventArgs&>> GetObjectUpdateEvent() = 0;
310 
317  virtual std::shared_ptr<IDiarkisEvent<const DiarkisRoomObjectUpdateResponseEventArgs&>> GetObjectUpdateResponseEvent() = 0;
318 
325  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetRelayEvent() = 0;
326 
333  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetRelayToEvent() = 0;
334 
341  virtual std::shared_ptr<IDiarkisEvent<void*>> GetOfflineEvent() = 0;
342 
371  virtual Diarkis::System::Result Create(uint16_t maxMembers, bool allowEmpty, bool join, uint16_t ttl, uint32_t interval = 200) = 0;
372 
391  virtual Diarkis::System::Result Join(const char* roomID, const uint8_t* message, size_t messageSize) = 0;
392 
399  virtual Diarkis::System::Result Join(const Diarkis::StdString& roomID, const Diarkis::StdVector<uint8_t>& message) = 0;
400 
433  virtual Diarkis::System::Result JoinRandom(uint16_t maxMembers,
434  uint16_t ttl,
435  const uint8_t* message,
436  size_t messageSize,
437  uint32_t interval = 200,
438  bool allowEmpty = false) = 0;
439 
446  virtual Diarkis::System::Result JoinRandom(uint16_t maxMembers,
447  uint16_t ttl,
448  const Diarkis::StdVector<uint8_t>& message,
449  uint32_t interval = 200,
450  bool allowEmpty = false) = 0;
451 
468  virtual Diarkis::System::Result Leave(const char* roomID, const uint8_t* message, size_t messageSize) = 0;
469 
476  virtual Diarkis::System::Result Leave(const Diarkis::StdString& roomID, const Diarkis::StdVector<uint8_t>& message) = 0;
477 
494  virtual Diarkis::System::Result BroadcastTo(const char* roomID, const uint8_t* message, size_t messageSize, bool reliable = true) = 0;
495 
502  virtual Diarkis::System::Result BroadcastTo(const Diarkis::StdString& roomID, const Diarkis::StdVector<uint8_t>& message, bool reliable = true) = 0;
503 
504  virtual Diarkis::System::Result ExclusiveBroadcastTo(const Diarkis::StdString& roomID,
505  const Diarkis::StdVector<uint8_t>& message,
506  bool reliable = true) = 0;
507  virtual Diarkis::System::Result ExclusiveBroadcastTo(const char* roomID, const uint8_t* message, size_t messageSize, bool reliable = true) = 0;
508  virtual Diarkis::System::Result ExclusiveMessageTo(const Diarkis::StdString& roomID,
510  const Diarkis::StdVector<uint8_t>& message,
511  bool reliable = true) = 0;
512  virtual Diarkis::System::Result ExclusiveMessageTo(const char* roomID,
513  const char** memberIDs,
514  size_t memberIDsCount,
515  const uint8_t* message,
516  size_t messageSize,
517  bool reliable = true) = 0;
518 
539  virtual Diarkis::System::Result MessageTo(const char* roomID,
540  const char** memberIDs,
541  size_t memberIDsCount,
542  const uint8_t* message,
543  size_t messageSize,
544  bool reliable = true) = 0;
545 
552  virtual Diarkis::System::Result MessageTo(const Diarkis::StdString& roomID,
554  const Diarkis::StdVector<uint8_t>& message,
555  bool reliable = true) = 0;
556 
573  virtual Diarkis::System::Result Relay(const uint8_t* message, size_t messageSize, bool reliable = true) = 0;
574 
581  virtual Diarkis::System::Result Relay(const Diarkis::StdVector<uint8_t>& message, bool reliable = true) = 0;
582 
605  virtual Diarkis::System::Result RelayTo(const char* roomID,
606  const char** memberIDs,
607  size_t memberIDsCount,
608  const uint8_t* message,
609  size_t messageSize,
610  bool reliable = true) = 0;
611 
618  virtual Diarkis::System::Result RelayTo(const Diarkis::StdString& roomID,
620  const Diarkis::StdVector<uint8_t>& message,
621  bool reliable = true) = 0;
622 
638  virtual Diarkis::System::Result UpdateProperties(const char* roomID,
640  bool sync = false) = 0;
641 
648  virtual Diarkis::System::Result UpdateProperties(const Diarkis::StdString& roomID,
650  bool sync = false) = 0;
651 
666  virtual Diarkis::System::Result GetProperties(const char* roomID, const char** propertyNames, size_t propertyCount) = 0;
667 
674  virtual Diarkis::System::Result GetProperties(const Diarkis::StdString& roomID, const Diarkis::StdVector<Diarkis::StdString>& propertyNames) = 0;
675 
692  virtual Diarkis::System::Result IncrementProperty(const char* propertyName, int64_t delta, bool sync) = 0;
693 
700  virtual Diarkis::System::Result IncrementProperty(Diarkis::StdString propertyName, int64_t delta, bool sync) = 0;
701 
710  virtual Diarkis::System::Result GetOwnerID() = 0;
711 
720  virtual Diarkis::System::Result GetMemberIDs() = 0;
721 
732  virtual Diarkis::System::Result GetNumberOfMembers(const char* roomID) = 0;
733 
740  virtual Diarkis::System::Result GetNumberOfMembers(const Diarkis::StdString& roomID) = 0;
741 
755  virtual Diarkis::System::Result Migrate() = 0;
756 
774  virtual Diarkis::System::Result Move(Diarkis::StdString roomID_,
775  const Diarkis::StdVector<uint8_t>& leaveMessage,
776  const Diarkis::StdVector<uint8_t>& joinMessage) = 0;
777 
790  virtual Diarkis::System::Result Register(uint32_t roomType, const char* roomName, const char* roomMetadata) = 0;
791 
798  virtual Diarkis::System::Result Register(uint32_t roomType, const Diarkis::StdString& roomName, const Diarkis::StdString& roomMetadata) = 0;
799 
814  virtual Diarkis::System::Result FindRoomsByType(uint32_t roomType, uint32_t limit) = 0;
815 
828  virtual Diarkis::System::Result Reserve(const char** userIDs, size_t userIDsSize) = 0;
829 
836  virtual Diarkis::System::Result Reserve(const Diarkis::StdVector<Diarkis::StdString>& userIDs) = 0;
837 
852  virtual Diarkis::System::Result CancelReservation(const char* cancelRoomID, const char** userIDs, size_t userIDsSize) = 0;
853 
860  virtual Diarkis::System::Result CancelReservation(const Diarkis::StdString& cancelRoomID, const Diarkis::StdVector<Diarkis::StdString>& userIDs) = 0;
861 
872  virtual Diarkis::System::Result CancelReservation(const Diarkis::StdVector<Diarkis::StdString>& userIDs) = 0;
873 
888  virtual Diarkis::System::Result SendChatMessage(const char* message) = 0;
889 
896  virtual Diarkis::System::Result SendChatMessage(const Diarkis::StdString& message) = 0;
897 
906  virtual Diarkis::System::Result GetChatLog() = 0;
907 
926  virtual Diarkis::System::Result StartP2PSync(uint8_t linkedClients = 0) = 0;
927 
954  virtual Diarkis::System::Result UpdateObject(RoomObjectMode mode,
955  const Diarkis::StdString& name,
957  bool reliable = true) = 0;
958 
965  virtual const Diarkis::StdString& GetRoomID() = 0;
966 
973  virtual void SetRoomID(const char* roomID) = 0;
974 
981  virtual void SetRoomID(const Diarkis::StdString& roomID) = 0;
982 
989  virtual void RegisterCustomMessagePush(uint8_t version, uint16_t command, std::function<void(const Diarkis::StdVector<uint8_t>&)> callback) = 0;
990 };
991 
992 extern "C"
993 {
1000  DIARKIS_EXPORT IDiarkisRoom* DiarkisCreateRoom();
1001 }
1002 
1003 } // namespace Modules
1004 } // namespace Diarkis
1005  // ADD NAMESPACE } TAG
LoggerFactory.h
Diarkis::StdString
Definition: common.h:432
Diarkis::StdUnorderedMap
std::unordered_map< Key, Value, StdStringHash< Key >, std::equal_to< Key >, Diarkis::DiarkisStdAllocator< std::pair< const Key, Value > >> StdUnorderedMap
Definition: common.h:535
Diarkis::Modules::IDiarkisRoom
Interface class for Room function.
Definition: room.h:25
Diarkis::System::Result
Contains information about a specific result value. Can be compared against another Result structure....
Definition: result.h:37
Diarkis::StdVector< uint8_t >
Diarkis::Modules::IDiarkisRoom::~IDiarkisRoom
virtual ~IDiarkisRoom()
Destructor for the IDiarkisField class.
Definition: room.h:34
Diarkis
Definition: commands.h:9
Diarkis::Network
Definition: eventArgs.h:10
result.h
common.h
tcp.h
udp.h
Diarkis::Modules::DiarkisCreateRoom
DIARKIS_EXPORT IDiarkisRoom * DiarkisCreateRoom()
Create IDiarkisRoom class.
Diarkis::RoomObjectMode
RoomObjectMode
An enumerated type that represents how to update a room object.
Definition: eventArgs.h:27