CARLA
Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
FAsyncDataStreamTmpl< T > Class Template Reference

A streaming channel for sending sensor data to clients, supports sending data asynchronously. More...

#include <AsyncDataStream.h>

+ Collaboration diagram for FAsyncDataStreamTmpl< T >:

Public Types

using StreamType = T
 

Public Member Functions

 FAsyncDataStreamTmpl (FAsyncDataStreamTmpl &&)=default
 
double GetSensorTimestamp ()
 return the timestamp of the sensor More...
 
FTransform GetSensorTransform ()
 return the transform of the sensor More...
 
uint64_t GetSensorType ()
 return the type of sensor of this stream More...
 
auto GetToken () const
 Return the token that allows subscribing to this stream. More...
 
carla::Buffer PopBufferFromPool ()
 Pop a Buffer from the pool. More...
 
template<typename SensorT , typename... ArgsT>
void Send (SensorT &Sensor, ArgsT &&... Args)
 Send some data down the stream. More...
 
template<typename SensorT , typename... ArgsT>
void SerializeAndSend (SensorT &Sensor, ArgsT &&... Args)
 
void SetFrameNumber (uint64_t FrameNumber)
 allow to change the frame number of the header More...
 

Private Member Functions

template<typename SensorT >
 FAsyncDataStreamTmpl (const SensorT &InSensor, double Timestamp, StreamType InStream)
 

Private Attributes

carla::Buffer Header
 
StreamType Stream
 

Friends

class FDataStreamTmpl< T >
 

Detailed Description

template<typename T>
class FAsyncDataStreamTmpl< T >

A streaming channel for sending sensor data to clients, supports sending data asynchronously.

Data sent by the "Send" functions is passed to the serializer registered with the sensor at carla::sensor:SensorRegistry before being sent down the stream.

Warning
This is a single-use object, a new one needs to be created for each new message.

FAsyncDataStream also has a pool of carla::Buffer that allows reusing the allocated memory, use it whenever possible.

Definition at line 35 of file AsyncDataStream.h.

Member Typedef Documentation

◆ StreamType

template<typename T >
using FAsyncDataStreamTmpl< T >::StreamType = T

Definition at line 39 of file AsyncDataStream.h.

Constructor & Destructor Documentation

◆ FAsyncDataStreamTmpl() [1/2]

template<typename T >
FAsyncDataStreamTmpl< T >::FAsyncDataStreamTmpl ( FAsyncDataStreamTmpl< T > &&  )
default

◆ FAsyncDataStreamTmpl() [2/2]

template<typename T >
template<typename SensorT >
FAsyncDataStreamTmpl< T >::FAsyncDataStreamTmpl ( const SensorT &  InSensor,
double  Timestamp,
StreamType  InStream 
)
inlineexplicitprivate
Precondition
This functions needs to be called in the game-thread.

Definition at line 18 of file AsyncDataStreamImpl.h.

References FCarlaEngine::GetFrameCounter().

+ Here is the call graph for this function:

Member Function Documentation

◆ GetSensorTimestamp()

template<typename T >
double FAsyncDataStreamTmpl< T >::GetSensorTimestamp ( )
inline

return the timestamp of the sensor

Definition at line 104 of file AsyncDataStream.h.

References carla::Buffer::data(), FAsyncDataStreamTmpl< T >::Header, and carla::sensor::s11n::SensorHeaderSerializer::Header::timestamp.

+ Here is the call graph for this function:

◆ GetSensorTransform()

template<typename T >
FTransform FAsyncDataStreamTmpl< T >::GetSensorTransform ( )
inline

return the transform of the sensor

Definition at line 92 of file AsyncDataStream.h.

References carla::Buffer::data(), FAsyncDataStreamTmpl< T >::Header, and carla::sensor::s11n::SensorHeaderSerializer::Header::sensor_transform.

+ Here is the call graph for this function:

◆ GetSensorType()

template<typename T >
uint64_t FAsyncDataStreamTmpl< T >::GetSensorType ( )
inline

return the type of sensor of this stream

Definition at line 80 of file AsyncDataStream.h.

References carla::Buffer::data(), FAsyncDataStreamTmpl< T >::Header, and carla::sensor::s11n::SensorHeaderSerializer::Header::sensor_type.

+ Here is the call graph for this function:

◆ GetToken()

template<typename T >
auto FAsyncDataStreamTmpl< T >::GetToken ( ) const
inline

Return the token that allows subscribing to this stream.

Definition at line 44 of file AsyncDataStream.h.

References FAsyncDataStreamTmpl< T >::Stream.

◆ PopBufferFromPool()

template<typename T >
carla::Buffer FAsyncDataStreamTmpl< T >::PopBufferFromPool ( )
inline

Pop a Buffer from the pool.

Buffers in the pool can reuse the memory allocated by previous messages, significantly improving performance for big messages.

Definition at line 52 of file AsyncDataStream.h.

References FAsyncDataStreamTmpl< T >::Send(), FAsyncDataStreamTmpl< T >::SerializeAndSend(), and FAsyncDataStreamTmpl< T >::Stream.

+ Here is the call graph for this function:

◆ Send()

template<typename T >
template<typename SensorT , typename... ArgsT>
void FAsyncDataStreamTmpl< T >::Send ( SensorT &  Sensor,
ArgsT &&...  Args 
)
inline

Send some data down the stream.

Definition at line 160 of file AsyncDataStream.h.

References carla::BufferView::CreateFrom(), FAsyncDataStreamTmpl< T >::Header, and FAsyncDataStreamTmpl< T >::Stream.

Referenced by FAsyncDataStreamTmpl< T >::PopBufferFromPool().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SerializeAndSend()

template<typename T >
template<typename SensorT , typename... ArgsT>
void FAsyncDataStreamTmpl< T >::SerializeAndSend ( SensorT &  Sensor,
ArgsT &&...  Args 
)
inline

Definition at line 145 of file AsyncDataStream.h.

References carla::BufferView::CreateFrom(), FAsyncDataStreamTmpl< T >::Header, carla::sensor::CompositeSerializer< Items >::Serialize(), and FAsyncDataStreamTmpl< T >::Stream.

Referenced by ACollisionSensor::OnCollisionEvent(), and FAsyncDataStreamTmpl< T >::PopBufferFromPool().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetFrameNumber()

template<typename T >
void FAsyncDataStreamTmpl< T >::SetFrameNumber ( uint64_t  FrameNumber)
inline

allow to change the frame number of the header

Definition at line 65 of file AsyncDataStream.h.

References carla::Buffer::data(), carla::sensor::s11n::SensorHeaderSerializer::Header::frame, FAsyncDataStreamTmpl< T >::Header, carla::log_info(), and carla::sensor::s11n::SensorHeaderSerializer::Header::sensor_type.

+ Here is the call graph for this function:

Friends And Related Function Documentation

◆ FDataStreamTmpl< T >

template<typename T >
friend class FDataStreamTmpl< T >
friend

Definition at line 117 of file AsyncDataStream.h.

Member Data Documentation

◆ Header

template<typename T >
carla::Buffer FAsyncDataStreamTmpl< T >::Header
private

◆ Stream

template<typename T >
StreamType FAsyncDataStreamTmpl< T >::Stream
private

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