CARLA
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
carla::multigpu::BoundedReader Class Reference

Reads the fields of one packet (or one record inside it) without ever consuming more than its declared size. More...

#include <frameDataCodec.h>

Public Member Functions

 BoundedReader (std::istream &in, uint32_t size)
 
bool Failed () const
 
template<typename T >
bool Read (T &value)
 
bool ReadBytes (void *out, uint32_t bytes)
 
template<typename F >
bool ReadFields (F &&read)
 Reads TLV fields until the reader is exhausted.
 
bool ReadFixedListHeader (uint16_t min_record_size, uint32_t &count, uint16_t &record_size)
 Header of a list of fixed-size records, checked against the bytes left.
 
template<typename F >
bool ReadRecord (uint32_t bytes, F &&read)
 Runs read(record) on the next bytes as a reader of their own, then skips what it left unread (a record that grew in a newer build).
 
template<typename F >
bool ReadSizedRecord (F &&read)
 Reads one [u32 record_size][record] entry of a variable-size list.
 
bool ReadVariableListCount (uint32_t &count)
 Count of a list of variable-size records, checked against the bytes left.
 
uint32_t Remaining () const
 
bool Skip (uint32_t bytes)
 

Private Member Functions

bool Fail ()
 

Private Attributes

bool _failed = false
 
std::istream & _in
 
uint32_t _remaining
 

Detailed Description

Reads the fields of one packet (or one record inside it) without ever consuming more than its declared size.

A read past the end fails, and a failed reader fails its stream, so the packet loop reports a short packet.

Payload layouts of the Multi-GPU packets:

Definition at line 200 of file frameDataCodec.h.

Constructor & Destructor Documentation

◆ BoundedReader()

carla::multigpu::BoundedReader::BoundedReader ( std::istream &  in,
uint32_t  size 
)
inline

Definition at line 203 of file frameDataCodec.h.

Member Function Documentation

◆ Fail()

bool carla::multigpu::BoundedReader::Fail ( )
inlineprivate

Definition at line 316 of file frameDataCodec.h.

References _failed, and _in.

Referenced by Read(), ReadBytes(), ReadFixedListHeader(), ReadRecord(), ReadVariableListCount(), and Skip().

◆ Failed()

bool carla::multigpu::BoundedReader::Failed ( ) const
inline

Definition at line 310 of file frameDataCodec.h.

References _failed.

Referenced by ReadRecord().

◆ Read()

template<typename T >
bool carla::multigpu::BoundedReader::Read ( T &  value)
inline

◆ ReadBytes()

bool carla::multigpu::BoundedReader::ReadBytes ( void *  out,
uint32_t  bytes 
)
inline

Definition at line 216 of file frameDataCodec.h.

References _failed, _in, _remaining, and Fail().

Referenced by carla::multigpu::WorldGlobals::Read().

◆ ReadFields()

template<typename F >
bool carla::multigpu::BoundedReader::ReadFields ( F &&  read)
inline

Reads TLV fields until the reader is exhausted.

read(kind, value) reads a known kind and returns true, or returns true without reading to skip an unknown one; false aborts the packet.

Definition at line 292 of file frameDataCodec.h.

References _failed, _remaining, Read(), and ReadRecord().

Referenced by carla::multigpu::MirroredVehicleParts::Read(), carla::multigpu::SensorStates::Read(), carla::multigpu::WorldObjects::Read(), and carla::multigpu::ActorAppearances::Read().

◆ ReadFixedListHeader()

bool carla::multigpu::BoundedReader::ReadFixedListHeader ( uint16_t  min_record_size,
uint32_t &  count,
uint16_t &  record_size 
)
inline

Header of a list of fixed-size records, checked against the bytes left.

Definition at line 256 of file frameDataCodec.h.

References _remaining, Fail(), and Read().

Referenced by carla::multigpu::MirroredPositions::Read(), carla::multigpu::SensorTicks::Read(), and carla::multigpu::MirroredVehicleParts::ReadList().

◆ ReadRecord()

template<typename F >
bool carla::multigpu::BoundedReader::ReadRecord ( uint32_t  bytes,
F &&  read 
)
inline

Runs read(record) on the next bytes as a reader of their own, then skips what it left unread (a record that grew in a newer build).

Definition at line 243 of file frameDataCodec.h.

References _failed, _in, _remaining, Fail(), Failed(), Remaining(), and Skip().

Referenced by carla::multigpu::MirroredPositions::Read(), carla::multigpu::SensorTicks::Read(), ReadFields(), carla::multigpu::MirroredVehicleParts::ReadList(), and ReadSizedRecord().

◆ ReadSizedRecord()

template<typename F >
bool carla::multigpu::BoundedReader::ReadSizedRecord ( F &&  read)
inline

Reads one [u32 record_size][record] entry of a variable-size list.

Definition at line 283 of file frameDataCodec.h.

References Read(), and ReadRecord().

Referenced by carla::multigpu::MirroredVehicleParts::Read(), carla::multigpu::SensorStates::Read(), and carla::multigpu::ActorAppearances::Read().

◆ ReadVariableListCount()

bool carla::multigpu::BoundedReader::ReadVariableListCount ( uint32_t &  count)
inline

Count of a list of variable-size records, checked against the bytes left.

Definition at line 270 of file frameDataCodec.h.

References _remaining, Fail(), and Read().

Referenced by carla::multigpu::MirroredVehicleParts::Read(), carla::multigpu::SensorStates::Read(), and carla::multigpu::ActorAppearances::Read().

◆ Remaining()

uint32_t carla::multigpu::BoundedReader::Remaining ( ) const
inline

Definition at line 306 of file frameDataCodec.h.

References _remaining.

Referenced by carla::multigpu::WorldObjects::Read(), and ReadRecord().

◆ Skip()

bool carla::multigpu::BoundedReader::Skip ( uint32_t  bytes)
inline

Definition at line 228 of file frameDataCodec.h.

References _failed, _in, _remaining, and Fail().

Referenced by ReadRecord().

Member Data Documentation

◆ _failed

bool carla::multigpu::BoundedReader::_failed = false
private

Definition at line 326 of file frameDataCodec.h.

Referenced by Fail(), Failed(), Read(), ReadBytes(), ReadFields(), ReadRecord(), and Skip().

◆ _in

std::istream& carla::multigpu::BoundedReader::_in
private

Definition at line 322 of file frameDataCodec.h.

Referenced by Fail(), Read(), ReadBytes(), ReadRecord(), and Skip().

◆ _remaining

uint32_t carla::multigpu::BoundedReader::_remaining
private

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