Diarkis C++Client Library API Document
DiarkisRoomBase.h
[詳解]
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
Roomプロパティの値が増加または減少したときに呼び出されるコールバックイベントの引数。
Definition: eventArgs.h:767
Diarkis::DiarkisRoomObjectUpdateResponseEventArgs
Diarkis::Modules::IDiarkisRoom::UpdateObject() の応答を受信した際にコールバックイベントが呼び出される際の引数
Definition: eventArgs.h:1270
DiarkisRoomBase::udp_
std::shared_ptr< IDiarkisUdp > udp_
IDiarkisUdpクラスへのポインタ
Definition: DiarkisRoomBase.h:1004
DiarkisRoomBase::room_
std::shared_ptr< IDiarkisRoom > room_
IDiarkisRoom クラスへのポインター
Definition: DiarkisRoomBase.h:1012
Diarkis::DiarkisPayloadEventArgs
ペイロードが送受信されたときに呼び出されるコールバックイベントの引数
Definition: eventArgs.h:252
Diarkis::DiarkisRoomIncrementPropertySyncEventArgs
Roomプロパティの値を同期する際に呼び出されるコールバックイベントの引数
Definition: eventArgs.h:827
Diarkis::DiarkisRoomObjectUpdateEventArgs
Diarkis::Modules::IDiarkisRoom::UpdateObject() によってオブジェクトを更新する際に呼び出されるコールバックイベントの引数
Definition: eventArgs.h:1228
Diarkis::DiarkisRoomJoinEventArgs
ルームに参加したときに呼び出されるコールバックイベントの引数
Definition: eventArgs.h:594
Diarkis::DiarkisRoomSuccessEventArgs
Roomを退出したり、Roomのプロパティを更新する際のコールバックイベント用の引数
Definition: eventArgs.h:699
DiarkisP2PBase.h
DiarkisRoomBase::roomID_
Diarkis::StdString roomID_
参加しているRoomのRoom ID
Definition: DiarkisRoomBase.h:1044
Diarkis::StdString
Definition: common.h:432
DiarkisRoomBase::roomConnect_
ConnectState roomConnect_
Roomの状態
Definition: DiarkisRoomBase.h:1052
DiarkisRoomBase::logger_
std::shared_ptr< IDiarkisLogger > logger_
IDiarkisLoggerクラスへのポインタ
Definition: DiarkisRoomBase.h:1028
Diarkis::DiarkisRoomNumberOfMembersEventArgs
Roomのメンバー数を取得した際に呼び出されるコールバックイベントの引数。
Definition: eventArgs.h:971
protocol.h
Diarkis::Modules
Definition: directMessage.h:16
Diarkis::StdVector< Diarkis::StdString >
Diarkis::DiarkisRoomMigrateCompleteEventArgs
Roomの移行が完了した際に呼び出されるコールバックイベントの引数
Definition: eventArgs.h:647
DiarkisRoomBase::bReserved_
bool bReserved_
あなたがRoomを予約したかどうか
Definition: DiarkisRoomBase.h:1100
Diarkis::DiarkisRoomFindByTypeEventArgs
Diarkis::Modules::IDiarkisRoom::FindRoomsByType()の結果を受け取った際に呼ばれるコールバックイベントの引数
Definition: eventArgs.h:1092
Diarkis::DiarkisRoomCreationEventArgs
ルームが作成されたときに呼び出されるコールバックイベントの引数
Definition: eventArgs.h:533
DiarkisRoomBase::ownUID_
Diarkis::StdString ownUID_
自分のユーザーID
Definition: DiarkisRoomBase.h:1076
ConnectState
ConnectState
接続状態
Definition: protocol.h:40
DiarkisRoomBase::eventUnsubscriptions_
Diarkis::StdVector< std::function< void()> > eventUnsubscriptions_
ラムダ関数のリスト
Definition: DiarkisRoomBase.h:1036
Diarkis::DiarkisRoomGetOwnerIDEventArgs
Room OwnerのユーザーIDが取得されたときに呼び出されるコールバックイベントの引数。
Definition: eventArgs.h:859
DiarkisRoomBase::createAtServer_
int64_t createAtServer_
現在いるRoomがサーバー上で作成された時間
Definition: DiarkisRoomBase.h:1092
Diarkis::DiarkisP2PEventArgs
Definition: eventArgs.h:1817
DiarkisRoomBase::ownerID_
Diarkis::StdString ownerID_
RoomオーナーのユーザーID
Definition: DiarkisRoomBase.h:1084
common.h
tcp.h
udp.h
DiarkisRoomBase::list_mutex_
std::recursive_mutex list_mutex_
roomMemberIDsのミューテックス
Definition: DiarkisRoomBase.h:1060
Diarkis::DiarkisRoomChatEventArgs
Diarkis::Modules::IDiarkisRoom::SendChatMessage によってチャットメッセージを受信したときに呼び出されるコールバックイベントの引数
Definition: eventArgs.h:1144
DiarkisRoomBase::p2pBase_
std::shared_ptr< DiarkisP2PBase > p2pBase_
DiarkisP2PBaseクラスへのポインタ
Definition: DiarkisRoomBase.h:1020
room.h
Diarkis::DiarkisRoomPropertiesEventArgs
Room プロパティが取得されたときに呼び出されるコールバックイベントの引数
Definition: eventArgs.h:743
DIARKIS_API
#define DIARKIS_API
Definition: common.h:47
Diarkis::DiarkisRoomMemberIDsEventArgs
Roomの参加メンバーリストを取得する際に呼び出されるコールバックイベントの引数。
Definition: eventArgs.h:911
Diarkis::RoomObjectMode
RoomObjectMode
ルームオブジェクトを更新する方法を表す列挙型。
Definition: eventArgs.h:27
DiarkisRoomBase
Room機能を簡単に利用するためにIDiarkisRoomクラスをラップする基本クラス
Definition: DiarkisRoomBase.h:22
DiarkisRoomBase::tcp_
std::shared_ptr< IDiarkisTcp > tcp_
IDiarkisTcpクラスへのポインタ
Definition: DiarkisRoomBase.h:996
Diarkis::DiarkisRoomPayloadEventArgs
Room Regiser、Reserveなどを実行する際にコールバックイベントが呼び出される際の引数。
Definition: eventArgs.h:1040
DiarkisRoomBase::roomMemberIDs_
Diarkis::StdVector< Diarkis::StdString > roomMemberIDs_
RoomメンバーのユーザーIDのリスト
Definition: DiarkisRoomBase.h:1068
Diarkis::DiarkisRoomChatLogEventArgs
Diarkis::Modules::IDiarkisRoom::GetChatLog()の結果を受信した際に呼び出されるコールバックイベントの引数
Definition: eventArgs.h:1168