3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/application/AppPlatformListener.h"
7#include "mc/deps/core/http/PersistentWebSocket.h"
8#include "mc/deps/core/threading/Async.h"
9#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
10#include "mc/deps/core/utility/NonOwnerPointer.h"
11#include "mc/deps/nether_net/ESessionError.h"
12#include "mc/deps/nether_net/ISignalingInterface.h"
13#include "mc/network/services/signaling/ISignalingJsonRpcInterop.h"
14#include "mc/platform/ErrorInfo.h"
15#include "mc/platform/Result.h"
25namespace Bedrock::Http {
struct Url; }
27namespace Json {
class Value; }
31namespace PlayerMessaging {
struct NetworkID; }
35 public ::std::enable_shared_from_this<::SignalingService> {
47 enum class ConnectionStatus : uchar {
52 enum class SignInError :
int {
54 EmptyAuthFromDiscovery = 100,
55 EmptyUrlFromDiscovery = 101,
56 ExpiredAuthFromDiscovery = 102,
81 Connection& operator=(Connection
const&);
82 Connection(Connection
const&);
88 virtual ~Connection() =
default;
90 virtual void onConnect() ;
92 virtual void onMessage(::std::string_view incomingMessage) ;
94 virtual bool shouldReconnect()
const ;
96 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() ;
98 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() ;
100 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() ;
102 virtual void onDisconnect(
bool, uint closeStatus) ;
104 virtual void _requestTurnConfig()
const;
106 virtual void _sendPing()
const;
108 virtual void onAppSuspended() ;
110 virtual void onAppResumed() ;
117 ::NetherNet::ESessionError result,
118 ::std::vector<::NetherNet::StunRelayServer>
const& config
121 MCNAPI ::Bedrock::Threading::Async<::std::error_code>
connect();
135 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url>
$getUrl();
137 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection>
$getHeaders();
165 Channel& operator=(Channel
const&);
166 Channel(Channel
const&);
172 virtual ~Channel() =
default;
174 virtual void SendSignal(
177 ::std::string
const& message,
178 ::std::function<
void(::NetherNet::ESessionError)>&& onComplete
181 virtual ::Bedrock::PubSub::Subscription
191 ::std::string
const& message,
192 ::std::function<
void(::NetherNet::ESessionError)>&& onComplete
214 JsonRpcInterop& operator=(JsonRpcInterop
const&);
215 JsonRpcInterop(JsonRpcInterop
const&);
221 virtual ~JsonRpcInterop() =
default;
223 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>> sendJsonRpcTo(
225 ::std::optional<::std::string>
const& messageId,
226 ::std::string
const& message
229 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
230 sendJsonRpc(::std::optional<::std::string>
const& messageId, ::std::string
const& message)
const ;
232 virtual ::std::shared_ptr<::MessageTracker> getMessageTracker() ;
239 virtual void setTurnConfig(
240 ::std::vector<::NetherNet::StunRelayServer>&& config,
241 ::std::chrono::steady_clock::time_point expiration
250 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
$sendJsonRpcTo(
252 ::std::optional<::std::string>
const& messageId,
253 ::std::string
const& message
256 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void, ::NetherNet::ESessionError>>
257 $sendJsonRpc(::std::optional<::std::string>
const& messageId, ::std::string
const& message)
const;
266 ::std::vector<::NetherNet::StunRelayServer>&& config,
267 ::std::chrono::steady_clock::time_point expiration
292 SignalingService& operator=(SignalingService
const&);
293 SignalingService(SignalingService
const&);
299 virtual ~SignalingService() =
default;
306 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
307 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
315 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry()
const;
323 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
324 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
Definition EnableNonOwnerReferences.h:7
Definition PersistentWebSocket.h:20
Definition RetryPolicy.h:12
Definition Subscription.h:10
Definition IJsonRpcComponent.h:10
Definition IMinecraftEventing.h:145
Definition ISignalingJsonRpcInterop.h:20
Definition ISignalingServiceTelemetry.h:14
Definition MessageTracker.h:16
Definition ISignalingInterface.h:17
Definition SignalingService.h:155
MCAPI void $SendSignal(::NetherNet::NetworkID from, ::NetherNet::NetworkID to, ::std::string const &message, ::std::function< void(::NetherNet::ESessionError)> &&onComplete)
MCAPI::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler *handler)
Definition SignalingService.h:201
Definition SignalingService.h:59
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url > $getUrl()
MCAPI void _sendTurnConfigTelemetry(::NetherNet::ESessionError result, ::std::vector<::NetherNet::StunRelayServer > const &config)
MCAPI void $onAppSuspended()
MCAPI void $onDisconnect(bool, uint closeStatus)
MCAPI::Bedrock::Http::RetryPolicy $getReconnectPolicy()
MCAPI void $onAppResumed()
MCAPI bool $shouldReconnect() const
MCAPI void $_sendPing() const
MCAPI ::Bedrock::Threading::Async<::std::error_code > connect()
MCAPI void $_requestTurnConfig() const
MCAPI void $onMessage(::std::string_view incomingMessage)
MCAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection > $getHeaders()
Definition SignalingService.h:205
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > $sendJsonRpc(::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI ::std::shared_ptr<::MessageTracker > $getMessageTracker()
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void, ::NetherNet::ESessionError > > $sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI void $parseSignal(::NetherNet::NetworkID fromNetworkID, ::std::string message, ::std::string messageId)
MCAPI void $setTurnConfig(::std::vector<::NetherNet::StunRelayServer > &&config, ::std::chrono::steady_clock::time_point expiration)
MCAPI void $onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $parseTurnConfig(::Json::Value const &config)
Definition SignalingService.h:203
MCAPI SignalingService(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::std::vector<::std::shared_ptr<::IJsonRpcComponent > > additionalJsonRpcComponents)
MCAPI void * $ctor(::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing > eventing, ::std::vector<::std::shared_ptr<::IJsonRpcComponent > > additionalJsonRpcComponents)
MCAPI ::std::shared_ptr<::SignalingService::Connection > _makeConnection(::PlayerMessaging::NetworkID id)
Definition ISignalingEventHandler.h:12
Definition NetworkID.h:17
Definition StunRelayServer.h:7
Definition NetworkID.h:12