LiveKit C++ SDK
Real-time audio/video SDK for C++
Loading...
Searching...
No Matches
room_event_types.h
1/*
2 * Copyright 2025 LiveKit
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an “AS IS” BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <cstdint>
20#include <map>
21#include <memory>
22#include <optional>
23#include <string>
24#include <vector>
25
26namespace livekit {
27
28// Forward declarations to avoid pulling in heavy headers.
29class Track;
30class Participant;
31class RemoteParticipant;
32class LocalTrackPublication;
33class RemoteTrackPublication;
34class TrackPublication;
35
36enum class VideoCodec;
37enum class TrackSource;
38
42enum class ConnectionQuality {
43 Poor = 0,
44 Good,
45 Excellent,
46 Lost,
47};
48
52enum class ConnectionState {
53 Disconnected = 0,
54 Connected,
55 Reconnecting,
56};
57
64enum class DataPacketKind {
65 Lossy,
66 Reliable,
67};
68
74enum class EncryptionState {
75 New = 0,
76 Ok,
77 EncryptionFailed,
78 DecryptionFailed,
79 MissingKey,
80 KeyRatcheted,
81 InternalError,
82};
83
89enum class DisconnectReason {
90 Unknown = 0,
91 ClientInitiated,
92 DuplicateIdentity,
93 ServerShutdown,
94 ParticipantRemoved,
95 RoomDeleted,
96 StateMismatch,
97 JoinFailure,
98 Migration,
99 SignalClose,
100 RoomClosed,
101 UserUnavailable,
102 UserRejected,
103 SipTrunkFailure,
104 ConnectionTimeout,
105 MediaFailure
106};
107
113 std::vector<std::uint8_t> data;
114
116 std::optional<std::string> topic;
117};
118
124 std::uint32_t code = 0;
125
127 std::optional<std::string> digit;
128};
129
135 std::optional<std::string> sid;
136
138 std::string name;
139
141 std::string metadata;
142
145
148
150 std::uint32_t empty_timeout = 0;
151
154 std::uint32_t departure_timeout = 0;
155
157 std::uint32_t max_participants = 0;
158
160 std::int64_t creation_time = 0;
161
163 std::uint32_t num_participants = 0;
164
166 std::uint32_t num_publishers = 0;
167
169 bool active_recording = false;
170};
171
177 std::string key;
178
180 std::string value;
181
182 AttributeEntry() = default;
183
184 AttributeEntry(std::string k, std::string v)
185 : key(std::move(k)), value(std::move(v)) {}
186};
187
194 std::string stream_id;
195
197 std::int64_t timestamp = 0;
198
200 std::string mime_type;
201
203 std::string topic;
204
206 std::optional<std::uint64_t> total_length;
207
209 std::map<std::string, std::string> attributes;
210
214 enum class ContentType {
215 None,
216 Text,
217 Byte,
218 } content_type = ContentType::None;
219
223 enum class OperationType {
224 Create = 0,
225 Update = 1,
226 Delete = 2,
227 Reaction = 3,
228 };
229
231 std::optional<OperationType> operation_type;
232
234 std::optional<int> version;
235
237 std::optional<std::string> reply_to_stream_id;
238
240 std::vector<std::string> attached_stream_ids;
241
243 std::optional<bool> generated;
244
246 std::optional<std::string> name;
247};
248
254 std::string stream_id;
255
257 std::uint64_t chunk_index = 0;
258
260 std::vector<std::uint8_t> content;
261
263 std::optional<int> version;
264
266 std::vector<std::uint8_t> iv;
267};
268
274 std::string stream_id;
275
277 std::string reason;
278
280 std::map<std::string, std::string> attributes;
281};
282
288 std::uint64_t max_bitrate = 0;
289
291 double max_framerate = 0.0;
292};
293
299 std::uint64_t max_bitrate = 0;
300};
301
307 std::optional<VideoEncodingOptions> video_encoding;
308
310 std::optional<AudioEncodingOptions> audio_encoding;
311
313 std::optional<VideoCodec> video_codec;
314
316 std::optional<bool> dtx;
317
319 std::optional<bool> red;
320
322 std::optional<bool> simulcast;
323
325 std::optional<TrackSource> source;
326
328 std::optional<std::string> stream;
329
331 std::optional<bool> preconnect_buffer;
332};
333
334// ---------------------------------------------------------
335// Event structs – public representations of RoomEvent.*
336// ---------------------------------------------------------
337
345
352
354 DisconnectReason reason = DisconnectReason::Unknown;
355};
356
362 std::shared_ptr<LocalTrackPublication> publication;
363
365 std::shared_ptr<Track> track;
366};
367
373 std::shared_ptr<LocalTrackPublication> publication;
374};
375
381 std::shared_ptr<Track> track;
382};
383
389 std::shared_ptr<RemoteTrackPublication> publication;
390
393};
394
400 std::shared_ptr<RemoteTrackPublication> publication;
401
404};
405
411 std::shared_ptr<Track> track;
412
414 std::shared_ptr<RemoteTrackPublication> publication;
415
418};
419
425 std::shared_ptr<Track> track;
426
428 std::shared_ptr<RemoteTrackPublication> publication;
429
432};
433
440
442 std::string track_sid;
443
445 std::string error;
446};
447
454
456 std::shared_ptr<TrackPublication> publication;
457};
458
465
467 std::shared_ptr<TrackPublication> publication;
468};
469
475 std::vector<Participant *> speakers;
476};
477
483 std::string old_metadata;
484
486 std::string new_metadata;
487};
488
494 std::string sid;
495};
496
503
505 std::string old_metadata;
506
508 std::string new_metadata;
509};
510
517
519 std::string old_name;
520
522 std::string new_name;
523};
524
531
533 std::vector<AttributeEntry> changed_attributes;
534};
535
546
553
555 ConnectionQuality quality = ConnectionQuality::Good;
556};
557
563 std::vector<std::uint8_t> data;
564
566 DataPacketKind kind = DataPacketKind::Reliable;
567
571
573 std::string topic;
574};
575
581 int code = 0;
582
584 std::string digit;
585
588};
589
595 ConnectionState state = ConnectionState::Disconnected;
596};
597
603 DisconnectReason reason = DisconnectReason::Unknown;
604};
605
610
615
619struct RoomEosEvent {};
620
631
642
653
659 DataPacketKind kind = DataPacketKind::Reliable;
660
662 std::uint64_t threshold = 0;
663};
664
670 std::uint64_t reader_handle = 0;
671
674};
675
681 std::uint64_t reader_handle = 0;
682
685};
686
694
702
708 std::vector<Participant *> participants;
709};
710
717
719 EncryptionState state = EncryptionState::New;
720};
721
722} // namespace livekit
Definition participant.h:31
Definition remote_participant.h:29
Definition room_event_types.h:473
std::vector< Participant * > speakers
Definition room_event_types.h:475
Definition room_event_types.h:175
std::string value
Definition room_event_types.h:180
std::string key
Definition room_event_types.h:177
Definition room_event_types.h:297
std::uint64_t max_bitrate
Definition room_event_types.h:299
Definition room_event_types.h:668
std::string participant_identity
Definition room_event_types.h:673
std::uint64_t reader_handle
Definition room_event_types.h:670
Definition room_event_types.h:550
ConnectionQuality quality
Definition room_event_types.h:555
Participant * participant
Definition room_event_types.h:552
Definition room_event_types.h:593
ConnectionState state
Definition room_event_types.h:595
std::uint64_t threshold
Definition room_event_types.h:662
DataPacketKind kind
Definition room_event_types.h:659
Definition room_event_types.h:252
std::optional< int > version
Definition room_event_types.h:263
std::uint64_t chunk_index
Definition room_event_types.h:257
std::vector< std::uint8_t > iv
Definition room_event_types.h:266
std::string stream_id
Definition room_event_types.h:254
std::vector< std::uint8_t > content
Definition room_event_types.h:260
Definition room_event_types.h:635
std::string participant_identity
Definition room_event_types.h:637
DataStreamChunkData chunk
Definition room_event_types.h:640
Definition room_event_types.h:192
std::int64_t timestamp
Definition room_event_types.h:197
std::optional< std::string > reply_to_stream_id
Definition room_event_types.h:237
OperationType
Definition room_event_types.h:223
std::optional< OperationType > operation_type
Definition room_event_types.h:231
std::optional< std::string > name
Definition room_event_types.h:246
std::map< std::string, std::string > attributes
Definition room_event_types.h:209
ContentType
Definition room_event_types.h:214
std::string stream_id
Definition room_event_types.h:194
std::optional< bool > generated
Definition room_event_types.h:243
std::optional< std::uint64_t > total_length
Definition room_event_types.h:206
std::string mime_type
Definition room_event_types.h:200
std::optional< int > version
Definition room_event_types.h:234
std::vector< std::string > attached_stream_ids
Definition room_event_types.h:240
std::string topic
Definition room_event_types.h:203
Definition room_event_types.h:624
DataStreamHeaderData header
Definition room_event_types.h:629
std::string participant_identity
Definition room_event_types.h:626
Definition room_event_types.h:272
std::string stream_id
Definition room_event_types.h:274
std::map< std::string, std::string > attributes
Definition room_event_types.h:280
std::string reason
Definition room_event_types.h:277
Definition room_event_types.h:646
std::string participant_identity
Definition room_event_types.h:648
DataStreamTrailerData trailer
Definition room_event_types.h:651
Definition room_event_types.h:601
DisconnectReason reason
Definition room_event_types.h:603
Definition room_event_types.h:714
EncryptionState state
Definition room_event_types.h:719
Participant * participant
Definition room_event_types.h:716
Definition room_event_types.h:360
std::shared_ptr< LocalTrackPublication > publication
Definition room_event_types.h:362
std::shared_ptr< Track > track
Definition room_event_types.h:365
Definition room_event_types.h:379
std::shared_ptr< Track > track
Definition room_event_types.h:381
Definition room_event_types.h:371
std::shared_ptr< LocalTrackPublication > publication
Definition room_event_types.h:373
Definition room_event_types.h:528
std::vector< AttributeEntry > changed_attributes
Definition room_event_types.h:533
Participant * participant
Definition room_event_types.h:530
Definition room_event_types.h:341
RemoteParticipant * participant
Definition room_event_types.h:343
Definition room_event_types.h:349
RemoteParticipant * participant
Definition room_event_types.h:351
DisconnectReason reason
Definition room_event_types.h:354
Definition room_event_types.h:539
Participant * participant
Definition room_event_types.h:541
bool is_encrypted
Definition room_event_types.h:544
Definition room_event_types.h:500
std::string old_metadata
Definition room_event_types.h:505
Participant * participant
Definition room_event_types.h:502
std::string new_metadata
Definition room_event_types.h:508
Definition room_event_types.h:514
std::string old_name
Definition room_event_types.h:519
std::string new_name
Definition room_event_types.h:522
Participant * participant
Definition room_event_types.h:516
Definition room_event_types.h:706
std::vector< Participant * > participants
Definition room_event_types.h:708
Definition room_event_types.h:614
Definition room_event_types.h:609
Definition room_event_types.h:619
Definition room_event_types.h:133
std::string name
Definition room_event_types.h:138
std::uint32_t num_participants
Definition room_event_types.h:163
std::uint32_t departure_timeout
Definition room_event_types.h:154
std::uint32_t empty_timeout
Definition room_event_types.h:150
std::string metadata
Definition room_event_types.h:141
bool active_recording
Definition room_event_types.h:169
std::int64_t creation_time
Definition room_event_types.h:160
std::uint32_t num_publishers
Definition room_event_types.h:166
std::uint32_t max_participants
Definition room_event_types.h:157
std::uint64_t reliable_dc_buffered_amount_low_threshold
Definition room_event_types.h:147
std::uint64_t lossy_dc_buffered_amount_low_threshold
Definition room_event_types.h:144
std::optional< std::string > sid
Definition room_event_types.h:135
Definition room_event_types.h:481
std::string old_metadata
Definition room_event_types.h:483
std::string new_metadata
Definition room_event_types.h:486
Definition room_event_types.h:698
RoomInfoData info
Definition room_event_types.h:700
Definition room_event_types.h:492
std::string sid
Definition room_event_types.h:494
Definition room_event_types.h:690
RoomInfoData info
Definition room_event_types.h:692
Definition room_event_types.h:122
std::uint32_t code
Definition room_event_types.h:124
std::optional< std::string > digit
Definition room_event_types.h:127
Definition room_event_types.h:579
RemoteParticipant * participant
Definition room_event_types.h:587
int code
Definition room_event_types.h:581
std::string digit
Definition room_event_types.h:584
Definition room_event_types.h:679
std::string participant_identity
Definition room_event_types.h:684
std::uint64_t reader_handle
Definition room_event_types.h:681
Definition room_event_types.h:451
Participant * participant
Definition room_event_types.h:453
std::shared_ptr< TrackPublication > publication
Definition room_event_types.h:456
Definition room_event_types.h:305
std::optional< VideoEncodingOptions > video_encoding
Definition room_event_types.h:307
std::optional< bool > red
Definition room_event_types.h:319
std::optional< bool > simulcast
Definition room_event_types.h:322
std::optional< std::string > stream
Definition room_event_types.h:328
std::optional< bool > dtx
Definition room_event_types.h:316
std::optional< VideoCodec > video_codec
Definition room_event_types.h:313
std::optional< AudioEncodingOptions > audio_encoding
Definition room_event_types.h:310
std::optional< TrackSource > source
Definition room_event_types.h:325
std::optional< bool > preconnect_buffer
Definition room_event_types.h:331
Definition room_event_types.h:387
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:389
RemoteParticipant * participant
Definition room_event_types.h:392
Definition room_event_types.h:409
std::shared_ptr< Track > track
Definition room_event_types.h:411
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:414
RemoteParticipant * participant
Definition room_event_types.h:417
Definition room_event_types.h:437
std::string error
Definition room_event_types.h:445
std::string track_sid
Definition room_event_types.h:442
RemoteParticipant * participant
Definition room_event_types.h:439
Definition room_event_types.h:462
Participant * participant
Definition room_event_types.h:464
std::shared_ptr< TrackPublication > publication
Definition room_event_types.h:467
Definition room_event_types.h:398
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:400
RemoteParticipant * participant
Definition room_event_types.h:403
Definition room_event_types.h:423
RemoteParticipant * participant
Definition room_event_types.h:431
std::shared_ptr< Track > track
Definition room_event_types.h:425
std::shared_ptr< RemoteTrackPublication > publication
Definition room_event_types.h:428
Definition room_event_types.h:561
std::vector< std::uint8_t > data
Definition room_event_types.h:563
RemoteParticipant * participant
Definition room_event_types.h:570
std::string topic
Definition room_event_types.h:573
DataPacketKind kind
Definition room_event_types.h:566
Definition room_event_types.h:111
std::vector< std::uint8_t > data
Definition room_event_types.h:113
std::optional< std::string > topic
Definition room_event_types.h:116
Definition room_event_types.h:286
double max_framerate
Definition room_event_types.h:291
std::uint64_t max_bitrate
Definition room_event_types.h:288