Diarkis C++Client Library API Document
transport.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 <ostream>
7 
8 #include "diarkis/common.h"
11 #include "diarkis/system/Event.h"
14 #include "diarkis/system/result.h"
15 
16 using namespace Diarkis;
17 
18 // ADD NAMESPACE NAME TAG
19 namespace Diarkis { namespace Network
20 {
27 enum class DiarkisTransportType: std::uint8_t
28 {
30  TCP = 1,
32  UDP
33 };
34 
35 DIARKIS_EXPORT std::ostream &operator<<(std::ostream& os, const DiarkisTransportType type);
36 
37 class DIARKIS_EXPORT IDiarkisTransport : public IDiarkisComponent
38 {
39  public:
46  virtual ~IDiarkisTransport() { }
47 
54  virtual void SetLoggerFactory(std::shared_ptr<IDiarkisLoggerFactory> loggerFactory) = 0;
55 
62  virtual DiarkisTransportType GetType() const = 0;
63 
70  virtual std::shared_ptr<IDiarkisEvent<const DiarkisConnectionEventArgs&>> GetConnectedEvent() = 0;
77  virtual std::shared_ptr<IDiarkisEvent<bool>> GetDisconnectedEvent() = 0;
84  virtual std::shared_ptr<IDiarkisEvent<const DiarkisResponseEventArgs&>> GetResponseEvent() = 0;
91  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPushEventArgs&>> GetPushEvent() = 0;
98  virtual std::shared_ptr<IDiarkisEvent<void*>> GetOfflineEvent() = 0;
105  virtual std::shared_ptr<IDiarkisEvent<void*>> GetRoomOfflineEvent() = 0;
112  virtual std::shared_ptr<IDiarkisEvent<const DiarkisPushEventArgs&>> GetNotificationEvent() = 0;
113 
122  virtual Diarkis::System::Result SetClientKey(const Diarkis::StdString& clientKey) = 0;
123  virtual Diarkis::System::Result SetClientKey(const char* clientKey) = 0;
124 
135  virtual Diarkis::System::Result SetSessionID(const Diarkis::StdVector<uint8_t>& sid, bool bypassConnectionStateCheck = false) = 0;
136  virtual Diarkis::System::Result SetSessionID(const uint8_t* sid_, size_t sidBuf, bool bypassConnectionStateCheck = false) = 0;
137 
152  virtual Diarkis::System::Result SetEncryptionKeys(const Diarkis::StdVector<uint8_t>& key, const Diarkis::StdVector<uint8_t>& iv, const Diarkis::StdVector<uint8_t>& mackey, bool bypassConnectionStateCheck = false) = 0;
153  virtual Diarkis::System::Result SetEncryptionKeys(const struct Credentials* cred, size_t len, bool bypassConnectionStateCheck = false) = 0;
154 
155 
164  virtual bool IsConnected() const = 0;
165 
178  virtual Diarkis::System::Result Connect(const Diarkis::StdString& unresolvedAddress, uint16_t port, uint16_t timeOut = 3000) = 0;
179  virtual Diarkis::System::Result Connect(const char* unresolvedAddress, uint16_t port, uint16_t timeOut = 3000) = 0;
180 
199  virtual Diarkis::System::Result ConnectDualMode(const Diarkis::StdString& unresolvedAddress, uint16_t port, uint16_t timeOut = 3000) = 0;
200 
215  virtual Diarkis::System::Result Reconnect(const Diarkis::StdString& unresolvedAddress, uint16_t port, uint16_t timeOut = 3000) = 0;
222  virtual Diarkis::System::Result Disconnect() = 0;
223 
230  virtual Diarkis::StdString GetServerEndPoint(bool useResolvedAddress = true) = 0;
231 
246  virtual Diarkis::System::Result Send(uint8_t version, uint16_t command, const uint8_t* payload, size_t payloadLength) = 0;
247 
254  virtual Diarkis::System::Result Send(uint8_t version, uint16_t command, const Diarkis::StdVector<uint8_t>& payload) = 0;
255 
270  virtual Diarkis::System::Result RSend(uint8_t version, uint16_t command, const uint8_t* payload, size_t payloadSize) = 0;
271 
278  virtual Diarkis::System::Result RSend(uint8_t version, uint16_t command, const Diarkis::StdVector<uint8_t>& payload) = 0;
279 };
280 }}
281 // ADD NAMESPACE } TAG
Diarkis::Network::IDiarkisTransport
Definition: transport.h:37
LoggerFactory.h
Credentials
Definition: common.h:60
Component.h
Diarkis::StdString
Definition: common.h:432
Diarkis::Network::DiarkisTransportType::TCP
@ TCP
TCP protocol.
Diarkis::Commands::Reconnect
constexpr uint16_t Reconnect
サーバの再接続を試みる。
Definition: commands.h:206
Diarkis::Network::DiarkisTransportType
DiarkisTransportType
Protocol type.
Definition: transport.h:27
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::Network::operator<<
DIARKIS_EXPORT std::ostream & operator<<(std::ostream &, DiarkisTcpConnectionState)
eventArgs.h
Diarkis
Definition: commands.h:9
result.h
Event.h
common.h
network.h
Diarkis::Network::IDiarkisTransport::~IDiarkisTransport
virtual ~IDiarkisTransport()
IDiarkisTransport destructor.
Definition: transport.h:46
Diarkis::Network::DiarkisTransportType::UDP
@ UDP
UDP protocol.
Diarkis::IDiarkisComponent
Implement this interface to be able to register to a scheduler for periodic update.
Definition: Component.h:28