# BufferStream.hpp

This File On Github
Ask A Question

API: latest
module: oatpp
#include "oatpp/core/data/stream/BufferStream.hpp"

# BufferOutputStream

BufferOutputStream

namespace oatpp { namespace data { namespace stream { 
  class BufferOutputStream : public ConsistentOutputStream {}
}}}

# Methods

Return Type Name Summary
[none] BufferOutputStream Constructor.
[none] ~BufferOutputStream Virtual destructor.
v_io_size write Write count of bytes to stream.
void setOutputStreamIOMode Set stream I/O mode.
IOMode getOutputStreamIOMode Get stream I/O mode.
Context& getOutputStreamContext Get stream context.
void reserveBytesUpfront Reserve bytes for future writes.
p_char8 getData Get pointer to data.
v_buff_size getCapacity Get current capacity.
v_buff_size getCurrentPosition Get current data write position.
void setCurrentPosition Set current data write position.
void reset Reset stream buffer and its capacity. Also reset write position.
oatpp::String toString Copy data to oatpp::String.
oatpp::String getSubstring Create oatpp::String from part of buffer.
oatpp::v_io_size flushToStream Write all bytes from buffer to stream.
oatpp::async::CoroutineStarter flushToStreamAsync Write all bytes from buffer to stream in async manner.

# BufferOutputStream::BufferOutputStream

Constructor.

  • @param growBytes
  • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.

BufferOutputStream(v_buff_size initialCapacity = 2048, const std::shared_ptr<void>& captureData = nullptr)

# BufferOutputStream::~BufferOutputStream

Virtual destructor.

~BufferOutputStream()

# BufferOutputStream::write

Write count of bytes to stream.

  • @param data - data to write.
  • @param count - number of bytes to write.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes written. oatpp::v_io_size.

v_io_size write(const void *data, v_buff_size count, async::Action& action) override

# BufferOutputStream::setOutputStreamIOMode

Set stream I/O mode.

  • @throws

void setOutputStreamIOMode(IOMode ioMode) override

# BufferOutputStream::getOutputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getOutputStreamIOMode() override

# BufferOutputStream::getOutputStreamContext

Get stream context.

  • @return

Context& getOutputStreamContext() override

# BufferOutputStream::reserveBytesUpfront

Reserve bytes for future writes.

void reserveBytesUpfront(v_buff_size count)

# BufferOutputStream::getData

Get pointer to data.

  • @return - pointer to data.

p_char8 getData()

# BufferOutputStream::getCapacity

Get current capacity. Capacity may change.

  • @return

v_buff_size getCapacity()

# BufferOutputStream::getCurrentPosition

Get current data write position.

  • @return - current data write position.

v_buff_size getCurrentPosition()

# BufferOutputStream::setCurrentPosition

Set current data write position.

  • @param position - data write position.

void setCurrentPosition(v_buff_size position)

# BufferOutputStream::reset

Reset stream buffer and its capacity. Also reset write position.

  • @param initialCapacity

void reset(v_buff_size initialCapacity = 2048)

# BufferOutputStream::toString

Copy data to oatpp::String.

  • @return

oatpp::String toString()

# BufferOutputStream::getSubstring

Create oatpp::String from part of buffer.

  • @param pos - starting position in buffer.
  • @param count - size of bytes to write to substring.
  • @return - oatpp::String

oatpp::String getSubstring(v_buff_size pos, v_buff_size count)

# BufferOutputStream::flushToStream

Write all bytes from buffer to stream.

  • @param stream - stream to flush all data to.
  • @return - actual amount of bytes flushed.

oatpp::v_io_size flushToStream(OutputStream* stream)

# BufferOutputStream::flushToStreamAsync

Write all bytes from buffer to stream in async manner.

static oatpp::async::CoroutineStarter flushToStreamAsync(const std::shared_ptr<BufferOutputStream>& _this, const std::shared_ptr<OutputStream>& stream)

# BufferInputStream

BufferInputStream

namespace oatpp { namespace data { namespace stream { 
  class BufferInputStream : public BufferedInputStream {}
}}}

# Methods

Return Type Name Summary
[none] BufferInputStream Multiple implementations:
  1. Constructor.
  2. Constructor.
void reset Multiple implementations:
  1. Reset stream data and set position to 0.
  2. Same as reset(nullptr, nullptr, 0);.
v_io_size read Read data from stream.
void setInputStreamIOMode Set stream I/O mode.
IOMode getInputStreamIOMode Get stream I/O mode.
Context& getInputStreamContext Get stream context.
std::shared_ptr<std::string> getDataMemoryHandle Get data memory handle.
p_char8 getData Get pointer to data.
v_buff_size getDataSize Get data size.
v_buff_size getCurrentPosition Get current data read position.
void setCurrentPosition Set current data read position.
v_io_size peek Peek up to count of bytes int he buffer
v_io_size availableToRead Amount of bytes currently available to read from buffer.
v_io_size commitReadOffset Commit read offset

# BufferInputStream::BufferInputStream

  1. Constructor.
    • @param memoryHandle - buffer memory handle. May be nullptr.
    • @param data - pointer to buffer data.
    • @param size - size of the buffer.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    BufferInputStream(const std::shared_ptr<std::string>& memoryHandle,
                      const void* data,
                      v_buff_size size,
                      const std::shared_ptr<void>& captureData = nullptr)
    
  2. Constructor.
    • @param data - buffer.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    BufferInputStream(const oatpp::String& data, const std::shared_ptr<void>& captureData = nullptr)
    

# BufferInputStream::reset

  1. Reset stream data and set position to 0.
    • @param memoryHandle - buffer memory handle. May be nullptr.
    • @param data - pointer to buffer data.
    • @param size - size of the buffer.
    • @param captureData - capture auxiliary data to not get deleted until it's done with the stream.
    void reset(const std::shared_ptr<std::string>& memoryHandle,
               p_char8 data,
               v_buff_size size,
               const std::shared_ptr<void>& captureData = nullptr)
    
  2. Same as reset(nullptr, nullptr, 0);.
    void reset()
    

# BufferInputStream::read

Read data from stream.
It is a legal case if return result < count. Caller should handle this! Calls to this method are always NON-BLOCKING

  • @param data - buffer to read data to.
  • @param count - size of the buffer.
  • @param action - async specific action. If action is NOT oatpp::async::Action::TYPE_NONE, then caller MUST return this action on coroutine iteration.
  • @return - actual number of bytes read. 0 - designates end of the buffer.

v_io_size read(void *data, v_buff_size count, async::Action& action) override

# BufferInputStream::setInputStreamIOMode

Set stream I/O mode.

  • @throws

void setInputStreamIOMode(IOMode ioMode) override

# BufferInputStream::getInputStreamIOMode

Get stream I/O mode.

  • @return

IOMode getInputStreamIOMode() override

# BufferInputStream::getInputStreamContext

Get stream context.

  • @return

Context& getInputStreamContext() override

# BufferInputStream::getDataMemoryHandle

Get data memory handle.

  • @return - data memory handle.

std::shared_ptr<std::string> getDataMemoryHandle()

# BufferInputStream::getData

Get pointer to data.

  • @return - pointer to data.

p_char8 getData()

# BufferInputStream::getDataSize

Get data size.

  • @return - data size.

v_buff_size getDataSize()

# BufferInputStream::getCurrentPosition

Get current data read position.

  • @return - current data read position.

v_buff_size getCurrentPosition()

# BufferInputStream::setCurrentPosition

Set current data read position.

  • @param position - data read position.

void setCurrentPosition(v_buff_size position)

# BufferInputStream::peek

Peek up to count of bytes int he buffer

  • @param data
  • @param count
  • @return [1..count], IOErrors.

v_io_size peek(void *data, v_buff_size count, async::Action& action) override

# BufferInputStream::availableToRead

Amount of bytes currently available to read from buffer.

v_io_size availableToRead() const override

# BufferInputStream::commitReadOffset

Commit read offset

  • @param count
  • @return [1..count], IOErrors.

v_io_size commitReadOffset(v_buff_size count) override