Diarkis C++Client Library API Document
p2p.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/udp.h"
9 #include "diarkis/system/Event.h"
10 #include "diarkis/system/Thread.h"
11 #include "diarkis/system/result.h"
12 
13 using namespace Diarkis::Network;
14 
21 enum RudpType : uint8_t
22 {
44 };
45 
46 // ADD NAMESPACE NAME TAG
47 namespace Diarkis
48 {
49 namespace Modules
50 {
58 {
59  public:
66  virtual ~IDiarkisP2P() {}
67 
76  virtual void SetupP2P(const char* uid) = 0;
77 
86  virtual void SetLoggerFactory(std::shared_ptr<IDiarkisLoggerFactory> loggerFactory) = 0;
87 
100  virtual void SetHolePunchThreadParam(const Diarkis::System::DiarkisThreadScheduler& scheduler) = 0;
101 
108  virtual std::shared_ptr<IDiarkisEvent<const DiarkisReadyEventArgs&>> GetReadyEvent() = 0;
109 
116  virtual std::shared_ptr<IDiarkisEvent<const DiarkisFailEventArgs&>> GetFailEvent() = 0;
117 
124  virtual std::shared_ptr<IDiarkisEvent<const DiarkisP2PDisconnectEventArgs&>> GetDisconnectEvent() = 0;
125 
132  virtual std::shared_ptr<IDiarkisEvent<const DiarkisMessageEventArgs&>> GetMessageEvent() = 0;
133 
140  virtual std::shared_ptr<IDiarkisEvent<const DiarkisExceptionEventArgs&>> GetExceptionEvent() = 0;
141 
150  virtual std::shared_ptr<IDiarkisEvent<void*>> GetSchedulerAddNotifyEvent() = 0;
151 
158  virtual Diarkis::StdString GetPeerAddress() = 0;
159 
166  virtual bool IsConnected() = 0;
167 
188  virtual Diarkis::System::Result Connect(const char* uid,
189  const char** addressLists,
190  size_t addressListsSize,
191  size_t timeoutInMilliseconds = 10000,
192  bool bBuffering = false) = 0;
193 
200  virtual Diarkis::System::Result Connect(const Diarkis::StdString& uid,
201  const Diarkis::StdVector<Diarkis::StdString>& addressLists,
202  size_t timeoutInMilliseconds = 10000,
203  bool bBuffering = false) = 0;
204 
225  virtual Diarkis::System::Result SetEncryptionKeys(bool bEncryption,
226  const uint8_t* key,
227  size_t keySize,
228  const uint8_t* iv,
229  size_t ivSize,
230  const uint8_t* mackey,
231  size_t mackeySize) = 0;
232 
239  virtual Diarkis::System::Result SetEncryptionKeys(bool bEncryption,
240  const Diarkis::StdVector<uint8_t>& key,
241  const Diarkis::StdVector<uint8_t>& iv,
242  const Diarkis::StdVector<uint8_t>& mackey) = 0;
243 
250  virtual Diarkis::System::Result Disconnect() = 0;
251 
264  virtual Diarkis::System::Result Send(const uint8_t* message, size_t messageSize) = 0;
265 
272  virtual Diarkis::System::Result Send(const Diarkis::StdVector<uint8_t>& message) = 0;
273 
288  virtual Diarkis::System::Result RSend(const uint8_t* message, size_t messageSize, bool bFixedOrder) = 0;
289 
296  virtual Diarkis::System::Result RSend(const Diarkis::StdVector<uint8_t>& message, bool bFixedOrder) = 0;
297 
306  virtual Diarkis::System::Result NotifyP2PConnectCompleted() = 0;
307 
322  virtual void SetDebugP2PFailMode(bool enable) = 0;
323 
338  virtual void SetDebugP2PFailUIDs(const char** UIDList, size_t UIDListSize) = 0;
339 
346  virtual void SetDebugP2PFailUIDs(const Diarkis::StdVector<Diarkis::StdString>& UIDList) = 0;
347 
356  virtual void ClearDebugP2PFailUIDs() = 0;
357 };
358 
359 extern "C"
360 {
367  DIARKIS_EXPORT IDiarkisP2P* DiarkisCreateP2P(std::shared_ptr<IDiarkisUdp> udp);
368 }
369 
370 } // namespace Modules
371 } // namespace Diarkis
372  // ADD NAMESPACE } TAG
Diarkis::Modules::DiarkisCreateP2P
DIARKIS_EXPORT IDiarkisP2P * DiarkisCreateP2P(std::shared_ptr< IDiarkisUdp > udp)
Create IDiarkisP2P class.
LoggerFactory.h
UNRELIABLE_UNORDERED
@ UNRELIABLE_UNORDERED
No guarantee of packet delivery and order (UDP)
Definition: p2p.h:29
Diarkis::StdString
Definition: common.h:432
Diarkis::Modules::IDiarkisP2P::~IDiarkisP2P
virtual ~IDiarkisP2P()
Destructor for the IDiarkisP2P class.
Definition: p2p.h:66
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 >
RELIABLE_ORDERED
@ RELIABLE_ORDERED
Guarantee packet delivery and order.
Definition: p2p.h:43
eventArgs.h
Diarkis
Definition: commands.h:9
Diarkis::Network
Definition: eventArgs.h:10
result.h
Thread.h
Event.h
RELIABLE_UNORDERED
@ RELIABLE_UNORDERED
Guarantee packet delivery but not fixed order.
Definition: p2p.h:36
common.h
udp.h
RudpType
RudpType
Type of P2P RUDP functionality.
Definition: p2p.h:21
Diarkis::System::DiarkisThreadScheduler
Thread scheduler.
Definition: Thread.h:62
Diarkis::Modules::IDiarkisP2P
Interface class for P2P.
Definition: p2p.h:57
Diarkis::IDiarkisComponent
Implement this interface to be able to register to a scheduler for periodic update.
Definition: Component.h:28