MIRA
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
TypedChannelBufferBase< T > Class Template Reference

Base class for typed channel buffers. More...

#include <fw/ChannelBuffer.h>

Inheritance diagram for TypedChannelBufferBase< T >:
Inheritance graph
[legend]

Classes

struct  Slot
 Typed slot derived from ChannelBufferBase::Slot. More...
 

Public Types

typedef Stamped< T > ValueType
 

Public Member Functions

virtual ~TypedChannelBufferBase ()
 
void cloneParameters (const ChannelBufferBase &other)
 Copies the parameters of other to this. More...
 
void setStorageDuration (const Duration &storageDuration)
 Sets the desired storage duration (the history). More...
 
void setAutoIncreaseStorageDuration (bool increase)
 Sets whether the storage duration is automatically increased on read accesses. More...
 
void setMinSlots (std::size_t minSlots)
 Sets the desired min. More...
 
void setMaxSlots (std::size_t maxSlots)
 Sets the max. More...
 
std::size_t getSize () const
 Returns the size of the buffer. More...
 
std::size_t getMaxSlots () const
 Returns the size of the max number of slots. More...
 
std::size_t getMinSlots () const
 Returns the size of the min number of slots. More...
 
Duration getStorageDuration () const
 Returns the storage duration. More...
 
bool isAutoIncreasingStorageDuration () const
 Returns whether the storage duration is automatically increased. More...
 
TypeMetaPtr getTypeMeta () const
 Returns the meta information for the slots type. More...
 
void setTypeMeta (TypeMetaPtr meta)
 Sets the meta information of the slot's type. More...
 
SlotrequestWriteSlot ()
 Returns a slot for writing, where the shared_mutex is already write locked. More...
 
bool finishWriteSlot (Slot *n, bool *dropped=NULL)
 Adds written slot into buffer at the right time position. More...
 
void discardWriteSlot (Slot *n)
 Discards written slot. More...
 
SlotreadNewestSlot ()
 Returns the newest(latest) slot for reading, where the shared_mutex is already read locked. More...
 
SlotreadSlotAtTime (const Time &timestamp, SlotQueryMode mode)
 Returns a slot at the given time according to mode. More...
 
void readInterval (const Time &timestamp, std::size_t nrSlots, std::size_t olderSlots, std::size_t newerSlots, IntervalFillMode fillMode, std::list< Slot *> &oSlots)
 Reads an interval of slots. More...
 
void readInterval (const Time &from, const Time &to, std::list< Slot *> &oSlots)
 Reads an interval of slots. More...
 
template<typename TargetType >
ChannelBufferBasepromote ()
 Promotes this buffer to the specified target type (if required). More...
 
void dbgDump (const std::string &prefix, bool brief=true)
 
void dbgCheckIntegrity ()
 
Implementation of ChannelBufferBase
virtual int getTypeId () const
 Returns typeid of the slot values, the allocator creates. More...
 
virtual bool isTyped () const
 Returns true, if the channel is typed and false, if it is untyped. More...
 
virtual bool isPolymorphic () const
 Returns true if the channel has a polymorphic type. More...
 
virtual Typename getTypename () const
 Returns the Typename of the slot values, in contrast to getTypeId() the Typename is portable and unique between different processes and operating systems. More...
 
virtual void setTypename (const Typename &name)
 Sets the Typename of the slot values. More...
 
virtual TypeMetaPtr createTypeMeta (ChannelBufferBase::Slot *s, MetaTypeDatabase &ioDB)
 Creates meta information for data in slot and stores all meta information in the given database. More...
 
virtual void fixateType ()
 Calling this method will fix the type of the ChannelBuffer. More...
 
virtual ChannelBufferBase::SlotallocateSlot ()
 Creates and returns a new slot. More...
 
virtual void freeSlot (ChannelBufferBase::Slot *s)
 Called to destroy the slot and free the used memory. More...
 
virtual StampedHeadergetStampedHeader (ChannelBufferBase::Slot *s)
 Returns a reference to the stamped header information. More...
 
virtual const Buffer< uint8 > & readSerializedValue (ChannelBufferBase::Slot *s)
 Returns a buffer containing the binary serialized data of the slot. More...
 
virtual const Buffer< uint8 > & readSerializedValue (ChannelBufferBase::Slot *s, uint8 formatVersion, bool orLower)
 Returns a buffer containing the binary serialized data of the slot. More...
 
virtual Buffer< uint8 > readSerializedValue (ChannelBufferBase::Slot *s, std::list< BinarySerializerCodecPtr > &codecs)
 Returns a buffer containing the binary serialized data of the slot. More...
 
virtual Buffer< uint8 > readSerializedValue (ChannelBufferBase::Slot *s, std::list< BinarySerializerCodecPtr > &codecs, uint8 formatVersion, bool orLower)
 Returns a buffer containing the binary serialized data of the slot. More...
 
virtual void writeSerializedValue (ChannelBufferBase::Slot *s, Buffer< uint8 > data)
 Write the given buffer (that contains binary serialized data WITHOUT the StampedHeader) to the slot. More...
 
virtual void readJSON (ChannelBufferBase::Slot *s, JSONValue &oValue)
 Reads data of that slot as json representation using a default-instantiated JSONSerializer. More...
 
virtual void readJSON (ChannelBufferBase::Slot *s, JSONValue &oValue, JSONSerializer &serializer)
 Reads data of that slot as json representation using the provided JSONSerializer. More...
 
virtual void writeJSON (ChannelBufferBase::Slot *s, const JSONValue &value)
 Writes data in json representation into the slot, using a default-instantiated JSONDeserializer. More...
 
virtual void writeJSON (ChannelBufferBase::Slot *s, JSONDeserializer &deserializer)
 Writes data from an initialized json deserializer into the slot. More...
 

Static Public Member Functions

static SlotcastSlot (ChannelBufferBase::Slot *s)
 Cast an abstract slot to a typed slot. More...
 
static void dbgCheckListIntegrity (const ListItem &list)
 

Protected Member Functions

void clear ()
 Deletes all slots in all lists and therefore clears the whole buffer. More...
 

Detailed Description

template<typename T>
class mira::TypedChannelBufferBase< T >

Base class for typed channel buffers.

Member Typedef Documentation

◆ ValueType

typedef Stamped<T> ValueType

Constructor & Destructor Documentation

◆ ~TypedChannelBufferBase()

virtual ~TypedChannelBufferBase ( )
inlinevirtual

Member Function Documentation

◆ castSlot()

static Slot* castSlot ( ChannelBufferBase::Slot s)
inlinestatic

Cast an abstract slot to a typed slot.

◆ getTypeId()

virtual int getTypeId ( ) const
inlinevirtual

Returns typeid of the slot values, the allocator creates.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ isTyped()

virtual bool isTyped ( ) const
inlinevirtual

Returns true, if the channel is typed and false, if it is untyped.

Implements ChannelBufferBase.

◆ isPolymorphic()

virtual bool isPolymorphic ( ) const
inlinevirtual

Returns true if the channel has a polymorphic type.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ getTypename()

virtual Typename getTypename ( ) const
inlinevirtual

Returns the Typename of the slot values, in contrast to getTypeId() the Typename is portable and unique between different processes and operating systems.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ setTypename()

virtual void setTypename ( const Typename name)
inlinevirtual

Sets the Typename of the slot values.

Implements ChannelBufferBase.

◆ createTypeMeta()

virtual TypeMetaPtr createTypeMeta ( ChannelBufferBase::Slot s,
MetaTypeDatabase ioDB 
)
inlinevirtual

Creates meta information for data in slot and stores all meta information in the given database.

Implements ChannelBufferBase.

◆ fixateType()

virtual void fixateType ( )
inlinevirtual

Calling this method will fix the type of the ChannelBuffer.

This method currently is used by the polymorphic buffer only. It will set the type of the buffer to the type that the buffer currently has, hence it fixates the type of the buffer and the buffer can not be promoted to any other type of a derived class.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ allocateSlot()

virtual ChannelBufferBase::Slot* allocateSlot ( )
inlinevirtual

Creates and returns a new slot.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ freeSlot()

virtual void freeSlot ( ChannelBufferBase::Slot s)
inlinevirtual

Called to destroy the slot and free the used memory.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ getStampedHeader()

virtual StampedHeader& getStampedHeader ( ChannelBufferBase::Slot s)
inlinevirtual

Returns a reference to the stamped header information.

Implements ChannelBufferBase.

◆ readSerializedValue() [1/4]

virtual const Buffer<uint8>& readSerializedValue ( ChannelBufferBase::Slot s)
inlinevirtual

Returns a buffer containing the binary serialized data of the slot.

The serialized data does NOT contain any StampedHeader information.

Implements ChannelBufferBase.

◆ readSerializedValue() [2/4]

virtual const Buffer<uint8>& readSerializedValue ( ChannelBufferBase::Slot s,
uint8  formatVersion,
bool  orLower 
)
inlinevirtual

Returns a buffer containing the binary serialized data of the slot.

The serialized data does NOT contain any StampedHeader information.

Parameters
formatVersionThe binary format version requested

Implements ChannelBufferBase.

◆ readSerializedValue() [3/4]

virtual Buffer<uint8> readSerializedValue ( ChannelBufferBase::Slot s,
std::list< BinarySerializerCodecPtr > &  codecs 
)
inlinevirtual

Returns a buffer containing the binary serialized data of the slot.

The serialized data does NOT contain any StampedHeader information. For serialization it will use the specified codecs.

Implements ChannelBufferBase.

◆ readSerializedValue() [4/4]

virtual Buffer<uint8> readSerializedValue ( ChannelBufferBase::Slot s,
std::list< BinarySerializerCodecPtr > &  codecs,
uint8  formatVersion,
bool  orLower 
)
inlinevirtual

Returns a buffer containing the binary serialized data of the slot.

The serialized data does NOT contain any StampedHeader information. For serialization it will use the specified codecs.

Parameters
formatVersionThe binary format version requested

Implements ChannelBufferBase.

◆ writeSerializedValue()

virtual void writeSerializedValue ( ChannelBufferBase::Slot s,
Buffer< uint8 >  data 
)
inlinevirtual

Write the given buffer (that contains binary serialized data WITHOUT the StampedHeader) to the slot.

Implements ChannelBufferBase.

Reimplemented in PolymorphicChannelBuffer.

◆ readJSON() [1/2]

virtual void readJSON ( ChannelBufferBase::Slot s,
JSONValue oValue 
)
inlinevirtual

Reads data of that slot as json representation using a default-instantiated JSONSerializer.

Exceptions
XNotImplementedif not supported by the channel
Note
This method is only supported by typed channels or untyped channels with valid metadata.

Implements ChannelBufferBase.

◆ readJSON() [2/2]

virtual void readJSON ( ChannelBufferBase::Slot s,
JSONValue oValue,
JSONSerializer serializer 
)
inlinevirtual

Reads data of that slot as json representation using the provided JSONSerializer.

Exceptions
XNotImplementedif not supported by the channel
Note
This method is only supported by typed channels or untyped channels with valid metadata.

Implements ChannelBufferBase.

◆ writeJSON() [1/2]

virtual void writeJSON ( ChannelBufferBase::Slot s,
const JSONValue value 
)
inlinevirtual

Writes data in json representation into the slot, using a default-instantiated JSONDeserializer.

Exceptions
XNotImplementedif not supported by the channel
Note
That this method is only supported by typed channels or untyped channels with valid metadata.

Implements ChannelBufferBase.

◆ writeJSON() [2/2]

virtual void writeJSON ( ChannelBufferBase::Slot s,
JSONDeserializer value 
)
inlinevirtual

Writes data from an initialized json deserializer into the slot.

Exceptions
XNotImplementedif not supported by the channel
Note
That this method is only supported by typed channels or untyped channels with valid metadata.

Implements ChannelBufferBase.

◆ cloneParameters()

void cloneParameters ( const ChannelBufferBase other)
inlineinherited

Copies the parameters of other to this.

◆ setStorageDuration()

void setStorageDuration ( const Duration storageDuration)
inherited

Sets the desired storage duration (the history).

This method can increase the duration only. If the specified duration is smaller than a previous set duration the call will be ignored.

Note
Duration can only be increased until the maximum number of slots is reached. Use setMaxSlots() to increase maximum number of slots.

◆ setAutoIncreaseStorageDuration()

void setAutoIncreaseStorageDuration ( bool  increase)
inherited

Sets whether the storage duration is automatically increased on read accesses.

If true, any read access specifying a timestamp will automatically increase the storage duration to the time difference between the timestamp and the most recent data (trying to ensure data is kept long enough for further such requests). The default is true.

◆ setMinSlots()

void setMinSlots ( std::size_t  minSlots)
inherited

Sets the desired min.

number of slots for storing the history of a channel. This method can increase the min. number of slots only. Instead of specifying the min. number of slots you can also specify the desired storage duration using the setStorageDuration() method.

Note
The desired number of slots can be increased until the maximum number of slots is reached. Use setMaxSlots() to increase maximum number of slots.

◆ setMaxSlots()

void setMaxSlots ( std::size_t  maxSlots)
inherited

Sets the max.

number of slots that are used for storing the history of a channel. maxSlots must at least be 1. The default is 100.

Note
There will only be as many slots as needed depending on the number of publishers and subscribers. The number of slots will also grow (history) if a storage duration is specified via setStorageDuration()

◆ getSize()

std::size_t getSize ( ) const
inherited

Returns the size of the buffer.

◆ getMaxSlots()

std::size_t getMaxSlots ( ) const
inherited

Returns the size of the max number of slots.

◆ getMinSlots()

std::size_t getMinSlots ( ) const
inherited

Returns the size of the min number of slots.

◆ getStorageDuration()

Duration getStorageDuration ( ) const
inherited

Returns the storage duration.

◆ isAutoIncreasingStorageDuration()

bool isAutoIncreasingStorageDuration ( ) const
inherited

Returns whether the storage duration is automatically increased.

◆ getTypeMeta()

TypeMetaPtr getTypeMeta ( ) const
inlineinherited

Returns the meta information for the slots type.

◆ setTypeMeta()

void setTypeMeta ( TypeMetaPtr  meta)
inlineinherited

Sets the meta information of the slot's type.

◆ requestWriteSlot()

Slot* requestWriteSlot ( )
inherited

Returns a slot for writing, where the shared_mutex is already write locked.

Implementation details:

Cycle of a slot:
newly created (requestWriteSlot, Step ..)
|
v
writing list
|finish |
v |discard
ring buffer |
|read |
v v
mWaitingOrFree
|
v

◆ finishWriteSlot()

bool finishWriteSlot ( Slot n,
bool *  dropped = NULL 
)
inherited

Adds written slot into buffer at the right time position.

Returns true, if the new Slot value is now the newest value in the buffer. dropped is set to true, if a slot with the same timestamp already exists and hence the slot was discarded.

Note
The lock of the slot is unlocked.

◆ discardWriteSlot()

void discardWriteSlot ( Slot n)
inherited

Discards written slot.

Note
The lock of the slot is unlocked.

◆ readNewestSlot()

Slot* readNewestSlot ( )
inherited

Returns the newest(latest) slot for reading, where the shared_mutex is already read locked.

Returns NULL if no slot for reading is available.

◆ readSlotAtTime()

Slot* readSlotAtTime ( const Time timestamp,
SlotQueryMode  mode 
)
inherited

Returns a slot at the given time according to mode.

Returns NULL if no slot exists. See mira::Channel::read() for more informations. Increases storage duration (history) automatically to serve future requests.

◆ readInterval() [1/2]

void readInterval ( const Time timestamp,
std::size_t  nrSlots,
std::size_t  olderSlots,
std::size_t  newerSlots,
IntervalFillMode  fillMode,
std::list< Slot *> &  oSlots 
)
inherited

Reads an interval of slots.

See mira::Channel::readInterval for more informations. Increases storage duration (history) automatically to serve future requests.

◆ readInterval() [2/2]

void readInterval ( const Time from,
const Time to,
std::list< Slot *> &  oSlots 
)
inherited

Reads an interval of slots.

See mira::Channel::readInterval for more informations. Increases storage duration (history) automatically to serve future requests.

◆ promote()

ChannelBufferBase * promote ( )
inherited

Promotes this buffer to the specified target type (if required).

This method may create and return a new ChannelBuffer of the desired TargetType. In this case the original buffer should be destroyed by the caller. In some other cases when no new buffer needs to be created the method returns a pointer to this buffer itself.

◆ clear()

void clear ( )
protectedinherited

Deletes all slots in all lists and therefore clears the whole buffer.

◆ dbgDump()

void dbgDump ( const std::string &  prefix,
bool  brief = true 
)
inherited

◆ dbgCheckListIntegrity()

static void dbgCheckListIntegrity ( const ListItem list)
staticinherited

◆ dbgCheckIntegrity()

void dbgCheckIntegrity ( )
inherited

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