ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
client_opts.cpp
Go to the documentation of this file.
1#include <emscripten/bind.h>
3#include <optional>
4#include <string>
5extern "C" {
6#include "../client.h"
7#include <ascii-chat/common.h>
8}
9
10static ClientSettingsResult receive_settings(ClientBytes payload) {
11 auto input = binding_copy_input(payload);
12 const int code = client_settings_receive(input.data(), input.size());
13 char *json = code == 0 ? client_settings_values() : nullptr;
14 emscripten::val result = emscripten::val::object();
15 result.set("code", code);
16 result.set("json", json ? emscripten::val(std::string(json)) : emscripten::val::null());
17 if (json)
18 SAFE_FREE(json);
19 return ClientSettingsResult(result);
20}
21static std::optional<std::string> client_settings() {
22 char *json = client_settings_values();
23 if (!json)
24 return std::nullopt;
25 std::string result(json);
26 SAFE_FREE(json);
27 return result;
28}
29
30EMSCRIPTEN_BINDINGS(ascii_chat_client_options) {
31 emscripten::register_type<ClientSettingsResult>("ClientSettingsResult", "{ code: number; json: string | null }");
32 emscripten::function("clientSettings", &client_settings);
33 emscripten::function("receiveSettings", &receive_settings);
34}
std::vector< uint8_t > binding_copy_input(emscripten::val bytes)
Definition byte_arrays.h:6
EMSCRIPTEN_BINDINGS(ascii_chat_client_options)
⚙️ Common definitions, error codes, macros, and types shared throughout the application
#define SAFE_FREE(ptr)
Definition common.h:377
asciichat_error_t client_settings_receive(const void *payload, size_t length)
char * client_settings_values(void)