ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
DiscoveryBinding Class Reference

Public Member Functions

 DiscoveryBinding ()
 ~DiscoveryBinding ()
 DiscoveryBinding (const DiscoveryBinding &)=delete
DiscoveryBinding & operator= (const DiscoveryBinding &)=delete
bool valid () const
uintptr_t callbackToken () const
int enter (bool create, const std::string &name, ProtocolBytes password)
int receive (unsigned type, ProtocolBytes packet)
int leave ()
DiscoverySnapshotValue snapshot ()

Detailed Description

Definition at line 35 of file discovery.cpp.

Constructor & Destructor Documentation

◆ DiscoveryBinding() [1/2]

DiscoveryBinding::DiscoveryBinding ( )
inline

Definition at line 37 of file discovery.cpp.

37 : session_(new acds_protocol_t{}) {
38 acds_protocol_init(session_, browser_send, session_);
39 }
void acds_protocol_init(acds_protocol_t *p, acds_protocol_send_fn send, void *user_data)
struct acds_protocol acds_protocol_t

References acds_protocol_init().

Referenced by DiscoveryBinding(), and operator=().

◆ ~DiscoveryBinding()

DiscoveryBinding::~DiscoveryBinding ( )
inline

Definition at line 40 of file discovery.cpp.

40 {
41 if (session_)
42 acds_protocol_destroy(session_);
43 delete session_;
44 }
void acds_protocol_destroy(acds_protocol_t *p)

References acds_protocol_destroy().

◆ DiscoveryBinding() [2/2]

DiscoveryBinding::DiscoveryBinding ( const DiscoveryBinding & )
delete

References DiscoveryBinding().

Member Function Documentation

◆ callbackToken()

uintptr_t DiscoveryBinding::callbackToken ( ) const
inline

Definition at line 50 of file discovery.cpp.

50 {
51 return reinterpret_cast<uintptr_t>(session_);
52 }

Referenced by EMSCRIPTEN_BINDINGS().

◆ enter()

int DiscoveryBinding::enter ( bool create,
const std::string & name,
ProtocolBytes password )
inline

Definition at line 53 of file discovery.cpp.

53 {
54 auto secret = protocol_input(password, true);
55 int result = acds_protocol_enter(session_, create, name.c_str(), reinterpret_cast<const char *>(secret.data()));
56 sodium_memzero(secret.data(), secret.size());
57 return result;
58 }
asciichat_error_t acds_protocol_enter(acds_protocol_t *p, bool create, const char *name, const char *password)

References acds_protocol_enter().

Referenced by EMSCRIPTEN_BINDINGS().

◆ leave()

int DiscoveryBinding::leave ( )
inline

Definition at line 68 of file discovery.cpp.

68 {
69 return acds_protocol_leave(session_);
70 }
asciichat_error_t acds_protocol_leave(acds_protocol_t *p)

References acds_protocol_leave().

Referenced by EMSCRIPTEN_BINDINGS().

◆ operator=()

DiscoveryBinding & DiscoveryBinding::operator= ( const DiscoveryBinding & )
delete

References DiscoveryBinding().

◆ receive()

int DiscoveryBinding::receive ( unsigned type,
ProtocolBytes packet )
inline

Definition at line 59 of file discovery.cpp.

59 {
60 auto data = protocol_input(packet);
61 uint8_t empty = 0;
62 int result = acds_protocol_receive(session_, static_cast<packet_type_t>(type), data.empty() ? &empty : data.data(),
63 data.size());
64 if (!data.empty())
65 sodium_memzero(data.data(), data.size());
66 return result;
67 }
asciichat_error_t acds_protocol_receive(acds_protocol_t *p, packet_type_t type, const void *payload, size_t length)
unsigned char uint8_t
Definition common.h:60
packet_type_t
Network protocol packet type enumeration.
Definition packet.h:301

References acds_protocol_receive().

Referenced by EMSCRIPTEN_BINDINGS().

◆ snapshot()

DiscoverySnapshotValue DiscoveryBinding::snapshot ( )
inline

Definition at line 71 of file discovery.cpp.

71 {
72 const auto &joined = session_->joined;
73 emscripten::val member = emscripten::val::object();
74 member.set("participantId", binding_copy_output(joined.participant_id, SESSION_ID_SIZE));
75 member.set("sessionId", binding_copy_output(joined.session_id, SESSION_ID_SIZE));
76 member.set("hostId",
77 binding_copy_output(joined.host_established ? joined.host_id : joined.initiator_id, SESSION_ID_SIZE));
78 member.set("turnUsername", std::string(joined.turn_username));
79 member.set("turnPassword", std::string(joined.turn_password));
80 member.set("serverAddress", std::string(joined.server_address));
81 member.set("serverPort", joined.server_port);
82 member.set("sessionType", joined.session_type);
83 member.set("quicPort", session_->quic_port);
84 member.set("webtransportUrl", std::string(session_->webtransport_url));
85 emscripten::val result = emscripten::val::object();
86 result.set("state", static_cast<int>(session_->state));
87 result.set("terminal", session_->terminal);
88 result.set("error", std::string(session_->error));
89 result.set("name", std::string(session_->name));
90 result.set("joined", member);
91 return DiscoverySnapshotValue(result);
92 }
emscripten::val binding_copy_output(const void *data, size_t length)
Definition byte_arrays.h:18
#define SESSION_ID_SIZE

References binding_copy_output(), and SESSION_ID_SIZE.

Referenced by EMSCRIPTEN_BINDINGS().

◆ valid()

bool DiscoveryBinding::valid ( ) const
inline

Definition at line 47 of file discovery.cpp.

47 {
48 return session_ != nullptr;
49 }

Referenced by EMSCRIPTEN_BINDINGS().


The documentation for this class was generated from the following file: