Radix Relay
Hybrid mesh communications with Signal Protocol encryption
Loading...
Searching...
No Matches
events.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <concepts>
4#include <cstddef>
5#include <cstdint>
6#include <optional>
7#include <string>
8#include <variant>
9#include <vector>
10
12
14struct help
15{
16};
17
19struct peers
20{
21};
22
24struct status
25{
26};
27
30{
31};
32
35{
36};
37
39struct scan
40{
41};
42
44struct version
45{
46};
47
49struct mode
50{
51 std::string new_mode;
52};
53
55struct send
56{
57 std::string peer;
58 std::string message;
59};
60
63{
64 std::string message;
65};
66
68struct connect
69{
70 std::string relay;
71};
72
75{
76};
77
80{
81};
82
85{
86};
87
89struct trust
90{
91 std::string peer;
92 std::string alias;
93};
94
96struct verify
97{
98 std::string peer;
99};
100
102struct chat
103{
104 std::string contact;
105};
106
108struct leave
109{
110};
111
114{
115 std::string subscription_json;
116};
117
120{
121};
122
125{
126};
127
130{
131 std::string bundle_data;
132};
133
136{
137 std::string input;
138};
139
142{
143 std::string sender_rdx;
144 std::string sender_alias;
145 std::string content;
146 std::uint64_t timestamp;
148};
149
152{
153 std::string peer_rdx;
154};
155
158{
159 std::string pubkey;
160 std::string bundle_content;
161 std::string event_id;
162};
163
166{
167 std::string pubkey;
168 std::string event_id;
169};
170
173{
174 std::string rdx_fingerprint;
175 std::string nostr_pubkey;
176 std::string event_id;
177};
178
181{
182};
183
186{
187 std::vector<discovered_identity> identities;
188};
189
192{
193 std::string peer;
194 std::string event_id;
196};
197
200{
201 std::string event_id;
203};
204
207{
208 std::string subscription_id;
209};
210
213
215namespace transport {
216
218 struct connect
219 {
220 std::string url;
221 };
222
225 {
226 std::string url;
228 };
229
232 {
233 std::string url;
234 std::string error_message;
236 };
237
239 struct send
240 {
241 std::string message_id;
242 std::vector<std::byte> bytes;
243 };
244
246 struct sent
247 {
248 std::string message_id;
250 };
251
254 {
255 std::string message_id;
256 std::string error_message;
258 };
259
262 {
263 std::vector<std::byte> bytes;
264 };
265
268 {
269 };
270
276
278 template<typename T>
279 concept Command = std::same_as<T, connect> or std::same_as<T, send> or std::same_as<T, disconnect>;
280
282 template<typename T>
283 concept Event = std::same_as<T, connected> or std::same_as<T, connect_failed> or std::same_as<T, sent>
284 or std::same_as<T, send_failed> or std::same_as<T, bytes_received> or std::same_as<T, disconnected>;
285
287 using in_t = std::variant<connect, send, disconnect>;
288
289}// namespace transport
290
294 {
295 };
296
298 using in_t = std::variant<transport::connected,
303
304}// namespace connection_monitor
305
307template<typename T>
308concept Command =
309 std::same_as<T, help> or std::same_as<T, peers> or std::same_as<T, status> or std::same_as<T, sessions>
310 or std::same_as<T, identities> or std::same_as<T, scan> or std::same_as<T, version> or std::same_as<T, mode>
311 or std::same_as<T, send> or std::same_as<T, broadcast> or std::same_as<T, connect> or std::same_as<T, disconnect>
312 or std::same_as<T, publish_identity> or std::same_as<T, unpublish_identity> or std::same_as<T, trust>
313 or std::same_as<T, verify> or std::same_as<T, subscribe> or std::same_as<T, subscribe_identities>
314 or std::same_as<T, subscribe_messages> or std::same_as<T, establish_session> or std::same_as<T, chat>
315 or std::same_as<T, leave>;
316
318template<typename T>
320 std::same_as<T, message_received> or std::same_as<T, session_established>
321 or std::same_as<T, bundle_announcement_received> or std::same_as<T, bundle_announcement_removed>
322 or std::same_as<T, message_sent> or std::same_as<T, bundle_published> or std::same_as<T, subscription_established>
323 or std::same_as<T, identities_listed>;
324
334
336template<typename T>
337concept Event = Command<T> or PresentationEvent<T> or std::same_as<T, raw_command>;
338
372
375{
384
385 std::string message;
386 std::optional<std::string> contact_rdx{};
387 std::uint64_t timestamp{ 0 };
389};
390
393{
394 std::string rdx_fingerprint;
395};
396
399{
400};
401
403using display_filter_input_t = std::variant<display_message, enter_chat_mode, exit_chat_mode>;
404
405}// namespace radix_relay::core::events
Concept for user command event types.
Definition events.hpp:308
Concept for all event types.
Definition events.hpp:337
Concept for presentation layer event types.
Definition events.hpp:319
Concept for transport command types.
Definition events.hpp:279
Concept for transport event types.
Definition events.hpp:283
std::variant< transport::connected, transport::connect_failed, transport::disconnected, transport::send_failed, query_status > in_t
Variant type for connection monitor input events.
Definition events.hpp:302
std::variant< send, publish_identity, unpublish_identity, trust, subscribe, subscribe_identities, subscribe_messages, list_identities > command_from_main_variant_t
Variant of commands from main to session orchestrator.
Definition events.hpp:350
std::variant< send, publish_identity, unpublish_identity, trust, subscribe, subscribe_identities, subscribe_messages, list_identities, connect, transport::bytes_received, transport::connected, transport::connect_failed, transport::sent, transport::send_failed, transport::disconnected, bundle_announcement_received, bundle_announcement_removed > in_t
Variant of all input events to session orchestrator.
Definition events.hpp:369
std::variant< connect, send, disconnect > in_t
Variant type for transport input events.
Definition events.hpp:287
transport_type
Transport type discriminator.
Definition events.hpp:212
std::variant< message_received, session_established, bundle_announcement_received, bundle_announcement_removed, message_sent, bundle_published, subscription_established, identities_listed > presentation_event_variant_t
Variant type for presentation events.
Definition events.hpp:333
std::variant< display_message, enter_chat_mode, exit_chat_mode > display_filter_input_t
Display filter input: either a display message or control event.
Definition events.hpp:403
Broadcast message to all peers.
Definition events.hpp:63
std::string message
Message content to broadcast.
Definition events.hpp:64
Notification of received bundle announcement.
Definition events.hpp:158
Notification of removed bundle announcement.
Definition events.hpp:166
Notification of published bundle status.
Definition events.hpp:200
bool accepted
Whether relay accepted the bundle.
Definition events.hpp:202
std::string event_id
Nostr event ID.
Definition events.hpp:201
Enter chat mode with a specific contact.
Definition events.hpp:103
std::string contact
RDX fingerprint, Nostr pubkey, or alias.
Definition events.hpp:104
std::string relay
Relay URL to connect to.
Definition events.hpp:70
Disconnect from current relay.
Definition events.hpp:75
Discovered identity information.
Definition events.hpp:173
std::string rdx_fingerprint
Signal Protocol RDX fingerprint.
Definition events.hpp:174
std::string nostr_pubkey
Nostr public key.
Definition events.hpp:175
Request to display a message to the user.
Definition events.hpp:375
std::optional< std::string > contact_rdx
Associated contact (for filtering)
Definition events.hpp:386
@ incoming_message
Received message from contact.
std::string message
Message content to display.
Definition events.hpp:385
std::uint64_t timestamp
When event occurred (Unix epoch ms)
Definition events.hpp:387
source source_type
Type of message for filtering.
Definition events.hpp:388
Enter chat mode with specified contact.
Definition events.hpp:393
std::string rdx_fingerprint
Contact to chat with.
Definition events.hpp:394
Establish session from a received bundle.
Definition events.hpp:130
std::string bundle_data
Base64-encoded prekey bundle.
Definition events.hpp:131
Exit chat mode, return to showing all messages.
Definition events.hpp:399
Request display of available commands.
Definition events.hpp:15
Response containing discovered identities.
Definition events.hpp:186
std::vector< discovered_identity > identities
List of discovered identities.
Definition events.hpp:187
Request list of discovered identities.
Definition events.hpp:35
Request list of all discovered identities.
Definition events.hpp:181
Notification of received encrypted message.
Definition events.hpp:142
std::string sender_alias
Alias of sender (if known)
Definition events.hpp:144
std::string sender_rdx
RDX fingerprint of sender.
Definition events.hpp:143
std::uint64_t timestamp
Message timestamp.
Definition events.hpp:146
bool should_republish_bundle
Whether to republish prekey bundle.
Definition events.hpp:147
std::string content
Decrypted message content.
Definition events.hpp:145
Notification of sent message status.
Definition events.hpp:192
bool accepted
Whether relay accepted the message.
Definition events.hpp:195
std::string peer
RDX fingerprint of recipient.
Definition events.hpp:193
std::string event_id
Nostr event ID.
Definition events.hpp:194
Change operational mode.
Definition events.hpp:50
std::string new_mode
The new mode to switch to.
Definition events.hpp:51
Request list of connected peers.
Definition events.hpp:20
Publish identity bundle to the network.
Definition events.hpp:80
Raw unparsed command input.
Definition events.hpp:136
std::string input
Raw command string.
Definition events.hpp:137
Request scan for nearby peers.
Definition events.hpp:40
Send encrypted message to a specific peer.
Definition events.hpp:56
std::string message
Message content to send.
Definition events.hpp:58
std::string peer
RDX fingerprint or alias of recipient.
Definition events.hpp:57
Notification of successfully established session.
Definition events.hpp:152
std::string peer_rdx
RDX fingerprint of peer.
Definition events.hpp:153
Request list of active sessions.
Definition events.hpp:30
Request current system status.
Definition events.hpp:25
Subscribe to identity announcements.
Definition events.hpp:120
Subscribe to encrypted messages for this node.
Definition events.hpp:125
Subscribe to custom Nostr events.
Definition events.hpp:114
std::string subscription_json
JSON subscription filter.
Definition events.hpp:115
Notification of established subscription.
Definition events.hpp:207
std::string subscription_id
Subscription identifier.
Definition events.hpp:208
Notification of received data from transport.
Definition events.hpp:262
std::vector< std::byte > bytes
Received raw data.
Definition events.hpp:263
Notification of failed connection attempt.
Definition events.hpp:232
transport_type type
Type of transport.
Definition events.hpp:235
std::string url
Transport endpoint URL.
Definition events.hpp:233
Command to connect to a transport endpoint.
Definition events.hpp:219
std::string url
Transport endpoint URL.
Definition events.hpp:220
Notification of successful connection.
Definition events.hpp:225
transport_type type
Type of transport.
Definition events.hpp:227
std::string url
Connected transport endpoint URL.
Definition events.hpp:226
Command to disconnect from transport.
Definition events.hpp:268
transport_type type
Type of transport.
Definition events.hpp:274
Notification of failed send attempt.
Definition events.hpp:254
std::string message_id
Message identifier.
Definition events.hpp:255
transport_type type
Type of transport.
Definition events.hpp:257
Command to send data through transport.
Definition events.hpp:240
std::string message_id
Unique message identifier.
Definition events.hpp:241
std::vector< std::byte > bytes
Raw data to send.
Definition events.hpp:242
Notification of successful send.
Definition events.hpp:247
transport_type type
Type of transport.
Definition events.hpp:249
std::string message_id
Message identifier.
Definition events.hpp:248
Establish trust with a peer and assign an alias.
Definition events.hpp:90
std::string peer
RDX fingerprint of peer to trust.
Definition events.hpp:91
std::string alias
Friendly alias to assign.
Definition events.hpp:92
Remove identity bundle from the network.
Definition events.hpp:85
Verify identity fingerprint of a peer.
Definition events.hpp:97
std::string peer
RDX fingerprint to verify.
Definition events.hpp:98
Request application version information.
Definition events.hpp:45