RADLib
RADical C++ application framework
RADCore::RADBuffer Class Reference

In-memory RADIODevice backed by a byte vector. More...

#include <RADCore.h>

+ Inheritance diagram for RADCore::RADBuffer:
+ Collaboration diagram for RADCore::RADBuffer:

Public Member Functions

 RADBuffer ()
 Creates an empty buffer. More...
 
 RADBuffer (std::vector< uint8_t > data)
 Creates a buffer initialized with data. More...
 
 ~RADBuffer () override
 Destroys the buffer. More...
 
bool open (OpenMode mode) override
 Opens the memory buffer. More...
 
void close () override
 Closes the memory buffer. More...
 
bool isOpen () const override
 Returns true when open. More...
 
ssize_t readData (void *buffer, size_t maxBytes) override
 Reads raw bytes from the current position. More...
 
ssize_t writeData (const void *data, size_t size) override
 Writes raw bytes at the current position. More...
 
bool seek (size_t position)
 Moves the current read/write position. More...
 
size_t position () const
 Returns current read/write position. More...
 
size_t size () const
 Returns current buffer size in bytes. More...
 
const std::vector< uint8_t > & data () const
 Returns the underlying byte vector. More...
 
void clear ()
 Clears buffer contents and resets position. More...
 
- Public Member Functions inherited from RADCore::RADIODevice
virtual ~RADIODevice ()=default
 Destroys the IO device. More...
 
std::vector< uint8_t > read (size_t maxBytes)
 Reads up to maxBytes into a byte vector. More...
 
std::vector< uint8_t > readAll (size_t chunkSize=8192)
 Reads all available data in chunks. More...
 
ssize_t write (const std::vector< uint8_t > &data)
 Writes a byte vector. More...
 
ssize_t write (const std::string &text)
 Writes string bytes. More...
 
- Public Member Functions inherited from RADCore::RADObject
 RADObject ()
 Creates a RADObject bound to the current thread. More...
 
virtual ~RADObject ()
 Disconnects tracked event links and releases lifetime token. More...
 
void registerLink (const ConnectionRecord &record)
 Registers a connection for cleanup when this object is destroyed. More...
 
std::thread::id threadId () const
 Returns the thread id this object is currently associated with. More...
 
EventLoopassociatedEventLoop () const
 Returns the associated event loop, if any. More...
 
ThreadAffinity threadAffinity () const
 Returns both thread id and associated loop atomically. More...
 
std::weak_ptr< void > lifetimeToken () const
 Returns a weak token used to drop queued callbacks after destruction. More...
 
void moveToThread (std::thread::id tId, EventLoop *loop=nullptr)
 Moves the object's affinity to tId and optional loop. More...
 

Additional Inherited Members

- Public Attributes inherited from RADCore::RADIODevice
RADCore::Event< void() > readyRead
 Raised when data is available to read. More...
 
RADCore::Event< void(size_t) > bytesWritten
 Raised after bytes are written. More...
 
RADCore::Event< void(std::string) > errorOccurred
 Raised when an IO error occurs. More...
 

Detailed Description

In-memory RADIODevice backed by a byte vector.

Constructor & Destructor Documentation

◆ RADBuffer() [1/2]

RADCore::RADBuffer::RADBuffer ( )

Creates an empty buffer.

◆ RADBuffer() [2/2]

RADCore::RADBuffer::RADBuffer ( std::vector< uint8_t >  data)
explicit

Creates a buffer initialized with data.

◆ ~RADBuffer()

RADCore::RADBuffer::~RADBuffer ( )
override

Destroys the buffer.

Member Function Documentation

◆ clear()

void RADCore::RADBuffer::clear ( )

Clears buffer contents and resets position.

◆ close()

void RADCore::RADBuffer::close ( )
overridevirtual

Closes the memory buffer.

Implements RADCore::RADIODevice.

◆ data()

const std::vector<uint8_t>& RADCore::RADBuffer::data ( ) const

Returns the underlying byte vector.

◆ isOpen()

bool RADCore::RADBuffer::isOpen ( ) const
overridevirtual

Returns true when open.

Implements RADCore::RADIODevice.

◆ open()

bool RADCore::RADBuffer::open ( OpenMode  mode)
overridevirtual

Opens the memory buffer.

Implements RADCore::RADIODevice.

◆ position()

size_t RADCore::RADBuffer::position ( ) const

Returns current read/write position.

◆ readData()

ssize_t RADCore::RADBuffer::readData ( void *  buffer,
size_t  maxBytes 
)
overridevirtual

Reads raw bytes from the current position.

Implements RADCore::RADIODevice.

◆ seek()

bool RADCore::RADBuffer::seek ( size_t  position)

Moves the current read/write position.

◆ size()

size_t RADCore::RADBuffer::size ( ) const

Returns current buffer size in bytes.

◆ writeData()

ssize_t RADCore::RADBuffer::writeData ( const void *  data,
size_t  size 
)
overridevirtual

Writes raw bytes at the current position.

Implements RADCore::RADIODevice.


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