Diarkis C++Client Library API Document
matchMaker.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 #include "diarkis/system/Event.h"
11 #include "diarkis/system/result.h"
12 using namespace Diarkis::Network;
13 
14 // ADD NAMESPACE NAME TAG
15 namespace Diarkis
16 {
17 namespace Modules
18 {
26 {
27  uint32_t value;
29 };
30 
40 {
41  public:
48  virtual ~IDiarkisMatchMaker() {}
49 
60  virtual void SetLoggerFactory(const std::shared_ptr<IDiarkisLoggerFactory>& loggerFactory, Diarkis::StdString loggerNameSuffix) = 0;
61 
68  virtual bool SetupAsTcp(const std::shared_ptr<IDiarkisTcp>& tcp) = 0;
69 
76  virtual bool SetupAsUdp(const std::shared_ptr<IDiarkisUdp>& udp) = 0;
77 
86  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMHostEventArgs&>> GetHostEvent() = 0;
87 
96  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetAbortEvent() = 0;
97 
106  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMSyncEventArgs&>> GetDisbandEvent() = 0;
107 
116  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMSyncEventArgs&>> GetMemberLeaveEvent() = 0;
117 
126  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMSyncEventArgs&>> GetMemberJoinEvent() = 0;
127 
136  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMSyncEventArgs&>> GetMemberSyncEvent() = 0;
137 
146  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMJoinResponseEventArgs&>> GetJoinEvent() = 0;
147 
156  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetLeaveEvent() = 0;
157 
166  virtual std::shared_ptr<IDiarkisEvent<void*>> GetCompleteEvent() = 0;
167 
176  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMJoinResponseEventArgs&>> GetSearchEvent() = 0;
177 
186  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResultEventArgs&>> GetResultsEvent() = 0;
187 
196  virtual std::shared_ptr<IDiarkisEvent<const DiarkisP2PEventArgs&>> GetP2PAddressEvent() = 0;
197 
206  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetP2PResponseEvent() = 0;
207 
216  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetBackfillEvent() = 0;
217 
226  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPayloadEventArgs&>> GetKickEvent() = 0;
227 
236  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetKickResponseEvent() = 0;
237 
246  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetCommitEvent() = 0;
247 
256  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMJoinResponseEventArgs&>> GetCompleteCommitEvent() = 0;
257 
266  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMHostEventArgs&>> GetTeamHostEvent() = 0;
267 
276  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMJoinResponseEventArgs&>> GetTeamSearchEvent() = 0;
277 
286  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResultEventArgs&>> GetTeamResultsEvent() = 0;
287 
296  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMSyncEventArgs&>> GetTeamMemberJoinEvent() = 0;
297 
304  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetIssueTicketResponseEvent() = 0;
305 
314  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetTicketCompleteEvent() = 0;
315 
324  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMStringEventArgs&>> GetHostChangeEvent() = 0;
325 
334  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMTicketTypeEventArgs&>> GetTicketCancelEvent() = 0;
335 
344  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetTicketCancelResponseEvent() = 0;
345 
354  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetTicketBroadcastResponseEvent() = 0;
355 
364  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMSyncEventArgs&>> GetTicketBroadcastEvent() = 0;
365 
372  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMMResponseEventArgs&>> GetTicketLeaveEvent() = 0;
373 
380  virtual const Diarkis::StdString& GetRoomID() = 0;
381 
390  virtual void SetProfileID(const Diarkis::StdString& profileID) = 0;
391 
400  virtual const Diarkis::StdString& GetProfileID() = 0;
401 
414  virtual void SetProperties(const MatchMakerCondition* conditionMap, size_t conditionMapSize) = 0;
415 
422  virtual void SetProperties(const Diarkis::StdVector<MatchMakerCondition>& conditionMap) = 0;
423 
432  virtual Diarkis::StdVector<MatchMakerCondition>& GetProperties() = 0;
433 
442  virtual void SetUID(const char* profileID) = 0;
443 
450  virtual void SetUID(const Diarkis::StdString& profileID) = 0;
451 
458  virtual const Diarkis::StdString& GetUID() = 0;
459 
470  virtual void SetTime(uint16_t ttl) = 0;
471 
480  virtual uint16_t GetTime() = 0;
481 
494  virtual void SetMetaData(const uint8_t* metadata, size_t metadataSize) = 0;
495 
502  virtual void SetMetaData(const Diarkis::StdVector<uint8_t>& metadata) = 0;
503 
512  virtual Diarkis::StdVector<uint8_t>& GetMetaData() = 0;
513 
522  virtual void SetMaxMembers(uint16_t maxMembers) = 0;
523 
532  virtual uint16_t GetMaxMembers() = 0;
533 
548  virtual void SetReserveOnly(bool reverveOnly) = 0;
549 
556  virtual bool GetReserveOnly() = 0;
557 
566  virtual void SetTag(const char* tag) = 0;
567 
574  virtual void SetTag(const Diarkis::StdString& tag) = 0;
575 
582  virtual const Diarkis::StdString& GetTag() = 0;
583 
592  virtual bool HostMatchmaking(void) = 0;
593 
602  virtual void AbortMatchmaking(void) = 0;
603 
616  virtual void DisbandMatchmaking(const uint8_t* message, size_t messageSize) = 0;
617 
624  virtual void DisbandMatchmaking(const Diarkis::StdVector<uint8_t>& message) = 0;
625 
640  virtual void ClaimReservedMatchmaking(const uint8_t* message, size_t messageSize) = 0;
641 
648  virtual void ClaimReservedMatchmaking(const Diarkis::StdVector<uint8_t>& message) = 0;
649 
664  virtual void JoinMatchmakingFromResult(MatchMakerResultItem& result, const uint8_t* message, size_t messageSize) = 0;
665 
672  virtual void JoinMatchmakingFromResult(MatchMakerResultItem& result, const Diarkis::StdVector<uint8_t>& message) = 0;
673 
686  virtual void LeaveMatchmaking(const uint8_t* message, size_t messageSize) = 0;
687 
694  virtual void LeaveMatchmaking(const Diarkis::StdVector<uint8_t>& message) = 0;
695 
708  virtual void Sync(const uint8_t* message, size_t messageSize) = 0;
709 
716  virtual void Sync(const Diarkis::StdVector<uint8_t>& message) = 0;
717 
728  virtual void NotifyMatchmakingCompletion(void) = 0;
729 
748  virtual void P2PAddressSync(uint8_t linkedClientNum = 0) = 0;
749 
778  virtual void Search(const char** profileIDs,
779  size_t profileIDsCount,
780  const char* tag,
781  const MatchMakerCondition* conditions,
782  size_t conditionsCount,
783  bool joinFlag,
784  uint16_t howmany,
785  const uint8_t* message,
786  size_t messageSize) = 0;
787 
794  virtual void Search(const Diarkis::StdVector<Diarkis::StdString>& profileIDs,
795  const Diarkis::StdString& tag,
796  const Diarkis::StdVector<MatchMakerCondition>& conditions,
797  bool joinFlag,
798  uint16_t howmany,
799  const Diarkis::StdVector<uint8_t>& message) = 0;
800 
813  virtual bool StartBackfill(const char* roomID) = 0;
814 
821  virtual bool StartBackfill(const Diarkis::StdString& roomID) = 0;
822 
835  virtual void Kick(const char* userID) = 0;
836 
842  virtual void Kick(const Diarkis::StdString& userID) = 0;
843 
860  virtual void Commit(void) = 0;
861 
870  virtual bool TeamHostMatchmaking(void) = 0;
871 
900  virtual void TeamSearch(const char** profileIDs,
901  size_t profileIDsCount,
902  const char* tag,
903  const MatchMakerCondition* conditions,
904  size_t conditionsCount,
905  bool joinFlag,
906  uint16_t howmany,
907  const uint8_t* message,
908  size_t messageSize) = 0;
909 
916  virtual void TeamSearch(const Diarkis::StdVector<Diarkis::StdString>& profileIDs,
917  const Diarkis::StdString& tag,
918  const Diarkis::StdVector<MatchMakerCondition>& conditions,
919  bool joinFlag,
920  uint16_t howmany,
921  const Diarkis::StdVector<uint8_t>& message) = 0;
922 
935  virtual void IssueTicket(uint8_t ticketType = 0) = 0;
936 
947  virtual void TicketCancel(uint8_t ticketType = 0) = 0;
948 
963  virtual void TicketBroadcast(uint8_t ticketType, const uint8_t* message, size_t messageSize) = 0;
964 
971  virtual void TicketBroadcast(uint8_t ticketType, const Diarkis::StdVector<uint8_t>& message) = 0;
972 
983  virtual void TicketLeave(uint8_t ticketType) = 0;
984 };
985 
986 extern "C"
987 {
994  DIARKIS_EXPORT IDiarkisMatchMaker* DiarkisCreateMatchMaker();
995 }
996 
997 } // namespace Modules
998 } // namespace Diarkis
999 // ADD NAMESPACE } TAG
LoggerFactory.h
Diarkis::Modules::IDiarkisMatchMaker::~IDiarkisMatchMaker
virtual ~IDiarkisMatchMaker()
Destructor for the IDiarkisMatchMaker class.
Definition: matchMaker.h:48
Diarkis::StdString
Definition: common.h:432
Diarkis::Modules::MatchMakerCondition::value
uint32_t value
Definition: matchMaker.h:27
Diarkis::Modules::IDiarkisMatchMaker
Interface class for MatchMaker function.
Definition: matchMaker.h:39
Diarkis::StdVector
Definition: common.h:406
eventArgs.h
Diarkis::Modules::MatchMakerCondition
Search condition for matchmaking.
Definition: matchMaker.h:25
Diarkis::MatchMakerResultItem
Structure to contain MatchMaker search results.
Definition: eventArgs.h:64
Diarkis
Definition: commands.h:9
Diarkis::Network
Definition: eventArgs.h:10
result.h
Event.h
common.h
tcp.h
Diarkis::Modules::MatchMakerCondition::key
Diarkis::StdString key
Definition: matchMaker.h:28
udp.h
Diarkis::Modules::DiarkisCreateMatchMaker
DIARKIS_EXPORT IDiarkisMatchMaker * DiarkisCreateMatchMaker()
Create IDiarkisMatchMaker class.
GetTime
int64_t GetTime(void)
Definition: misc.cpp:380