OpenEnroth da9191a
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
UnsizedInputStream Class Reference
Inheritance diagram for UnsizedInputStream:
InputStream

Public Member Functions

 UnsizedInputStream (const void *data, size_t size, size_t chunkSize=128)
 
- Public Member Functions inherited from InputStream
virtual ~InputStream ()
 
size_t read (void *data, size_t size)
 
void readOrFail (void *data, size_t size)
 
size_t readAll (std::string *dst)
 
std::string readAll ()
 
size_t skip (size_t size)
 
void skipOrFail (size_t size)
 
size_t readUntil (char delimiter, std::string *dst)
 
std::string readUntil (char delimiter)
 
void close ()
 
bool isOpen () const
 
size_t position () const
 
size_t size () const
 
const std::string & displayPath () const
 

Protected Member Functions

virtual size_t _underflow (void *data, size_t size, Buffer *buffer) override
 
- Protected Member Functions inherited from InputStream
 InputStream ()=default
 
void open (Buffer buffer, size_t size, std::string_view displayPath)
 
virtual size_t _underflow (void *data, size_t size, Buffer *buffer)
 
virtual void _close (bool canThrow)
 
void destroy () noexcept
 
void throwReadError (size_t requested, size_t actual) const
 
void throwSkipError (size_t requested, size_t actual) const
 

Private Attributes

const char * _data
 
size_t _dataSize
 
size_t _chunkSize
 
size_t _pos = 0
 

Additional Inherited Members

- Public Types inherited from InputStream
using Buffer = StreamBuffer< const char >
 

Detailed Description

An input stream that doesn't report its size, feeding data through _underflow in small chunks. Used for testing the unsized readAll code path.

Constructor & Destructor Documentation

◆ UnsizedInputStream()

UnsizedInputStream::UnsizedInputStream ( const void *  data,
size_t  size,
size_t  chunkSize = 128 
)
inline

Member Function Documentation

◆ _underflow()

virtual size_t UnsizedInputStream::_underflow ( void *  data,
size_t  size,
Buffer buffer 
)
inlineoverrideprotectedvirtual

Fetches more data from the underlying source. Override in subclasses that perform I/O.

Three modes of operation:

  • size == 0: just refills the buffer without consuming any data.
  • data != nullptr: reads size bytes into data.
  • data == nullptr && size > 0: skips size bytes.

In all modes, sets *buffer to the new buffer state.

Parameters
[out]dataBuffer to read into, or nullptr for skip/refill.
sizeNumber of bytes to read or skip.
[out]bufferNew buffer state.
Returns
Number of bytes read into data or skipped.
Exceptions
ExceptionOn error.

Reimplemented from InputStream.

Member Data Documentation

◆ _chunkSize

size_t UnsizedInputStream::_chunkSize
private

◆ _data

const char* UnsizedInputStream::_data
private

◆ _dataSize

size_t UnsizedInputStream::_dataSize
private

◆ _pos

size_t UnsizedInputStream::_pos = 0
private

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