onboarding_and_rejoin.c File
Obtains a session via rejoin-or-onboard, onboards a sibling runtime from a shared invite, and demonstrates destroy/forget teardown. More...
Included Headers
#include "common.h"
#include <qar_streaming.h>
Functions Index
| static QarRuntime * | create_runtime_or_null (const char *runtime_dir, const char *storage_dir) |
| int | main (int argc, char **argv) |
| static void | print_usage (const char *program_name) |
Description
Obtains a session via rejoin-or-onboard, onboards a sibling runtime from a shared invite, and demonstrates destroy/forget teardown.
Functions
create_runtime_or_null()
| static |
Definition at line 89 of file onboarding_and_rejoin.c.
main()
|
Definition at line 107 of file onboarding_and_rejoin.c.
print_usage()
| static |
Definition at line 73 of file onboarding_and_rejoin.c.
File Listing
The file content with the documentation metadata removed is:
63#include "common.h"
68#include <qar_streaming.h>
73print_usage(const char* program_name)
88static QarRuntime*
89create_runtime_or_null(const char* runtime_dir, const char* storage_dir)
91 QarRuntime* runtime = NULL;
92 QarRuntimeInit runtime_init = qar_runtime_init_default();
93 runtime_init.runtime_binaries_folder_path = runtime_dir;
94 runtime_init.storage_folder_path = storage_dir;
96 QarResult runtime_result = qar_runtime_create(&runtime_init, &runtime);
97 log_result("qar_runtime_create", runtime_result);
98 if(qar_result_is_error(runtime_result) || runtime == NULL)
107main(int argc, char** argv)
112 print_usage(argv[0]);
126 else if(get_dir_from_path(library_path, runtime_dir_buffer, sizeof(runtime_dir_buffer)))
144 if(!qar_library_load(library_path))
150 QarLibraryInit library_init = qar_library_init_default();
151 library_init.enable_console_logging = true;
152 QarResult library_result = qar_library_init(&library_init);
153 if(qar_result_is_error(library_result))
155 log_result("qar_library_init", library_result);
156 qar_library_unload();
160 QarRuntime* primary_runtime =
161 create_runtime_or_null(runtime_dir, "onboarding_and_rejoin.primary-state");
164 qar_library_destroy();
165 qar_library_unload();
170 QarOnboardingId primary_onboarding_id = qar_onboarding_id_default();
171 QarOnboardingId sibling_onboarding_id = qar_onboarding_id_default();
173 QarSession* primary_session = NULL;
174 if(example_obtain_session(
184 qar_runtime_destroy(primary_runtime);
185 qar_library_destroy();
186 qar_library_unload();
191 if(qar_result_is_success(
192 qar_uuid_to_string(primary_onboarding_id.data, primary_id_text, sizeof(primary_id_text))
200 QarRequestInviteInit request_init = qar_request_invite_init_default();
201 QarOnboardingInvite* primary_invite = NULL;
202 QarResult invite_result = qar_session_request_onboarding_invite(
205 log_result("qar_session_request_onboarding_invite", invite_result);
206 if(qar_result_is_success(invite_result) && primary_invite != NULL)
209 QAR_ASSUME_SUCCESS(qar_onboarding_invite_serialized_size(primary_invite, &serialized_size));
220 QAR_ASSUME_SUCCESS(
221 qar_onboarding_invite_get_expires_unix(primary_invite, &expires_unix)
229 QarRuntime* sibling_runtime =
230 create_runtime_or_null(runtime_dir, "onboarding_and_rejoin.sibling-state");
233 QarOnboardingInvite* sibling_invite = NULL;
234 QarResult deserialize_result =
235 qar_onboarding_invite_deserialize(blob, bytes_written, &sibling_invite);
236 log_result("qar_onboarding_invite_deserialize", deserialize_result);
237 if(qar_result_is_success(deserialize_result) && sibling_invite != NULL)
239 QarOnboardInit sibling_init = qar_onboard_init_default();
240 QarOnboardInviteExt sibling_mode = qar_onboard_invite_ext_default();
241 sibling_init.presentation.display_name = "Sibling Tutorial Peer";
242 sibling_mode.invite = sibling_invite;
247 QarSession* sibling_session = NULL;
248 QarResult sibling_result = qar_runtime_onboard(
257 log_result("qar_runtime_onboard", sibling_result);
258 if(qar_result_is_success(sibling_result) && sibling_session != NULL)
262 sibling_onboarding_id.data, sibling_id_text, sizeof(sibling_id_text)
272 save_onboarding_id(
281 qar_session_handle_destroy(sibling_session);
284 qar_onboarding_invite_handle_destroy(sibling_invite);
287 qar_runtime_destroy(sibling_runtime);
293 qar_onboarding_invite_handle_destroy(primary_invite);
304 qar_session_handle_destroy(primary_session);
312 QarRuntime* sibling_runtime =
313 create_runtime_or_null(runtime_dir, "onboarding_and_rejoin.sibling-state");
316 QarForgetInit sibling_forget_init = qar_forget_init_default();
317 sibling_forget_init.onboarding_id = sibling_onboarding_id;
318 log_result(
320 qar_runtime_forget(sibling_runtime, &sibling_forget_init)
322 qar_runtime_destroy(sibling_runtime);
327 QarForgetInit forget_init = qar_forget_init_default();
328 forget_init.onboarding_id = primary_onboarding_id;
329 log_result(
330 "qar_runtime_forget(primary)", qar_runtime_forget(primary_runtime, &forget_init)
336 qar_runtime_destroy(primary_runtime);
337 QarResult destroy_result = qar_library_destroy();
338 log_result("qar_library_destroy", destroy_result);
339 qar_library_unload();
Generated via doxygen2docusaurus 2.2.1 by Doxygen 1.9.8.