F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Fw::ExternalSerializeBuffer Class Reference

External serialize buffer with no copy semantics. More...

#include <Fw/Types/Serializable.hpp>

Inheritance diagram for Fw::ExternalSerializeBuffer:
Fw::LinearBufferBase Fw::SerialBufferBase Fw::ExternalSerializeBufferWithDataCopy Fw::ExternalSerializeBufferWithMemberCopy

Public Member Functions

 ExternalSerializeBuffer (U8 *buffPtr, Serializable::SizeType size)
 Construct with external buffer. More...
 
 ExternalSerializeBuffer ()
 Default constructor. More...
 
 ~ExternalSerializeBuffer ()
 Destructor. More...
 
void setExtBuffer (U8 *buffPtr, Serializable::SizeType size)
 Set the external buffer. More...
 
void clear ()
 Clear external buffer. More...
 
 ExternalSerializeBuffer (const ExternalSerializeBuffer &src)=delete
 Deleted copy constructor. More...
 
 DEPRECATED (Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead")
 
ExternalSerializeBufferoperator= (const LinearBufferBase &src)=delete
 Deleted copy assignment operator. More...
 
- Public Member Functions inherited from Fw::LinearBufferBase
virtual ~LinearBufferBase ()
 Destructor. More...
 
SerializeStatus serializeFrom (U8 val, Endianness mode=Endianness::BIG) override
 Serialize an 8-bit unsigned integer value. More...
 
SerializeStatus serializeFrom (I8 val, Endianness mode=Endianness::BIG) override
 Serialize an 8-bit signed integer value. More...
 
SerializeStatus serializeFrom (F32 val, Endianness mode=Endianness::BIG) override
 Serialize a 32-bit floating point value. More...
 
SerializeStatus serializeFrom (F64 val, Endianness mode=Endianness::BIG) override
 Serialize a 64-bit floating point value. More...
 
SerializeStatus serializeFrom (bool val, Endianness mode=Endianness::BIG) override
 Serialize a boolean value. More...
 
SerializeStatus serializeFrom (const void *val, Endianness mode=Endianness::BIG) override
 Serialize a pointer value. More...
 
SerializeStatus serializeFrom (const U8 *buff, FwSizeType length, Endianness endianMode=Endianness::BIG) override
 Serialize a data buffer. More...
 
SerializeStatus serializeFrom (const U8 *buff, FwSizeType length, Serialization::t lengthMode, Endianness endianMode=Endianness::BIG) override
 Serialize a byte buffer with optional length prefix. More...
 
SerializeStatus serializeFrom (const LinearBufferBase &val, Endianness mode=Endianness::BIG) override
 Serialize another LinearBufferBase object. More...
 
SerializeStatus serializeFrom (const Serializable &val, Endianness mode=Endianness::BIG) override
 Serialize a Serializable object. More...
 
SerializeStatus serializeSize (const FwSizeType size, Endianness mode=Endianness::BIG) override
 Serialize a size value. More...
 
SerializeStatus deserializeTo (U8 &val, Endianness mode=Endianness::BIG) override
 Deserialize an 8-bit unsigned integer value. More...
 
SerializeStatus deserializeTo (I8 &val, Endianness mode=Endianness::BIG) override
 Deserialize an 8-bit signed integer value. More...
 
SerializeStatus deserializeTo (F32 &val, Endianness mode=Endianness::BIG) override
 Deserialize a 32-bit floating point value. More...
 
SerializeStatus deserializeTo (F64 &val, Endianness mode=Endianness::BIG) override
 Deserialize a 64-bit floating point value. More...
 
SerializeStatus deserializeTo (bool &val, Endianness mode=Endianness::BIG) override
 Deserialize a boolean value. More...
 
SerializeStatus deserializeTo (void *&val, Endianness mode=Endianness::BIG) override
 Deserialize a pointer value. More...
 
SerializeStatus deserializeTo (U8 *buff, FwSizeType &length, Endianness endianMode=Endianness::BIG) override
 Deserialize a data buffer. More...
 
SerializeStatus deserializeTo (U8 *buff, FwSizeType &length, Serialization::t lengthMode, Endianness endianMode=Endianness::BIG) override
 Deserialize a byte buffer with optional length prefix. More...
 
SerializeStatus deserializeTo (Serializable &val, Endianness mode=Endianness::BIG) override
 Deserialize a Serializable object. More...
 
SerializeStatus deserializeTo (LinearBufferBase &val, Endianness mode=Endianness::BIG) override
 Deserialize a LinearBufferBase object. More...
 
SerializeStatus deserializeSize (FwSizeType &size, Endianness mode=Endianness::BIG) override
 Deserialize a size value. More...
 
 DEPRECATED (SerializeStatus serialize(const LinearBufferBase &val), "Use serializeFrom(const SerialBufferBase& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(LinearBufferBase &val), "Use deserializeTo(SerialBufferBase& val) instead")
 
void resetSer () override
 Reset serialization pointer to beginning of buffer. More...
 
void resetDeser () override
 Reset deserialization pointer to beginning of buffer. More...
 
SerializeStatus moveSerToOffset (FwSizeType offset) override
 Move serialization pointer to specified offset. More...
 
SerializeStatus moveDeserToOffset (FwSizeType offset) override
 Move deserialization pointer to specified offset. More...
 
SerializeStatus serializeSkip (FwSizeType numBytesToSkip) override
 Skip specified number of bytes during serialization. More...
 
SerializeStatus deserializeSkip (FwSizeType numBytesToSkip) override
 Skip specified number of bytes during deserialization. More...
 
 DEPRECATED (Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead")
 
 DEPRECATED (Serializable::SizeType getBuffLength() const, "Use getSize() instead")
 
 DEPRECATED (Serializable::SizeType getBuffLeft(), "Use getDeserializeSizeLeft() instead")
 
Serializable::SizeType getCapacity () const override
 Get buffer capacity. More...
 
Serializable::SizeType getSize () const override
 Get current buffer size. More...
 
Serializable::SizeType getDeserializeSizeLeft () const override
 Get remaining deserialization buffer size. More...
 
Serializable::SizeType getSerializeSizeLeft () const override
 Get remaining serialization buffer size. More...
 
U8getBuffAddr ()
 Get buffer address for data filling (non-const version) More...
 
const U8getBuffAddr () const
 Get buffer address for data reading (const version) More...
 
const U8getBuffAddrLeft () const
 Get address of remaining non-deserialized data. More...
 
U8getBuffAddrSer ()
 Get address of end of serialization (DANGEROUS!) More...
 
SerializeStatus setBuff (const U8 *src, Serializable::SizeType length) override
 Set buffer contents from external source. More...
 
SerializeStatus setBuffLen (Serializable::SizeType length) override
 Set buffer length manually. More...
 
SerializeStatus copyRaw (SerialBufferBase &dest, Serializable::SizeType size) override
 Copy raw bytes from this buffer to destination and advance source offset. More...
 
SerializeStatus copyRawOffset (SerialBufferBase &dest, Serializable::SizeType size) override
 Append raw bytes to destination from this buffer and advance source offset. More...
 
 DEPRECATED (SerializeStatus serialize(U8 val), "Use serializeFrom(U8 val) instead")
 
 DEPRECATED (SerializeStatus serialize(I8 val), "Use serializeFrom(I8 val) instead")
 
 DEPRECATED (SerializeStatus serialize(F32 val), "Use serializeFrom(F32 val) instead")
 
 DEPRECATED (SerializeStatus serialize(F64 val), "Use serializeFrom(F64 val) instead")
 
 DEPRECATED (SerializeStatus serialize(bool val), "Use serializeFrom(bool val) instead")
 
 DEPRECATED (SerializeStatus serialize(const void *val), "Use serializeFrom(const void* val) instead")
 
 DEPRECATED (SerializeStatus serialize(const U8 *buff, FwSizeType length, bool noLength), "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead")
 
 DEPRECATED (SerializeStatus serialize(const U8 *buff, FwSizeType length), "Use serializeFrom(const U8* buff, FwSizeType length) instead")
 
 DEPRECATED (SerializeStatus serialize(const U8 *buff, FwSizeType length, Serialization::t mode), "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead")
 
 DEPRECATED (SerializeStatus serialize(const Serializable &val), "Use serializeFrom(const Serializable& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(U8 &val), "Use deserializeTo(U8& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(I8 &val), "Use deserializeTo(I8& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(F32 &val), "Use deserializeTo(F32& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(F64 &val), "Use deserializeTo(F64& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(bool &val), "Use deserializeTo(bool& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(void *&val), "Use deserializeTo(void*& val) instead")
 
 DEPRECATED (SerializeStatus deserialize(U8 *buff, FwSizeType &length, bool noLength), "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead")
 
 DEPRECATED (SerializeStatus deserialize(U8 *buff, FwSizeType &length), "Use deserializeTo(U8* buff, FwSizeType& length) instead")
 
 DEPRECATED (SerializeStatus deserialize(U8 *buff, FwSizeType &length, Serialization::t mode), "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead")
 
 DEPRECATED (SerializeStatus deserialize(Serializable &val), "Use deserializeTo(Serializable& val) instead")
 
- Public Member Functions inherited from Fw::SerialBufferBase
virtual ~SerialBufferBase ()
 Virtual destructor. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Fw::LinearBufferBase
static constexpr Serializable::SizeType STATIC_SERIALIZED_SIZE (Serializable::SizeType maxSize)
 Get the static serialized size of a buffer This is the max size of the buffer data plus the size of the stored size. More...
 
- Protected Member Functions inherited from Fw::LinearBufferBase
LinearBufferBaseoperator= (const LinearBufferBase &src)
 Copy assignment operator. More...
 
 LinearBufferBase ()=delete
 
 LinearBufferBase (U8 *buffAddr, Serializable::SizeType capacity)
 Storage constructor. More...
 
 LinearBufferBase (const LinearBufferBase &src)
 Copy constructor (protected) More...
 
void copyFrom (const LinearBufferBase &src)
 Copy data from source buffer. More...
 
Serializable::SizeType getSerLoc () const
 
Serializable::SizeType getDeserLoc () const
 
void setSerLoc (Serializable::SizeType loc)
 
void setDeserLoc (Serializable::SizeType loc)
 
void setBuffAddrInternal (U8 *addr)
 
void setCapacityInternal (Serializable::SizeType capacity)
 

Detailed Description

External serialize buffer with no copy semantics.

This class provides a serialization buffer that uses an external buffer without copying data. It is designed for scenarios where you want to avoid data copying for performance reasons and are willing to manage the buffer lifetime manually.

Note
The external buffer must remain valid for the lifetime of the ExternalSerializeBuffer instance. The class does not take ownership of the buffer or copy its contents.

Definition at line 1418 of file Serializable.hpp.

Constructor & Destructor Documentation

◆ ExternalSerializeBuffer() [1/3]

Fw::ExternalSerializeBuffer::ExternalSerializeBuffer ( U8 buffPtr,
Serializable::SizeType  size 
)

Construct with external buffer.

Creates an ExternalSerializeBuffer instance that uses the provided external buffer. The buffer must remain valid for the lifetime of this instance.

Parameters
buffPtrPointer to the external buffer
sizeSize of the external buffer in bytes

Definition at line 827 of file Serializable.cpp.

◆ ExternalSerializeBuffer() [2/3]

Fw::ExternalSerializeBuffer::ExternalSerializeBuffer ( )

Default constructor.

Creates an ExternalSerializeBuffer instance without an external buffer. The buffer must be set later using setExtBuffer().

Definition at line 832 of file Serializable.cpp.

◆ ~ExternalSerializeBuffer()

Fw::ExternalSerializeBuffer::~ExternalSerializeBuffer ( )
inline

Destructor.

Destroys the ExternalSerializeBuffer instance. Note that this does not free the external buffer if one was set.

Definition at line 1440 of file Serializable.hpp.

◆ ExternalSerializeBuffer() [3/3]

Fw::ExternalSerializeBuffer::ExternalSerializeBuffer ( const ExternalSerializeBuffer src)
delete

Deleted copy constructor.

The copy constructor is deleted to prevent copying instances of ExternalSerializeBuffer, as this could lead to issues with buffer management.

Member Function Documentation

◆ clear()

void Fw::ExternalSerializeBuffer::clear ( )

Clear external buffer.

Clears the external buffer reference. After calling this method, the buffer is effectively empty and cannot be used for serialization or deserialization until a new buffer is set.

Definition at line 845 of file Serializable.cpp.

◆ DEPRECATED()

Fw::ExternalSerializeBuffer::DEPRECATED ( Serializable::SizeType getBuffCapacity()  const,
"Use getCapacity() instead"   
)

◆ operator=()

ExternalSerializeBuffer& Fw::ExternalSerializeBuffer::operator= ( const LinearBufferBase src)
delete

Deleted copy assignment operator.

The copy assignment operator is deleted to prevent copying instances of ExternalSerializeBuffer, as this could lead to issues with buffer management.

◆ setExtBuffer()

void Fw::ExternalSerializeBuffer::setExtBuffer ( U8 buffPtr,
Serializable::SizeType  size 
)

Set the external buffer.

Sets a new external buffer for this instance. This action also resets the serialization and deserialization pointers to the beginning of the new buffer.

Parameters
buffPtrPointer to the new external buffer
sizeSize of the new external buffer in bytes

Definition at line 836 of file Serializable.cpp.


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