SkyWay for Linux
読み取り中…
検索中…
一致する文字列を見つけられません
context.hpp
1//
2// context.hpp
3// skyway
4//
5// Created by sandabu on 2021/11/08.
6// Copyright © 2021 NTT Communications. All rights reserved.
7//
8
9#ifndef SKYWAY_CORE_CONTEXT_HPP_
10#define SKYWAY_CORE_CONTEXT_HPP_
11
12#include "skyway/core/config.hpp"
13#include "skyway/core/context_options.hpp"
14#include "skyway/core/interface/remote_member_plugin.hpp"
15#include "skyway/global/error.hpp"
16#include "skyway/global/interface/logger.hpp"
17#include "skyway/network/interface/http_client.hpp"
18#include "skyway/network/interface/websocket_client.hpp"
19#include "skyway/platform/interface/platform_info_delegator.hpp"
20#include "skyway/rtc_api/interface/client.hpp"
21#include "skyway/token/interface/auth_token_manager.hpp"
22
23namespace skyway {
24namespace core {
25namespace channel {
26// forward declaration for testing
27class CoreChannelTest;
28
29} // namespace channel
30} // namespace core
31} // namespace skyway
32
33namespace skyway {
34namespace core {
35
36using RemoteMemberPluginInterface = interface::RemoteMemberPlugin;
37using AuthTokenManagerInterface = token::interface::AuthTokenManager;
38using RtcApiClientInterface = rtc_api::interface::Client;
39using HttpClientInterface = network::interface::HttpClient;
40using WebSocketClientFactoryInterface = network::interface::WebSocketClientFactory;
41using PlatformInfoDelegatorInterface = platform::interface::PlatformInfoDelegator;
42using LoggerInterface = global::interface::Logger;
43using SkyWayError = global::Error;
44
46class Context {
47public:
50 public:
51 virtual ~EventListener() = default;
52
54 virtual void OnReconnectStart() = 0;
55
57 virtual void OnReconnectSuccess() = 0;
58
62 virtual void OnFatalError(const SkyWayError& error) = 0;
63 };
74 static bool Setup(const std::string& token,
75 std::unique_ptr<HttpClientInterface> http,
76 std::unique_ptr<WebSocketClientFactoryInterface> ws_factory,
77 std::unique_ptr<PlatformInfoDelegatorInterface> platform_info,
78 std::unique_ptr<LoggerInterface> logger,
79 EventListener* listener,
80 const ContextOptions& options);
81
84 static bool UpdateAuthToken(const std::string& token);
85
89 static void _UpdateRtcConfig(ContextOptions::RtcConfig rtc_config);
91
94 static void RegisterPlugin(std::unique_ptr<RemoteMemberPluginInterface> plugin);
95
98 static void Dispose();
99
103 static AuthTokenManagerInterface* AuthTokenManager();
104
107 static RtcApiClientInterface* RtcApi();
108
111 static ContextOptions Options();
112
115 static std::vector<RemoteMemberPluginInterface*> GetRemoteMemberPlugins();
116
121 static RemoteMemberPluginInterface* FindRemoteMemberPluginBySubtype(const std::string& subtype);
122
125 static void OnReconnectStart();
126
129 static void OnReconnectSuccess();
130
134 static void OnFatalError(const SkyWayError& error);
136private:
137 static EventListener* listener_;
138 static bool is_setup_;
139 static std::mutex setup_mtx_;
140 static std::unique_ptr<RtcApiClientInterface> rtc_api_;
141 static std::unique_ptr<AuthTokenManagerInterface> token_manager_;
142 static ContextOptions options_;
143 static std::vector<std::unique_ptr<RemoteMemberPluginInterface>> plugins_;
144
145public:
147 friend class CoreContextTest;
148 friend class channel::CoreChannelTest;
150};
151
152} // namespace core
153} // namespace skyway
154
155#endif /* SKYWAY_CORE_CONTEXT_HPP_ */
イベントリスナ
Definition context.hpp:49
virtual void OnFatalError(const SkyWayError &error)=0
回復不能なエラーが発生した時にコールされます。
virtual void OnReconnectStart()=0
再接続処理が開始した時にコールされます。
virtual void OnReconnectSuccess()=0
再接続が成功した時にコールされます。
SkyWay全体の設定、取得を行うStaticなコンテキスト
Definition context.hpp:46
static void RegisterPlugin(std::unique_ptr< RemoteMemberPluginInterface > plugin)
RemoteMemberPluginを登録します。
static bool Setup(const std::string &token, std::unique_ptr< HttpClientInterface > http, std::unique_ptr< WebSocketClientFactoryInterface > ws_factory, std::unique_ptr< PlatformInfoDelegatorInterface > platform_info, std::unique_ptr< LoggerInterface > logger, EventListener *listener, const ContextOptions &options)
Contextを初期化します。
static bool UpdateAuthToken(const std::string &token)
JWTを更新します。
static void Dispose()
コンテキストを破棄し、全ての接続を切断します。
Definition remote_member_plugin.hpp:20
RTCサーバーへの接続に関する設定
Definition context_options.hpp:52
ContextのSetup時に使用するオプション
Definition context_options.hpp:28
SkyWayで発生したエラーを示す構造体
Definition error.hpp:18