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/network/services/signaling/json_rpc/IObserver.h"
15#include "mc/platform/ErrorInfo.h"
16#include "mc/platform/Result.h"
26namespace Bedrock::Http {
struct Url; }
28namespace Json {
class Value; }
33namespace PlayerMessaging {
struct NetworkID; }
37 public ::std::enable_shared_from_this<::SignalingService> {
49 enum class ConnectionStatus : uchar {
54 enum class SignInError :
int {
56 EmptyAuthFromDiscovery = 100,
57 EmptyUrlFromDiscovery = 101,
58 ExpiredAuthFromDiscovery = 102,
83 Connection& operator=(Connection
const&);
84 Connection(Connection
const&);
90 virtual ~Connection() =
default;
92 virtual void onConnect() ;
94 virtual void onMessage(::std::string_view incomingMessage) ;
96 virtual bool shouldReconnect()
const ;
98 virtual ::Bedrock::Threading::Async<::Bedrock::Http::Url> getUrl() ;
100 virtual ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection> getHeaders() ;
102 virtual ::Bedrock::Http::RetryPolicy getReconnectPolicy() ;
104 virtual void onDisconnect(
bool, uint closeStatus) ;
106 virtual void _requestTurnConfig()
const;
108 virtual void _sendPing()
const;
110 virtual void onAppSuspended() ;
112 virtual void onAppResumed() ;
119 ::NetherNet::ESessionError result,
120 ::std::vector<::NetherNet::StunRelayServer>
const& config
123 MCNAPI ::Bedrock::Threading::Async<::std::error_code>
connect();
137 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::Url>
$getUrl();
139 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Http::HeaderCollection>
$getHeaders();
167 Channel& operator=(Channel
const&);
168 Channel(Channel
const&);
174 virtual ~Channel() =
default;
176 virtual ::Bedrock::Threading::Async<::NetherNet::ESessionError>
179 virtual ::Bedrock::PubSub::Subscription
186 MCNAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError>
208 JsonRpcInterop& operator=(JsonRpcInterop
const&);
209 JsonRpcInterop(JsonRpcInterop
const&);
215 virtual ~JsonRpcInterop() =
default;
221 ::std::optional<::std::string>
const& messageId,
222 ::std::string
const& message
225 virtual ::Bedrock::Threading::Async<::Bedrock::Result<void>>
226 sendJsonRpc(::std::optional<::std::string>
const& messageId, ::std::string
const& message)
const ;
228 virtual ::std::shared_ptr<::MessageTracker> getMessageTracker() ;
230 virtual ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry() ;
237 virtual void setTurnConfig(
238 ::std::vector<::NetherNet::StunRelayServer>&& config,
239 ::std::chrono::steady_clock::time_point expiration
244 virtual void onJsonRpcSent(::std::string_view method, ::std::string_view messageId) ;
246 virtual void onJsonRpcReceived(::std::string_view method,
::Json::Value const& messageId) ;
248 virtual void onJsonRpcResultAccepted(::std::string
const& messageId) ;
261 ::std::optional<::std::string>
const& messageId,
262 ::std::string
const& message
265 MCNAPI ::Bedrock::Threading::Async<::Bedrock::Result<void>>
266 $sendJsonRpc(::std::optional<::std::string>
const& messageId, ::std::string
const& message)
const;
270 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const>
$getTelemetry();
277 ::std::vector<::NetherNet::StunRelayServer>&& config,
278 ::std::chrono::steady_clock::time_point expiration
283 MCNAPI
void $onJsonRpcSent(::std::string_view method, ::std::string_view messageId);
311 SignalingService& operator=(SignalingService
const&);
312 SignalingService(SignalingService
const&);
318 virtual ~SignalingService() =
default;
325 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
326 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
334 MCNAPI ::std::shared_ptr<::ISignalingServiceTelemetry const> getTelemetry()
const;
342 ::Bedrock::NotNullNonOwnerPtr<::IMinecraftEventing> eventing,
343 ::std::vector<::std::shared_ptr<::IJsonRpcComponent>> additionalJsonRpcComponents
Definition EnableNonOwnerReferences.h:7
Definition PersistentWebSocket.h:20
Definition RetryPolicy.h:12
Definition Subscription.h:10
The game spells this as an AsyncImplBase<T> base subobject holding the handle; a member at the same o...
Definition Async.h:13
Definition IJsonRpcComponent.h:10
Definition IMinecraftEventing.h:147
Definition ISignalingJsonRpcInterop.h:22
Definition ISignalingServiceTelemetry.h:14
Definition IObserver.h:13
Definition JsonRpcError.h:7
Definition MessageTracker.h:17
Definition ISignalingInterface.h:18
Definition SignalingService.h:157
MCAPI ::Bedrock::Threading::Async<::NetherNet::ESessionError > $SendSignal(::NetherNet::NetworkID from, ::NetherNet::NetworkID to, ::std::string const &message)
MCAPI::Bedrock::PubSub::Subscription $RegisterEventHandler(::NetherNet::ISignalingEventHandler *handler)
Definition SignalingService.h:195
Definition SignalingService.h:61
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:199
MCAPI void $onJsonRpcReceived(::std::string_view method, ::Json::Value const &messageId)
MCAPI ::std::shared_ptr<::ISignalingServiceTelemetry const > $getTelemetry()
MCAPI ::std::shared_ptr<::MessageTracker > $getMessageTracker()
MCAPI ::Bedrock::Threading::Async<::Bedrock::Result< void > > $sendJsonRpc(::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI ::std::pair<::Bedrock::Threading::Async<::Bedrock::Result< void > >, ::Bedrock::Threading::Async<::std::error_code > > $sendJsonRpcTo(::PlayerMessaging::NetworkID networkIdTo, ::std::optional<::std::string > const &messageId, ::std::string const &message) const
MCAPI void $onJsonRpcSent(::std::string_view method, ::std::string_view messageId)
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 $onJsonRpcResultErrored(::std::string const &messageId, ::JsonRpc::JsonRpcError const &error)
MCAPI void $onTurnConfigFailure(::Bedrock::ErrorInfo<::NetherNet::ESessionError > const &error)
MCAPI void $onJsonRpcResultAccepted(::std::string const &messageId)
MCAPI void $parseTurnConfig(::Json::Value const &config)
Definition SignalingService.h:197
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