Realm C++ SDKバージョン v 2.2.0

realm.hpp

1
2//
3// © 2024 Realm Inc.
4//
5// Apache ライセンス、バージョン 2.0(「ライセンス」)に基づいてライセンスされている
6// ライセンス に準拠している場合を除き、このファイルを使用することはできません。
7// ライセンスのコピーは次で取得できます:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 該当するルールによって要求されたり、書込み (write) で同意された場合を除き、ソフトウェア
12ライセンスに基づいて配布される // は "AS IS" CRUD で配布されるため、
13// 任意の種類の 保証 または 条件なし(式またはExpressのいずれか)。
14// 特定の言語を使用する権限については、「ライセンス」を参照してください
15ライセンスに基づく // の制限。
16//
18
19#ifndef CPPREALM_BRIDGE_REALM_HPP
20CPREALM_CRIDGE_REALM_HPP を定義する
21
22#include <cpprealm/ internal/bridge/uts.hpp>
23
24#include <function"><functional>
25#include <map>
26#include <memory>
27#include <optional>
28#include <string>
29#include <vector"<vector>
30
31名前空間邦土 {
32 クラスRealm。
33 struct RealmConfig)
34 struct SyncConfig
35 構造体スケジューラ
36 クラスSyncUser
37 namespace app {
38 クラスユーザー
39 }
40
41 enum class client_reset_mode: uint8_t {
42 // クライアント リセット エラーを起動する
43マニュアル、
44 // アクセスを中断したり Realm を閉じたりせずに、同期されていないローカルの変更を破棄する
45 _unsynced,
46 // 同期されていないがコミットされた変更の復元を試みます。
47は回復します、
48 // リカバリを試み、失敗した場合はローカルを破棄します。
49リカバリ_or_discard、
50 };
51 }
52
53名前空間Realm:: internal::bridge {
54 テンプレート< typename T> struct client_reset_mode_base
55 構造体グループ。
56 構造体スキーマ。
57 struct object_schema。
58 構造体テーブル
59 構造体辞書。
60 structthread_share_reference
61 構造体オブジェクト。
62 構造体オブジェクト。
63 struct async_open_task
64 struct sync_session
65 struct sync_error
66
67 構造体 realm {
68 列挙型sync_session_stop_olicy: uint 8 _t {
69は、 // すべての Realm およびセッションが範囲を超えるとすぐにセッションを停止しGo 。
70 live_incompleted, // セッションは絶対に停止しないでください。
71 after_changes_uploaded, Goすべての Realm およびセッションが範囲を超えたら、アップロードが完了するまで待機して停止します。
72 };
73
74 構造体 sync_config {
75
76 構造体 proxy_config {
77 ポート_タイプ = std::uint_fast 16 _tを使用し
78 std::string address
79 port_type port;
80 // 基本認可の場合
81 std::optional=std:: pair=std::string, std::string================================
82 };
83
84 構造体 flx_sync_enabled {}
85 sync_config() {}
86 sync_config const std::shared_ptr[SyncUser]><SyncUser> & user )。
87 sync_config ( const std::shared_ptr[SyncConfig><SyncConfig> &)] //NOLINT(google-explit-structor)
88 演算子 std::shared_ptr[SyncConfig]()<SyncConfig> const //NOLINT(google-explit-structor)
89 無効なset_stop_olicy(sync_session_stop_ policiesと )。
90 empty set_error_handler(std::function =null ( const sync_session &、 const sync_error &)> & = fn):
91
92 private :
93 std::shared_ptr<SyncConfig> m_config;
94 };
95
96 構造体 config {
97 // update_schema() が呼び出されるファイルでの処理方法
98 // はすでに別のスキーマで初期化されています
99 列挙クラスschema_mode : uint 8 _t {
100 // スキーマのバージョンが増加した場合は、すべての
101 // が変更された場合は、移行関数を呼び出します。
102 //
103 // スキーマのバージョンが変更されていない場合は、のみを確認してください
104 // 変更は、新しいテーブルを追加し、インデックスを追加または削除するためのもので、その後
105 // 該当する場合は、それらを適用します。 移行関数を呼び出しません。
106 //
107 // このモードでは、次ではないテーブルは自動的に削除されません:
108 // スキーマに存在し、移行時に手動で実行する必要がある
109 // 関数は、を使用するプロセス間での Realm ファイルの共有をサポートします
110 // 異なるクラス サブセット。
111 //
112 // このモードでは、テーブルの異なるサブセットを持つスキーマを使用できます
113 // は別のスレッドで使用されますが、共有されるテーブルは次である必要があります:
114 // 同一。
115自動、
116
117 // 不変モードでファイルを開きます。 スキーマ バージョンは一致する必要があります
118 ファイル内の // バージョンと、 ファイル内のすべてのテーブルが必要です
119 // は、インデックスを除き、指定されたスキーマと完全に一致します。 テーブル
120 // はファイルから欠落することができます。
121不変、
122
123 // Realm を読み取り専用モードで開くと、トランザクションは
124 // は Realm インスタンスで実行されます。 既存の Realm のスキーマ
125 この Realm インスタンスでは // ファイルは変更されません。 追加のテーブルと
126 // 既存の Realm スキーマで追加のプロパティが許可されます。 この
127 // インデックスの違いも許容されます。 その他のスキーマの相違
128 // より小さい場合は例外が発生します。 これは不変とは異なります
129 // モードの場合、同期 Realm は ReadOnly モードで開くことができます。 変更点
130 // は、別の書き込み可能な Realm インスタンスを介して Realm ファイルに作成できます。
131 // したがって、このモードでは通知も許可されます。
132 read_only,
133
134 // スキーマのバージョンが一致し、スキーマの変更のみが新しい場合
135 // テーブルとインデックスが追加または削除されたら、その変更を に適用します
136 // 既存のファイル。
137 // そうでない場合は、ファイルを削除し、最初から作成し直す。
138 // 移行関数は使用されません
139 //
140 // このモードでは、テーブルの異なるサブセットを持つスキーマを使用できます
141 // は別のスレッドで使用されますが、共有されるテーブルは次である必要があります:
142 // 同一。
143 soft_reset_file,
144
145 // ファイルを削除し、最初から作成し直す。
146 // 移行関数は使用されません
147 hard_reset_file,
148
149 // 許可される変更は、新しいテーブルの追加、 に列を追加することのみ
150 // 既存のテーブル、および 既存のテーブルからインデックスを追加または削除します
151 // 列。 スキーマに存在しない追加テーブルは無視されます。
152 // インデックスは、次の場合にのみ既存の列に追加または削除されます
153 // スキーマ バージョンが既存のバージョンよりも大きく(
154 // モードに設定されている場合、スキーマ バージョンは既存の
155 // 1 つ)。
156 // 移行関数は使用されません
157 // これは、検出されたユーザー クラスを含める場合に使用する必要があります。
158 // 以前はアキュムレーションと呼ばれていました。
159 //
160 // このモードでは、次の場合でも追加の変更でスキーマを更新できます:
161 Realm がすでに別のスレッドで開いている場合は、 // 。
162 additional_discovered,
163
164 // AddativeDiscovered と同じ追加プロパティ(ただし、
165 // このモードでは、スキーマ内のすべてのクラスが明示的に変更されています
166 // ユーザーによって含まれます。 つまり、より厳しいスキーマ チェックは
167 // は、埋め込みオブジェクトタイプが
168 // は最上位のオブジェクト タイプからリンクされていません。
169 addative_explit、
170
171 //スキーマのバージョンが増加したことを確認し、移行を呼び出します
172 // 関数を使用し、スキーマが一致することを確認します。
173 // このモードでは移行関数が必須です。
174 //
175 // このモードでは、次を開くすべてのスレッドとプロセスが必要です:
176 // ファイルは同一のスキーマを使用します。
177マニュアル
178 };
179 config();
180 configconst構成およびその他)
181 config & 演算子=( const configとその他)。
182 config構成およびその他)
183 config & 演算子=( config &とその他)。
184 ~config();
185 configconst RealmConfig+) //NOLINT(google-explit-structor)
186 コンフィギュレーションconst std::string+ パス、
187 const std::shared_ptr[struct<struct scheduler> スケジューラー]>[ スケジューラー ]
188 [[nodiscard]] std::string path() const
189 [[nodiscard]]構造体sync_config sync_config () context
190[[nodiscard]] std::shared_ptr[struct<struct scheduler> scheduler] スケジューラー () const
191 演算子RealmConfig() const//NOLINT(google-explit-structor)
192 無効なset_path( const std::string())。
193 empty set_schema ( const std::vector=object_schema>=================================================================<object_schema>
194 string_schema_mode (schema_mode)。
195 無効 なset_schema( const std::shared_ptr[structScheduler]>==============================================<struct scheduler>
196 empty set_sync_config<struct sync_config> ( const std::optional=struct sync_config>=====================================================================
197 empty set_custom_HTTP_headers ( const std::map{std::string, std::string>= ヘッダー)。
198 void set_proxy_config(const sync_config::proxy_config&);
199 empty set_schema_version (uint 64 _t バージョン)
200 無効な set_encryption_key( const std::array[] 、 64 >=)
201 無効化すべき_Compact_on_launch(std::function= bool (uint 64 _ total_bytes, uint 64 _未使用_バイト数)> & & fn ):
202std::optional[schema]<schema> get_schema()。
203
204 テンプレート< typename T>
205 empty set_client_reset_handler ( const client_reset_mode_base<T> & ハンドラー) {
206 Before_client_reset([fn = std::move(handler.m_Before)]( realm local_realm) {
207 fn(local_realm.freeze())
208 });
209 after_client_reset([fn = std::move(handler.m_ after)]( Realm local_realm、Realm remote_realm ) {
210 fn(local_realm.freeze(), remote_realm)。
211 });
212 set_client_reset_mode(handler.m_mode);
213 }
214 enum client_reset_mode get_client_reset_mode() const;
215 private :
216 void set_client_reset_mode(enum client_reset_mode mode);
217 以前の _client_reset (std::function=null( Realm old_realm )>コールバック)。
218 empty after_client_reset (std::function=nuド(Realm local_realm 、 Realm remote_realm )> コールバック)。
219 inline RealmConfig* get_config();
220 インライン const RealmConfig* get_config() const;
221#ifdef CPREALM_HAV_GENERTED_BRIDGE_TypeS
222 storage::Realm_Config m_config[1];
223#else
224 std::shared_ptr<RealmConfig> m_config;
225#endif
226 };
227
228 realm();
229 邦土const config &) //NOLINT(google-explit-structor)
230 <Realm>邦土 (std::shared_ptr[Realm]) //NOLINT(google-explit-structor)
231 邦土 (スレッド_セーフ_リファレンスと tsr、 const std::optional[std::shared_ptr [sScheduler]<scheduler> ,] を含む) //NOLINT(google-explit-structor)
232 <Realm>演算子 std::shared_ptr[Realm]() const 。 //NOLINT(google-explit-structor)
233 グループread_group()。
234 [[nodiscard]] config get_config() const
235[[ nodiscard ]] 構造体 スキーマ ()const
236 null start_transaction () const
237 skip_transaction () const
238 テーブルテーブル_for_object_type( const std::string+ object_type)
239 table get_table(const uint32_t &);
240[[nodiscard]] std::shared_ptr[struct<struct scheduler> scheduler] スケジューラー () const
241 静的 async_open_task get_synchronized_realm( const config &):
242 ブール値更新()
243 ブールis_frozen () 条件 :
244 邦土は() // がスロー
245 邦土// がスロー
246 value close():
247 ブールis_closed()。
248 void invalidate();
249 object_ copy_Of(constobj &)const .
250[[nodiscard]] std::optional[sync_session]><sync_session> get_sync_session() const
251 private :
252std::shared_ptr[Realm]<Realm> m_realm。
253 友人 構造体 グループ:
254 };
255
256 テンプレート< typename T>
258 保護された:
259 std::function[vid(T local)]> m_confirm
260 std::function[vid(T local, T remote)> m_ after]
261 ::realm::client_reset_mode m_mode;
262 友人 構造体 external::bridge::realm::config
263 };
264
265 テンプレート< typename T>
266T replace ( const Realm &、 thread_security_reference &+ tsr)
267 テンプレート<>
268 .
269 テンプレート<>
270 オブジェクト 解決( const Realm &、thread_share_reference & = tsr)。
271
272 ブール演算子 ==( const Realm &、 const Realm &)。
273 ブール演算子 !=( const Realm &、 const Realm &):
274 }
275
276#endif //CPREALM_TRIDGE_REALM_HPP
定義: async_open_task.happ: 31
定義: logical.happ: 138
Definition: obj.hpp:244
Definition: obj.hpp:123
Definition: realm.hpp:67
定義: schema.happ: 32
Definition: sync_error.hpp:40
Definition: sync_session.hpp:33
Definition: table.hpp:40
定義: thread_security_reference.happ: 32
定義: scheduler.happ: 27
定義: app.happ: 92