Diarkis C++Client Library API Document
DiarkisRoomBase.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/modules/room.h"
8 #include "diarkis/network/tcp.h"
9 #include "diarkis/network/udp.h"
10 #include "logging/LoggerFactory.h"
11 #include "protocol.h"
12 #include "DiarkisP2PBase.h"
13 
14 using namespace Diarkis::Modules;
15 
23 {
24  public:
32 
39  virtual ~DiarkisRoomBase();
40 
55  virtual void SetupTcpRoom(const std::shared_ptr<IDiarkisTcp>& tcp, const std::shared_ptr<LoggerFactory>& loggerFactory, bool bRetry);
56 
73  virtual void SetupUdpRoom(const std::shared_ptr<IDiarkisUdp>& udp,
74  const std::shared_ptr<LoggerFactory>& loggerFactory,
75  const std::shared_ptr<DiarkisP2PBase>& p2pBase,
76  bool bRetry);
77 
84  std::shared_ptr<IDiarkisRoom> GetRoom();
85 
94  void SetJoinRoomID(const char* roomID);
95 
102  void SetJoinRoomID(const std::string& roomID);
103 
132  virtual void SendCreateRoom(uint16_t maxMembers, bool allowEmpty, bool join, uint16_t ttl, uint32_t interval);
133 
148  virtual void SendJoinRoom(const char* uid);
149 
156  virtual void SendJoinRoom(const std::string& uid);
157 
168  virtual void SendJoinRoom(const char* roomID, const char* uid);
169 
176  virtual void SendJoinRoom(const std::string& roomID, const std::string& uid);
177 
208  virtual void SendJoinRandomRoom(const char* uid, uint32_t maxMembers, uint16_t ttl, uint32_t interval, bool allowEmpty);
209 
216  virtual void SendJoinRandomRoom(const std::string& uid, uint32_t maxMembers, uint16_t ttl, uint32_t interval, bool allowEmpty);
217 
232  virtual void SendBroadcastToRoom(const uint8_t* payload, size_t payloadSize, bool reliable);
233 
240  virtual void SendBroadcastToRoom(const std::vector<uint8_t>& payload, bool reliable);
241 
260  virtual void SendMessageToRoom(const char** memberIDs, size_t memberIDsCount, const uint8_t* payload, size_t payloadSize, bool reliable);
261 
268  virtual void SendMessageToRoom(const std::vector<std::string>& memberIDs, const std::vector<uint8_t>& payload, bool reliable);
269 
286  virtual void SendRelay(const uint8_t* payload, size_t payloadSize, bool reliable);
287 
294  virtual void SendRelay(const std::vector<uint8_t>& payload, bool reliable);
295 
316  virtual void SendRelayTo(const char** memberIDs, size_t memberIDsCount, const uint8_t* payload, size_t payloadSize, bool reliable);
317 
324  virtual void SendRelayTo(const std::vector<std::string>& memberIDs, const std::vector<uint8_t>& payload, bool reliable);
325 
340  virtual void SendLeaveRoom(const char* uid);
341 
348  virtual void SendLeaveRoom(const std::string& uid);
349 
364  virtual void SendFindByTypeRoom(uint32_t roomType, uint32_t limit);
365 
380  virtual void SendRegisterRoom(uint32_t roomType, const char* roomName, const char* roomMetadata);
381 
388  virtual void SendRegisterRoom(uint32_t roomType, const std::string& roomName, const std::string& roomMetadata);
389 
404  virtual void SendMigrateRoom(void);
405 
414  virtual void SendGetOwnerID(void);
415 
424  virtual void SendGetMemberIDs(void);
425 
434  virtual void SendGetNumberOfMembers(void);
435 
448  virtual void SendUpdateProperties(const std::unordered_map<std::string, std::vector<uint8_t>>& properties, bool sync = false);
449 
462  virtual void SendGetProperties(const char** propertyNames, size_t propertyNamesCount);
463 
470  virtual void SendGetProperties(const std::vector<std::string>& propertyNames);
471 
488  virtual void SendIncrementProperty(Diarkis::StdString propertyName, int64_t delta, bool sync);
489 
502  virtual void SendReserveRoom(const char** userIDs, size_t userIDsCount);
503 
510  virtual void SendReserveRoom(const std::vector<std::string>& userIDs);
511 
526  virtual void SendCancelReservationRoom(const char* cancelRoomID, const char** userIDs, size_t userIDsCount);
527 
534  virtual void SendCancelReservationRoom(const std::string& cancelRoomID, const std::vector<std::string>& userIDs);
535 
550  virtual void SendChatMessage(const char* message);
551 
558  virtual void SendChatMessage(const std::string& message);
559 
568  virtual void SendGetChatLog(void);
569 
588  virtual void SendStartP2PSync(uint8_t linkedClients = 0);
589 
616  virtual void SendUpdateObject(RoomObjectMode mode, const std::string& name, const std::unordered_map<std::string, double>& obj, bool reliable = true);
617 
624  bool IsJoin();
625 
632  bool IsFail();
633 
640  bool IsFind();
641 
648  bool IsNotFind();
649 
656  bool IsMigrate();
657 
664  bool IsLeave();
665 
672  bool IsReserve();
673 
680  Diarkis::StdString GetRoomID(void);
681 
688  Diarkis::StdString GetOwnerUID(void);
689 
696  Diarkis::StdString GetOwnUID(void) const;
697 
706  void SetOwnUID(const char* uid);
707 
714  void SetOwnUID(const std::string& uid);
715 
724  void GetRoomMembers(Diarkis::StdVector<Diarkis::StdString>& memberList);
725 
732  const Diarkis::StdVector<Diarkis::StdString>& GetRoomMembers() const;
733 
734  protected:
743  virtual void OnRoomCreation(const DiarkisRoomCreationEventArgs& e);
744 
753  virtual void OnRoomJoin(const DiarkisRoomJoinEventArgs& e);
754 
763  virtual void OnRoomLeave(const DiarkisRoomSuccessEventArgs& e);
764 
773  virtual void OnRoomMigrateStart(void);
774 
781  virtual void OnRoomMigrateComplete(const DiarkisRoomMigrateCompleteEventArgs& e);
782 
789  virtual void OnRoomMemberJoin(const DiarkisPayloadEventArgs& e);
790 
797  virtual void OnRoomMemberLeave(const DiarkisPayloadEventArgs& e);
798 
805  virtual void OnRoomUpdateProperties(const DiarkisRoomSuccessEventArgs& e);
806 
813  virtual void OnRoomGetProperties(const DiarkisRoomPropertiesEventArgs& e);
814 
821  virtual void OnRoomUpdateSyncProperties(const DiarkisRoomPropertiesEventArgs& e);
822 
829  virtual void OnRoomIncrementProperty(const DiarkisRoomIncrementPropertyEventArgs& e);
830 
836  virtual void OnRoomIncrementPropertySync(const DiarkisRoomIncrementPropertySyncEventArgs& e);
837 
844  virtual void OnRoomGetOwnerID(const DiarkisRoomGetOwnerIDEventArgs& e);
845 
852  virtual void OnRoomMemberIDs(const DiarkisRoomMemberIDsEventArgs& e);
853 
860  virtual void OnRoomNumberOfMembers(const DiarkisRoomNumberOfMembersEventArgs& e);
861 
868  virtual void OnRoomOwnerChange(const DiarkisRoomGetOwnerIDEventArgs& e);
869 
876  virtual void OnRoomMemberBroadcast(const DiarkisPayloadEventArgs& e);
877 
884  virtual void OnRoomMemberMessage(const DiarkisPayloadEventArgs& e);
885 
892  virtual void OnRoomRelay(const DiarkisPayloadEventArgs& e);
893 
900  virtual void OnRoomRelayTo(const DiarkisPayloadEventArgs& e);
901 
908  virtual void OnRoomRegister(const DiarkisRoomPayloadEventArgs& e);
909 
916  virtual void OnRoomFindByType(const DiarkisRoomFindByTypeEventArgs& e);
917 
924  virtual void OnRoomReserve(const DiarkisRoomPayloadEventArgs& e);
925 
932  virtual void OnRoomCancelReserve(const DiarkisRoomPayloadEventArgs& e);
933 
940  virtual void OnChatSyncResponse(const DiarkisRoomPayloadEventArgs& e);
941 
948  virtual void OnChatSync(const DiarkisRoomChatEventArgs& e);
949 
956  virtual void OnRoomChatLog(const DiarkisRoomChatLogEventArgs& e);
957 
964  virtual void OnStartP2PSync(const DiarkisP2PEventArgs& e);
965 
972  virtual void OnRoomObjectUpdate(const DiarkisRoomObjectUpdateEventArgs& e);
973 
980  virtual void OnRoomObjectUpdateResponse(const DiarkisRoomObjectUpdateResponseEventArgs& e);
981 
988  virtual void OnOffline();
989 
996  std::shared_ptr<IDiarkisTcp> tcp_;
997 
1004  std::shared_ptr<IDiarkisUdp> udp_;
1005 
1012  std::shared_ptr<IDiarkisRoom> room_;
1013 
1020  std::shared_ptr<DiarkisP2PBase> p2pBase_;
1021 
1028  std::shared_ptr<IDiarkisLogger> logger_;
1029 
1037 
1045 
1053 
1060  std::recursive_mutex list_mutex_;
1061 
1069 
1077 
1085 
1093 
1101 
1102 };
Diarkis::DiarkisRoomIncrementPropertyEventArgs
Argument of the callback event called when the value of the Room property is increased or decreased.
Definition: eventArgs.h:767
Diarkis::DiarkisRoomObjectUpdateResponseEventArgs
Arguments of callback events called when received the response of Diarkis::Modules::IDiarkisRoom::Upd...
Definition: eventArgs.h:1270
DiarkisRoomBase::udp_
std::shared_ptr< IDiarkisUdp > udp_
Pointer to IDiarkisUdp class.
Definition: DiarkisRoomBase.h:1004
DiarkisRoomBase::room_
std::shared_ptr< IDiarkisRoom > room_
Pointer to IDiarkisRoom class.
Definition: DiarkisRoomBase.h:1012
Diarkis::DiarkisPayloadEventArgs
Arguments of the callback event called when a payload is sent or received.
Definition: eventArgs.h:252
Diarkis::DiarkisRoomIncrementPropertySyncEventArgs
Argument of the callback event called when synchronizing the value of a Room property.
Definition: eventArgs.h:827
Diarkis::DiarkisRoomObjectUpdateEventArgs
Arguments of callback events called when update objects by Diarkis::Modules::IDiarkisRoom::UpdateObje...
Definition: eventArgs.h:1228
Diarkis::DiarkisRoomJoinEventArgs
Arguments of the callback event called when joined a room.
Definition: eventArgs.h:594
Diarkis::DiarkisRoomSuccessEventArgs
Arguments for callback events when exiting a Room or updating Room properties.
Definition: eventArgs.h:699
DiarkisP2PBase.h
DiarkisRoomBase::roomID_
Diarkis::StdString roomID_
Room ID of the participating Room.
Definition: DiarkisRoomBase.h:1044
Diarkis::StdString
Definition: common.h:432
DiarkisRoomBase::roomConnect_
ConnectState roomConnect_
Room state.
Definition: DiarkisRoomBase.h:1052
DiarkisRoomBase::logger_
std::shared_ptr< IDiarkisLogger > logger_
Pointer to IDiarkisLogger class.
Definition: DiarkisRoomBase.h:1028
Diarkis::DiarkisRoomNumberOfMembersEventArgs
Arguments of the callback event called when retrieving the number of members in the Room.
Definition: eventArgs.h:971
protocol.h
Diarkis::Modules
Definition: directMessage.h:16
Diarkis::StdVector< Diarkis::StdString >
Diarkis::DiarkisRoomMigrateCompleteEventArgs
Arguments of the callback event called when room migration competed.
Definition: eventArgs.h:647
DiarkisRoomBase::bReserved_
bool bReserved_
Whether you reserved a Room or not.
Definition: DiarkisRoomBase.h:1100
Diarkis::DiarkisRoomFindByTypeEventArgs
Arguments of callback events called when received the result of Diarkis::Modules::IDiarkisRoom::FindR...
Definition: eventArgs.h:1092
Diarkis::DiarkisRoomCreationEventArgs
Arguments of the callback event called when created a room.
Definition: eventArgs.h:533
DiarkisRoomBase::ownUID_
Diarkis::StdString ownUID_
自分のユーザーID
Definition: DiarkisRoomBase.h:1076
ConnectState
ConnectState
connection state
Definition: protocol.h:40
DiarkisRoomBase::eventUnsubscriptions_
Diarkis::StdVector< std::function< void()> > eventUnsubscriptions_
Lambda functions list.
Definition: DiarkisRoomBase.h:1036
Diarkis::DiarkisRoomGetOwnerIDEventArgs
Argument of the callback event called when the Room Owner's User ID is retrieved.
Definition: eventArgs.h:859
DiarkisRoomBase::createAtServer_
int64_t createAtServer_
The time the Room you are currently in was created on the server.
Definition: DiarkisRoomBase.h:1092
Diarkis::DiarkisP2PEventArgs
Arguments of the callback event called when start P2P connection.
Definition: eventArgs.h:1817
DiarkisRoomBase::ownerID_
Diarkis::StdString ownerID_
User ID of the Room owner.
Definition: DiarkisRoomBase.h:1084
common.h
tcp.h
udp.h
DiarkisRoomBase::list_mutex_
std::recursive_mutex list_mutex_
roomMemberIDs Mutex
Definition: DiarkisRoomBase.h:1060
Diarkis::DiarkisRoomChatEventArgs
Arguments of callback events called when received the chat message by Diarkis::Modules::IDiarkisRoom:...
Definition: eventArgs.h:1144
DiarkisRoomBase::p2pBase_
std::shared_ptr< DiarkisP2PBase > p2pBase_
Pointer to DiarkisP2PBase class.
Definition: DiarkisRoomBase.h:1020
room.h
Diarkis::DiarkisRoomPropertiesEventArgs
Argument of the callback event called when the Room property is acquired.
Definition: eventArgs.h:743
DIARKIS_API
#define DIARKIS_API
Definition: common.h:47
Diarkis::DiarkisRoomMemberIDsEventArgs
Arguments of the callback event called when retrieving the list of participating members of the Room.
Definition: eventArgs.h:911
Diarkis::RoomObjectMode
RoomObjectMode
An enumerated type that represents how to update a room object.
Definition: eventArgs.h:27
DiarkisRoomBase
Base class that wraps the IDiarkisRoom class for easy use of Room functionality.
Definition: DiarkisRoomBase.h:22
DiarkisRoomBase::tcp_
std::shared_ptr< IDiarkisTcp > tcp_
Pointer to IDiarkisTcp class.
Definition: DiarkisRoomBase.h:996
Diarkis::DiarkisRoomPayloadEventArgs
Arguments of callback events called when executing Room Regiser, Reserve, etc.
Definition: eventArgs.h:1040
DiarkisRoomBase::roomMemberIDs_
Diarkis::StdVector< Diarkis::StdString > roomMemberIDs_
List of Room members' user IDs.
Definition: DiarkisRoomBase.h:1068
Diarkis::DiarkisRoomChatLogEventArgs
Arguments of callback events called when received the result of Diarkis::Modules::IDiarkisRoom::GetCh...
Definition: eventArgs.h:1168