Struct re_sdk::RecordingStreamBuilder

source ·
pub struct RecordingStreamBuilder {
    application_id: ApplicationId,
    store_kind: StoreKind,
    store_id: Option<StoreId>,
    store_source: Option<StoreSource>,
    default_enabled: bool,
    enabled: Option<bool>,
    batcher_config: Option<ChunkBatcherConfig>,
    is_official_example: bool,
}
Expand description

Construct a RecordingStream.

let rec = RecordingStreamBuilder::new("rerun_example_app").save("my_recording.rrd")?;

Fields§

§application_id: ApplicationId§store_kind: StoreKind§store_id: Option<StoreId>§store_source: Option<StoreSource>§default_enabled: bool§enabled: Option<bool>§batcher_config: Option<ChunkBatcherConfig>§is_official_example: bool

Implementations§

source§

impl RecordingStreamBuilder

source

pub fn new(application_id: impl Into<ApplicationId>) -> Self

Create a new RecordingStreamBuilder with the given ApplicationId.

The ApplicationId is usually the name of your app.

let rec = RecordingStreamBuilder::new("rerun_example_app").save("my_recording.rrd")?;
source

pub fn default_enabled(self, default_enabled: bool) -> Self

Set whether or not Rerun is enabled by default.

If the RERUN environment variable is set, it will override this.

Set also: Self::enabled.

source

pub fn enabled(self, enabled: bool) -> Self

Set whether or not Rerun is enabled.

Setting this will ignore the RERUN environment variable.

Set also: Self::default_enabled.

source

pub fn recording_id(self, recording_id: impl Into<String>) -> Self

Set the RecordingId for this context.

If you’re logging from multiple processes and want all the messages to end up in the same recording, you must make sure that they all set the same RecordingId using this function.

Note that many stores can share the same ApplicationId, but they all have unique RecordingIds.

The default is to use a random RecordingId.

source

pub fn store_id(self, store_id: StoreId) -> Self

Set the StoreId for this context.

If you’re logging from multiple processes and want all the messages to end up as the same store, you must make sure they all set the same StoreId using this function.

Note that many stores can share the same ApplicationId, but they all have unique StoreIds.

The default is to use a random StoreId.

source

pub fn batcher_config(self, config: ChunkBatcherConfig) -> Self

Specifies the configuration of the internal data batching mechanism.

See ChunkBatcher & ChunkBatcherConfig for more information.

source

pub fn buffered(self) -> RecordingStreamResult<RecordingStream>

Creates a new RecordingStream that starts in a buffering state (RAM).

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app").buffered()?;
source

pub fn memory( self ) -> RecordingStreamResult<(RecordingStream, MemorySinkStorage)>

Creates a new RecordingStream that is pre-configured to stream the data through to a crate::log_sink::MemorySink.

§Example

let (rec, storage) = re_sdk::RecordingStreamBuilder::new("rerun_example_app").memory()?;

log_data(&rec);

let data = storage.take();
source

pub fn connect(self) -> RecordingStreamResult<RecordingStream>

👎Deprecated since 0.20.0: use connect_tcp() instead

Creates a new RecordingStream that is pre-configured to stream the data through to a remote Rerun instance.

See also Self::connect_opts if you wish to configure the TCP connection.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app").connect()?;
source

pub fn connect_tcp(self) -> RecordingStreamResult<RecordingStream>

Creates a new RecordingStream that is pre-configured to stream the data through to a remote Rerun instance.

See also Self::connect_opts if you wish to configure the TCP connection.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app").connect_tcp()?;
source

pub fn connect_opts( self, addr: SocketAddr, flush_timeout: Option<Duration> ) -> RecordingStreamResult<RecordingStream>

👎Deprecated since 0.20.0: use connect_tcp_opts() instead

Creates a new RecordingStream that is pre-configured to stream the data through to a remote Rerun instance.

flush_timeout is the minimum time the TcpSink will wait during a flush before potentially dropping data. Note: Passing None here can cause a call to flush to block indefinitely if a connection cannot be established.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app")
    .connect_opts(re_sdk::default_server_addr(), re_sdk::default_flush_timeout())?;
source

pub fn connect_tcp_opts( self, addr: SocketAddr, flush_timeout: Option<Duration> ) -> RecordingStreamResult<RecordingStream>

Creates a new RecordingStream that is pre-configured to stream the data through to a remote Rerun instance.

flush_timeout is the minimum time the TcpSink will wait during a flush before potentially dropping data. Note: Passing None here can cause a call to flush to block indefinitely if a connection cannot be established.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app")
    .connect_opts(re_sdk::default_server_addr(), re_sdk::default_flush_timeout())?;
source

pub fn save( self, path: impl Into<PathBuf> ) -> RecordingStreamResult<RecordingStream>

Creates a new RecordingStream that is pre-configured to stream the data through to an RRD file on disk.

The Rerun Viewer is able to read continuously from the resulting rrd file while it is being written. However, depending on your OS and configuration, changes may not be immediately visible due to file caching. This is a common issue on Windows and (to a lesser extent) on MacOS.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app").save("my_recording.rrd")?;
source

pub fn stdout(self) -> RecordingStreamResult<RecordingStream>

Creates a new RecordingStream that is pre-configured to stream the data through to stdout.

If there isn’t any listener at the other end of the pipe, the RecordingStream will default back to buffered mode, in order not to break the user’s terminal.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app").stdout()?;
source

pub fn spawn(self) -> RecordingStreamResult<RecordingStream>

Spawns a new Rerun Viewer process from an executable available in PATH, then creates a new RecordingStream that is pre-configured to stream the data through to that viewer over TCP.

If a Rerun Viewer is already listening on this TCP port, the stream will be redirected to that viewer instead of starting a new one.

See also Self::spawn_opts if you wish to configure the behavior of thew Rerun process as well as the underlying TCP connection.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app").spawn()?;
source

pub fn spawn_opts( self, opts: &SpawnOptions, flush_timeout: Option<Duration> ) -> RecordingStreamResult<RecordingStream>

Spawns a new Rerun Viewer process from an executable available in PATH, then creates a new RecordingStream that is pre-configured to stream the data through to that viewer over TCP.

If a Rerun Viewer is already listening on this TCP port, the stream will be redirected to that viewer instead of starting a new one.

The behavior of the spawned Viewer can be configured via opts. If you’re fine with the default behavior, refer to the simpler Self::spawn.

flush_timeout is the minimum time the TcpSink will wait during a flush before potentially dropping data. Note: Passing None here can cause a call to flush to block indefinitely if a connection cannot be established.

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app")
    .spawn_opts(&re_sdk::SpawnOptions::default(), re_sdk::default_flush_timeout())?;
source

pub fn serve( self, bind_ip: &str, web_port: WebViewerServerPort, ws_port: RerunServerPort, server_memory_limit: MemoryLimit, open_browser: bool ) -> RecordingStreamResult<RecordingStream>

👎Deprecated since 0.20.0: use serve_web() instead

Creates a new RecordingStream that is pre-configured to stream the data through to a web-based Rerun viewer via WebSockets.

If the open_browser argument is true, your default browser will be opened with a connected web-viewer.

If not, you can connect to this server using the rerun binary (cargo install rerun-cli --locked).

§Details

This method will spawn two servers: one HTTPS server serving the Rerun Web Viewer .html and .wasm files, and then one WebSocket server that streams the log data to the web viewer (or to a native viewer, or to multiple viewers).

The WebSocket server will buffer all log data in memory so that late connecting viewers will get all the data. You can limit the amount of data buffered by the WebSocket server with the server_memory_limit argument. Once reached, the earliest logged data will be dropped. Note that this means that static data may be dropped if logged early (see https://github.com/rerun-io/rerun/issues/5531).

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app")
    .serve("0.0.0.0",
           Default::default(),
           Default::default(),
           re_sdk::MemoryLimit::from_fraction_of_total(0.25),
           true)?;
source

pub fn serve_web( self, bind_ip: &str, web_port: WebViewerServerPort, ws_port: RerunServerPort, server_memory_limit: MemoryLimit, open_browser: bool ) -> RecordingStreamResult<RecordingStream>

Creates a new RecordingStream that is pre-configured to stream the data through to a web-based Rerun viewer via WebSockets.

If the open_browser argument is true, your default browser will be opened with a connected web-viewer.

If not, you can connect to this server using the rerun binary (cargo install rerun-cli --locked).

§Details

This method will spawn two servers: one HTTPS server serving the Rerun Web Viewer .html and .wasm files, and then one WebSocket server that streams the log data to the web viewer (or to a native viewer, or to multiple viewers).

The WebSocket server will buffer all log data in memory so that late connecting viewers will get all the data. You can limit the amount of data buffered by the WebSocket server with the server_memory_limit argument. Once reached, the earliest logged data will be dropped. Note that this means that static data may be dropped if logged early (see https://github.com/rerun-io/rerun/issues/5531).

§Example
let rec = re_sdk::RecordingStreamBuilder::new("rerun_example_app")
    .serve_web("0.0.0.0",
               Default::default(),
               Default::default(),
               re_sdk::MemoryLimit::from_fraction_of_total(0.25),
               true)?;
source

pub fn into_args(self) -> (bool, StoreInfo, ChunkBatcherConfig)

Returns whether or not logging is enabled, a StoreInfo and the associated batcher configuration.

This can be used to then construct a RecordingStream manually using RecordingStream::new.

source

fn is_enabled(&self) -> bool

Internal check for whether or not logging is enabled using explicit/default settings & env var.

Trait Implementations§

source§

impl Debug for RecordingStreamBuilder

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> To for T
where T: ?Sized,

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Ungil for T
where T: Send,