Rerun C++ SDK
Loading...
Searching...
No Matches
rerun::RecordingStream Class Reference

A RecordingStream handles everything related to logging data into Rerun. More...

#include <rerun/recording_stream.hpp>

Public Member Functions

 RecordingStream (std::string_view app_id, std::string_view recording_id=std::string_view(), StoreKind store_kind=StoreKind::Recording)
 Creates a new recording stream to log to.
 
Properties
StoreKind kind () const
 Returns the store kind as passed during construction.
 
bool is_enabled () const
 Returns whether the recording stream is enabled.
 
Directing the recording stream.

Either of these needs to be called, otherwise the stream will buffer up indefinitely.

Error connect (std::string_view tcp_addr="127.0.0.1:9876", float flush_timeout_sec=2.0) const
 Connect to a remote Rerun Viewer on the given ip:port.
 
Error connect_tcp (std::string_view tcp_addr="127.0.0.1:9876", float flush_timeout_sec=2.0) const
 Connect to a remote Rerun Viewer on the given ip:port.
 
Error spawn (const SpawnOptions &options={}, float flush_timeout_sec=2.0) const
 Spawns a new Rerun Viewer process from an executable available in PATH, then connects to it over TCP.
 
template<typename TRep , typename TPeriod >
Error spawn (const SpawnOptions &options={}, std::chrono::duration< TRep, TPeriod > flush_timeout=std::chrono::seconds(2)) const
 
Error save (std::string_view path) const
 Stream all log-data to a given .rrd file.
 
Error to_stdout () const
 Stream all log-data to standard output.
 
void flush_blocking () const
 Initiates a flush the batching pipeline and waits for it to propagate.
 
Controlling log time.
void set_time_sequence (std::string_view timeline_name, int64_t sequence_nr) const
 Set the current time of the recording, for the current calling thread.
 
template<typename TClock >
void set_time (std::string_view timeline_name, std::chrono::time_point< TClock > time) const
 Set the current time of the recording, for the current calling thread.
 
template<typename TRep , typename TPeriod >
void set_time (std::string_view timeline_name, std::chrono::duration< TRep, TPeriod > time) const
 Set the current time of the recording, for the current calling thread.
 
void set_time_seconds (std::string_view timeline_name, double seconds) const
 Set the current time of the recording, for the current calling thread.
 
void set_time_nanos (std::string_view timeline_name, int64_t nanos) const
 Set the current time of the recording, for the current calling thread.
 
void disable_timeline (std::string_view timeline_name) const
 Stops logging to the specified timeline for subsequent log calls.
 
void reset_time () const
 Clears out the current time of the recording, for the current calling thread.
 
Sending & logging data.
template<typename... Ts>
void log (std::string_view entity_path, const Ts &... archetypes_or_collections) const
 Logs one or more archetype and/or component batches.
 
template<typename... Ts>
void log_timeless (std::string_view entity_path, const Ts &... archetypes_or_collections) const
 
template<typename... Ts>
void log_static (std::string_view entity_path, const Ts &... archetypes_or_collections) const
 Logs one or more archetype and/or component batches as static data.
 
template<typename... Ts>
Error try_log (std::string_view entity_path, const Ts &... archetypes_or_collections) const
 Logs one or more archetype and/or component batches.
 
template<typename... Ts>
Error try_log_timeless (std::string_view entity_path, const Ts &... archetypes_or_collections) const
 
template<typename... Ts>
Error try_log_static (std::string_view entity_path, const Ts &... archetypes_or_collections) const
 Logs one or more archetype and/or component batches as static data, returning an error.
 
template<typename... Ts>
void log_with_timeless (std::string_view entity_path, bool timeless, const Ts &... archetypes_or_collections) const
 
template<typename... Ts>
void log_with_static (std::string_view entity_path, bool static_, const Ts &... archetypes_or_collections) const
 Logs one or more archetype and/or component batches optionally static, returning an error.
 
template<typename... Ts>
Error try_log_with_timeless (std::string_view entity_path, bool static_, const Ts &... archetypes_or_collections) const
 
template<typename... Ts>
Error try_log_with_static (std::string_view entity_path, bool static_, const Ts &... archetypes_or_collections) const
 Logs one or more archetype and/or component batches optionally static, returning an error.
 
Error try_log_serialized_batches (std::string_view entity_path, bool static_, std::vector< ComponentBatch > batches) const
 Logs several serialized batches batches, returning an error on failure.
 
Error try_log_data_row (std::string_view entity_path, size_t num_data_cells, const ComponentBatch *data_cells, bool inject_time) const
 Bottom level API that logs raw data cells to the recording stream.
 
void log_file_from_path (const std::filesystem::path &filepath, std::string_view entity_path_prefix=std::string_view(), bool static_=false) const
 Logs the file at the given path using all DataLoaders available.
 
Error try_log_file_from_path (const std::filesystem::path &filepath, std::string_view entity_path_prefix=std::string_view(), bool static_=false) const
 Logs the file at the given path using all DataLoaders available.
 
void log_file_from_contents (const std::filesystem::path &filepath, const std::byte *contents, size_t contents_size, std::string_view entity_path_prefix=std::string_view(), bool static_=false) const
 Logs the given contents using all DataLoaders available.
 
Error try_log_file_from_contents (const std::filesystem::path &filepath, const std::byte *contents, size_t contents_size, std::string_view entity_path_prefix=std::string_view(), bool static_=false) const
 Logs the given contents using all DataLoaders available.
 
template<typename... Ts>
void send_columns (std::string_view entity_path, Collection< TimeColumn > time_columns, Collection< Ts >... component_columns) const
 Directly log a columns of data to Rerun.
 
template<typename... Ts>
Error try_send_columns (std::string_view entity_path, Collection< TimeColumn > time_columns, Collection< Ts >... component_columns) const
 Directly log a columns of data to Rerun.
 
void send_columns (std::string_view entity_path, Collection< TimeColumn > time_columns, Collection< ComponentColumn > component_columns) const
 Directly log a columns of data to Rerun.
 
Error try_send_columns (std::string_view entity_path, Collection< TimeColumn > time_columns, Collection< ComponentColumn > component_columns) const
 Directly log a columns of data to Rerun.
 

Controlling globally available instances of RecordingStream.

void set_global () const
 Replaces the currently active recording for this stream's store kind in the global scope with this one.
 
void set_thread_local () const
 Replaces the currently active recording for this stream's store kind in the thread-local scope with this one.
 
static RecordingStreamcurrent (StoreKind store_kind=StoreKind::Recording)
 Retrieves the most appropriate globally available recording stream for the given kind.
 

Detailed Description

A RecordingStream handles everything related to logging data into Rerun.

Multithreading and ordering

A RecordingStream is thread-safe.

Internally, all operations are linearized into a pipeline:

  • All operations sent by a given thread will take effect in the same exact order as that thread originally sent them in, from its point of view.
  • There isn't any well defined global order across multiple threads.

This means that e.g. flushing the pipeline (flush_blocking) guarantees that all previous data sent by the calling thread has been recorded; no more, no less. (e.g. it does not mean that all file caches are flushed)

Shutdown

The RecordingStream can only be shutdown by dropping all instances of it, at which point it will automatically take care of flushing any pending data that might remain in the pipeline.

TODO(andreas): The only way of having two instances of a RecordingStream is currently to set it as a the global.

Shutting down cannot ever block.

Logging

Internally, the stream will automatically micro-batch multiple log calls to optimize transport. See SDK Micro Batching for more information.

The data will be timestamped automatically based on the RecordingStream's internal clock.

Constructor & Destructor Documentation

◆ RecordingStream()

rerun::RecordingStream::RecordingStream ( std::string_view  app_id,
std::string_view  recording_id = std::string_view(),
StoreKind  store_kind = StoreKind::Recording 
)

Creates a new recording stream to log to.

Parameters
app_idThe user-chosen name of the application doing the logging.
recording_idThe user-chosen name of the recording being logged to.
store_kindWhether to log to the recording store or the blueprint store.

Member Function Documentation

◆ is_enabled()

bool rerun::RecordingStream::is_enabled ( ) const
inline

Returns whether the recording stream is enabled.

All log functions early out if a recording stream is disabled. Naturally, logging functions that take unserialized data will skip the serialization step as well.

◆ set_global()

void rerun::RecordingStream::set_global ( ) const

Replaces the currently active recording for this stream's store kind in the global scope with this one.

Afterwards, destroying this recording stream will not change the global recording stream, as it increases an internal ref-count.

◆ set_thread_local()

void rerun::RecordingStream::set_thread_local ( ) const

Replaces the currently active recording for this stream's store kind in the thread-local scope with this one.

Afterwards, destroying this recording stream will not change the thread local recording stream, as it increases an internal ref-count.

◆ current()

static RecordingStream & rerun::RecordingStream::current ( StoreKind  store_kind = StoreKind::Recording)
static

Retrieves the most appropriate globally available recording stream for the given kind.

I.e. thread-local first, then global. If neither was set, any operations on the returned stream will be no-ops.

◆ connect()

Error rerun::RecordingStream::connect ( std::string_view  tcp_addr = "127.0.0.1:9876",
float  flush_timeout_sec = 2.0 
) const

Connect to a remote Rerun Viewer on the given ip:port.

Requires that you first start a Rerun Viewer by typing 'rerun' in a terminal.

flush_timeout_sec: The minimum time the SDK will wait during a flush before potentially dropping data if progress is not being made. Passing a negative value indicates no timeout, and can cause a call to flush to block indefinitely.

This function returns immediately.

◆ connect_tcp()

Error rerun::RecordingStream::connect_tcp ( std::string_view  tcp_addr = "127.0.0.1:9876",
float  flush_timeout_sec = 2.0 
) const

Connect to a remote Rerun Viewer on the given ip:port.

Requires that you first start a Rerun Viewer by typing 'rerun' in a terminal.

flush_timeout_sec: The minimum time the SDK will wait during a flush before potentially dropping data if progress is not being made. Passing a negative value indicates no timeout, and can cause a call to flush to block indefinitely.

This function returns immediately.

◆ spawn() [1/2]

Error rerun::RecordingStream::spawn ( const SpawnOptions options = {},
float  flush_timeout_sec = 2.0 
) const

Spawns a new Rerun Viewer process from an executable available in PATH, then connects to it 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.

Parameters

options: See rerun::SpawnOptions for more information.

flush_timeout_sec: The minimum time the SDK will wait during a flush before potentially dropping data if progress is not being made. Passing a negative value indicates no timeout, and can cause a call to flush to block indefinitely.

◆ spawn() [2/2]

template<typename TRep , typename TPeriod >
Error rerun::RecordingStream::spawn ( const SpawnOptions options = {},
std::chrono::duration< TRep, TPeriod >  flush_timeout = std::chrono::seconds(2) 
) const
inline

◆ save()

Error rerun::RecordingStream::save ( std::string_view  path) const

Stream all log-data to a given .rrd file.

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.

This function returns immediately.

◆ to_stdout()

Error rerun::RecordingStream::to_stdout ( ) const

Stream all log-data to standard output.

Pipe the result into the Rerun Viewer to visualize it.

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.

This function returns immediately.

◆ flush_blocking()

void rerun::RecordingStream::flush_blocking ( ) const

Initiates a flush the batching pipeline and waits for it to propagate.

See RecordingStream docs for ordering semantics and multithreading guarantees.

◆ set_time_sequence()

void rerun::RecordingStream::set_time_sequence ( std::string_view  timeline_name,
int64_t  sequence_nr 
) const

Set the current time of the recording, for the current calling thread.

Used for all subsequent logging performed from this same thread, until the next call to one of the time setting methods.

For example: rec.set_time_sequence("frame_nr", frame_nr).

You can remove a timeline from subsequent log calls again using rec.disable_timeline.

See also
set_time_seconds, set_time_nanos, reset_time, set_time, disable_timeline

◆ set_time() [1/2]

template<typename TClock >
void rerun::RecordingStream::set_time ( std::string_view  timeline_name,
std::chrono::time_point< TClock >  time 
) const
inline

Set the current time of the recording, for the current calling thread.

Used for all subsequent logging performed from this same thread, until the next call to one of the time setting methods.

For example: rec.set_time("sim_time", sim_time_secs).

You can remove a timeline from subsequent log calls again using rec.disable_timeline.

See also
set_time_sequence, set_time_seconds, set_time_nanos, reset_time, disable_timeline

◆ set_time() [2/2]

template<typename TRep , typename TPeriod >
void rerun::RecordingStream::set_time ( std::string_view  timeline_name,
std::chrono::duration< TRep, TPeriod >  time 
) const
inline

Set the current time of the recording, for the current calling thread.

Used for all subsequent logging performed from this same thread, until the next call to one of the time setting methods.

For example: rec.set_time("sim_time", sim_time_secs).

You can remove a timeline from subsequent log calls again using rec.disable_timeline.

See also
set_time_sequence, set_time_seconds, set_time_nanos, reset_time, disable_timeline

◆ set_time_seconds()

void rerun::RecordingStream::set_time_seconds ( std::string_view  timeline_name,
double  seconds 
) const

Set the current time of the recording, for the current calling thread.

Used for all subsequent logging performed from this same thread, until the next call to one of the time setting methods.

For example: rec.set_time_seconds("sim_time", sim_time_secs).

You can remove a timeline from subsequent log calls again using rec.disable_timeline.

See also
set_time_sequence, set_time_nanos, reset_time, set_time, disable_timeline

◆ set_time_nanos()

void rerun::RecordingStream::set_time_nanos ( std::string_view  timeline_name,
int64_t  nanos 
) const

Set the current time of the recording, for the current calling thread.

Used for all subsequent logging performed from this same thread, until the next call to one of the time setting methods.

For example: rec.set_time_nanos("sim_time", sim_time_nanos).

You can remove a timeline from subsequent log calls again using rec.disable_timeline.

See also
set_time_sequence, set_time_seconds, reset_time, set_time, disable_timeline

◆ disable_timeline()

void rerun::RecordingStream::disable_timeline ( std::string_view  timeline_name) const

Stops logging to the specified timeline for subsequent log calls.

The timeline is still there, but will not be updated with any new data.

No-op if the timeline doesn't exist.

See also
set_time_sequence, set_time_seconds, set_time, reset_time

◆ reset_time()

void rerun::RecordingStream::reset_time ( ) const

Clears out the current time of the recording, for the current calling thread.

Used for all subsequent logging performed from this same thread, until the next call to one of the time setting methods.

For example: rec.reset_time().

See also
set_time_sequence, set_time_seconds, set_time_nanos, disable_timeline

◆ log()

template<typename... Ts>
void rerun::RecordingStream::log ( std::string_view  entity_path,
const Ts &...  archetypes_or_collections 
) const
inline

Logs one or more archetype and/or component batches.

This is the main entry point for logging data to rerun. It can be used to log anything that implements the AsComponents<T> trait.

When logging data, you must always provide an entity_path for identifying the data. Note that the path prefix "rerun/" is considered reserved for use by the Rerun SDK itself and should not be used for logging user data. This is where Rerun will log additional information such as warnings.

The most common way to log is with one of the rerun archetypes, all of which implement the AsComponents trait.

For example, to log two 3D points:

rec.log("my/point", rerun::Points3D({{0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}}));
Archetype: A 3D point cloud with positions and optional colors, radii, labels, etc.
Definition points3d.hpp:156

The log function can flexibly accept an arbitrary number of additional objects which will be merged into the first entity so long as they don't expose conflicting components, for instance:

// Log three points with arrows sticking out of them:
rec.log(
"my/points",
rerun::Points3D({{0.2f, 0.5f, 0.3f}, {0.9f, 1.2f, 0.1f}, {1.0f, 4.2f, 0.3f}})
.with_radii({0.1, 0.2, 0.3}),
rerun::Arrows3D::from_vectors({{0.3f, 2.1f, 0.2f}, {0.9f, -1.1, 2.3f}, {-0.4f, 0.5f, 2.9f}})
);

Any failures that may occur during serialization are handled with Error::handle.

Parameters
entity_pathPath to the entity in the space hierarchy.
archetypes_or_collectionsAny type for which the AsComponents<T> trait is implemented. This is the case for any archetype or std::vector/std::array/C-array of components implements.
See also
try_log, log_static, try_log_with_static

◆ log_static()

template<typename... Ts>
void rerun::RecordingStream::log_static ( std::string_view  entity_path,
const Ts &...  archetypes_or_collections 
) const
inline

Logs one or more archetype and/or component batches as static data.

Like log but logs the data as static: Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type.

Failures are handled with Error::handle.

Parameters
entity_pathPath to the entity in the space hierarchy.
archetypes_or_collectionsAny type for which the AsComponents<T> trait is implemented. This is the case for any archetype or std::vector/std::array/C-array of components implements.
See also
log, try_log_static, try_log_with_static

◆ try_log()

template<typename... Ts>
Error rerun::RecordingStream::try_log ( std::string_view  entity_path,
const Ts &...  archetypes_or_collections 
) const
inline

Logs one or more archetype and/or component batches.

See log for more information. Unlike log this method returns an error if an error occurs during serialization or logging.

Parameters
entity_pathPath to the entity in the space hierarchy.
archetypes_or_collectionsAny type for which the AsComponents<T> trait is implemented. This is the case for any archetype or std::vector/std::array/C-array of components implements.
See also
log, try_log_static, try_log_with_static

◆ try_log_static()

template<typename... Ts>
Error rerun::RecordingStream::try_log_static ( std::string_view  entity_path,
const Ts &...  archetypes_or_collections 
) const
inline

Logs one or more archetype and/or component batches as static data, returning an error.

See log/log_static for more information. Unlike log_static this method returns if an error occurs during serialization or logging.

Parameters
entity_pathPath to the entity in the space hierarchy.
archetypes_or_collectionsAny type for which the AsComponents<T> trait is implemented. This is the case for any archetype or std::vector/std::array/C-array of components implements.
Returns
An error if an error occurs during serialization or logging.
See also
log_static, try_log, try_log_with_static

◆ log_with_static()

template<typename... Ts>
void rerun::RecordingStream::log_with_static ( std::string_view  entity_path,
bool  static_,
const Ts &...  archetypes_or_collections 
) const
inline

Logs one or more archetype and/or component batches optionally static, returning an error.

See log/log_static for more information. Returns an error if an error occurs during serialization or logging.

Parameters
entity_pathPath to the entity in the space hierarchy.
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
archetypes_or_collectionsAny type for which the AsComponents<T> trait is implemented. This is the case for any archetype or std::vector/std::array/C-array of components implements.
See also
log, try_log, log_static, try_log_static

◆ try_log_with_static()

template<typename... Ts>
Error rerun::RecordingStream::try_log_with_static ( std::string_view  entity_path,
bool  static_,
const Ts &...  archetypes_or_collections 
) const
inline

Logs one or more archetype and/or component batches optionally static, returning an error.

See log/log_static for more information. Returns an error if an error occurs during serialization or logging.

Parameters
entity_pathPath to the entity in the space hierarchy.
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
archetypes_or_collectionsAny type for which the AsComponents<T> trait is implemented. This is the case for any archetype or std::vector/std::array/C-array of components implements.
Returns
An error if an error occurs during serialization or logging.
See also
log, try_log, log_static, try_log_static

◆ try_log_serialized_batches()

Error rerun::RecordingStream::try_log_serialized_batches ( std::string_view  entity_path,
bool  static_,
std::vector< ComponentBatch batches 
) const

Logs several serialized batches batches, returning an error on failure.

This is a more low-level API than log/`log_static\ and requires you to already serialize the data ahead of time.

Parameters
entity_pathPath to the entity in the space hierarchy.
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
batchesThe serialized batches to log.
See also
log, try_log, log_static, try_log_static, try_log_with_static

◆ try_log_data_row()

Error rerun::RecordingStream::try_log_data_row ( std::string_view  entity_path,
size_t  num_data_cells,
const ComponentBatch data_cells,
bool  inject_time 
) const

Bottom level API that logs raw data cells to the recording stream.

In order to use this you need to pass serialized Arrow data cells.

Parameters
entity_pathPath to the entity in the space hierarchy.
num_data_cellsNumber of data cells passed in.
data_cellsThe data cells to log.
inject_timeIf set to true, the row's timestamp data will be overridden using the recording streams internal clock.
See also
try_log_serialized_batches

◆ log_file_from_path()

void rerun::RecordingStream::log_file_from_path ( const std::filesystem::path &  filepath,
std::string_view  entity_path_prefix = std::string_view(),
bool  static_ = false 
) const
inline

Logs the file at the given path using all DataLoaders available.

A single path might be handled by more than one loader.

This method blocks until either at least one DataLoader starts streaming data in or all of them fail.

See https://www.rerun.io/docs/reference/data-loaders/overview for more information.

Parameters
filepathPath to the file to be logged.
entity_path_prefixWhat should the logged entity paths be prefixed with?
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
See also
try_log_file_from_path

◆ try_log_file_from_path()

Error rerun::RecordingStream::try_log_file_from_path ( const std::filesystem::path &  filepath,
std::string_view  entity_path_prefix = std::string_view(),
bool  static_ = false 
) const

Logs the file at the given path using all DataLoaders available.

A single path might be handled by more than one loader.

This method blocks until either at least one DataLoader starts streaming data in or all of them fail.

See https://www.rerun.io/docs/reference/data-loaders/overview for more information.

Parameters
filepathPath to the file to be logged.
entity_path_prefixWhat should the logged entity paths be prefixed with?
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
See also
log_file_from_path

◆ log_file_from_contents()

void rerun::RecordingStream::log_file_from_contents ( const std::filesystem::path &  filepath,
const std::byte *  contents,
size_t  contents_size,
std::string_view  entity_path_prefix = std::string_view(),
bool  static_ = false 
) const
inline

Logs the given contents using all DataLoaders available.

A single path might be handled by more than one loader.

This method blocks until either at least one DataLoader starts streaming data in or all of them fail.

See https://www.rerun.io/docs/reference/data-loaders/overview for more information.

Parameters
filepathPath to the file that the contents belong to.
contentsContents to be logged.
contents_sizeSize in bytes of the contents.
entity_path_prefixWhat should the logged entity paths be prefixed with?
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
See also
try_log_file_from_contents

◆ try_log_file_from_contents()

Error rerun::RecordingStream::try_log_file_from_contents ( const std::filesystem::path &  filepath,
const std::byte *  contents,
size_t  contents_size,
std::string_view  entity_path_prefix = std::string_view(),
bool  static_ = false 
) const

Logs the given contents using all DataLoaders available.

A single path might be handled by more than one loader.

This method blocks until either at least one DataLoader starts streaming data in or all of them fail.

See https://www.rerun.io/docs/reference/data-loaders/overview for more information.

Parameters
filepathPath to the file that the contents belong to.
contentsContents to be logged.
contents_sizeSize in bytes of the contents.
entity_path_prefixWhat should the logged entity paths be prefixed with?
static_If true, the logged components will be static. Static data has no time associated with it, exists on all timelines, and unconditionally shadows any temporal data of the same type. Otherwise, the data will be timestamped automatically with log_time and log_tick. Additional timelines set by set_time_sequence or set_time will also be included.
See also
log_file_from_contents

◆ send_columns() [1/2]

template<typename... Ts>
void rerun::RecordingStream::send_columns ( std::string_view  entity_path,
Collection< TimeColumn time_columns,
Collection< Ts >...  component_columns 
) const
inline

Directly log a columns of data to Rerun.

Unlike the regular log API, which is row-oriented, this API lets you submit the data in a columnar form. Each TimeColumn and Collection<T> represents a column of data that will be sent to Rerun. The lengths of all of these columns must match, equivalent to a single call to RecordingStream::log with a list of individual components.

Note that this API ignores any stateful time set on the log stream via the RecordingStream::set_time_* APIs. Furthermore, this will not inject the default timelines log_tick and log_time timeline columns.

Any failures that may occur during serialization are handled with Error::handle.

Parameters
entity_pathPath to the entity in the space hierarchy.
time_columnsThe time columns to send.
component_columnsThe columns of components to send. Each individual component in each collection will be associated with a single time value. I.e. this creates ComponentColumn objects consisting of single component runs.
See also
try_send_columns

◆ try_send_columns() [1/2]

template<typename... Ts>
Error rerun::RecordingStream::try_send_columns ( std::string_view  entity_path,
Collection< TimeColumn time_columns,
Collection< Ts >...  component_columns 
) const
inline

Directly log a columns of data to Rerun.

Unlike the regular log API, which is row-oriented, this API lets you submit the data in a columnar form. Each TimeColumn and Collection<T> represents a column of data that will be sent to Rerun. The lengths of all of these columns must match, equivalent to a single call to RecordingStream::log with a list of individual components.

Note that this API ignores any stateful time set on the log stream via the RecordingStream::set_time_* APIs. Furthermore, this will not inject the default timelines log_tick and log_time timeline columns.

Parameters
entity_pathPath to the entity in the space hierarchy.
time_columnsThe time columns to send.
component_columnsThe columns of components to send. Each individual component in each collection will be associated with a single time value. I.e. this creates ComponentColumn objects consisting of single component runs.
See also
send_columns

◆ send_columns() [2/2]

void rerun::RecordingStream::send_columns ( std::string_view  entity_path,
Collection< TimeColumn time_columns,
Collection< ComponentColumn component_columns 
) const
inline

Directly log a columns of data to Rerun.

Unlike the regular log API, which is row-oriented, this API lets you submit the data in a columnar form. Each TimeColumn and ComponentColumn represents a column of data that will be sent to Rerun. The lengths of all of these columns must match, and all data that shares the same index across the different columns will act as a single logical row, equivalent to a single call to RecordingStream::log.

Note that this API ignores any stateful time set on the log stream via the RecordingStream::set_time_* APIs. Furthermore, this will not inject the default timelines log_tick and log_time timeline columns.

Any failures that may occur during serialization are handled with Error::handle.

Parameters
entity_pathPath to the entity in the space hierarchy.
time_columnsThe time columns to send.
component_columnsThe columns of components to send.
See also
try_send_columns

◆ try_send_columns() [2/2]

Error rerun::RecordingStream::try_send_columns ( std::string_view  entity_path,
Collection< TimeColumn time_columns,
Collection< ComponentColumn component_columns 
) const

Directly log a columns of data to Rerun.

Unlike the regular log API, which is row-oriented, this API lets you submit the data in a columnar form. Each TimeColumn and ComponentColumn represents a column of data that will be sent to Rerun. The lengths of all of these columns must match, and all data that shares the same index across the different columns will act as a single logical row, equivalent to a single call to RecordingStream::log.

Note that this API ignores any stateful time set on the log stream via the RecordingStream::set_time_* APIs. Furthermore, this will not inject the default timelines log_tick and log_time timeline columns.

Parameters
entity_pathPath to the entity in the space hierarchy.
time_columnsThe time columns to send.
component_columnsThe columns of components to send.
See also
send_columns

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