19#include <condition_variable>
24#include "livekit/data_track_error.h"
25#include "livekit/data_track_frame.h"
26#include "livekit/ffi_handle.h"
27#include "livekit/visibility.h"
33class DataTrackStreamReadResponse;
59 std::optional<std::uint32_t> buffer_size{std::nullopt};
95#ifdef LIVEKIT_TEST_ACCESS
96 friend class DataTrackStreamTest;
101 void init(
FfiHandle subscription_handle);
104 void onFfiEvent(
const proto::FfiEvent& event);
107 void handleReadResponse(
const proto::DataTrackStreamReadResponse& response);
110 void failProtocolError(
const char* message);
116 void pushEos(std::optional<SubscribeDataTrackError> error = std::nullopt);
119 mutable std::mutex mutex_;
122 std::condition_variable cv_;
127 std::optional<DataTrackFrame> frame_;
136 std::optional<SubscribeDataTrackError> terminal_error_;
139 FfiHandle subscription_handle_;
142 std::int32_t listener_id_{-1};
Represents a pull-based stream of frames from a remote data track.
Definition data_track_stream.h:54
RAII wrapper for an FFI handle (uintptr_t) coming from Rust.
Definition ffi_handle.h:29
Represents a data track published by a remote participant.
Definition remote_data_track.h:52
Public API for the LiveKit C++ Client SDK.
Definition audio_frame.h:25
A single frame of data published or received on a data track.
Definition data_track_frame.h:36
Options for subscribing to a remote data track stream.
Definition data_track_stream.h:57
Error details returned when subscribing to a remote data track fails.
Definition data_track_error.h:83