C++ Rest SDK
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
Public Types | Public Member Functions | List of all members
Concurrency::streams::details::basic_streambuf< _CharType > Class Template Referenceabstract

Stream buffer base class. More...

#include <astreambuf.h>

Inheritance diagram for Concurrency::streams::details::basic_streambuf< _CharType >:
Concurrency::streams::details::streambuf_state_manager< _CharType > Concurrency::streams::streambuf< _CharType > Concurrency::streams::details::basic_file_buffer< _CharType > Concurrency::streams::details::basic_producer_consumer_buffer< _CharType > Concurrency::streams::details::basic_rawptr_buffer< _CharType > Concurrency::streams::details::basic_stdio_buffer< _CharType > Concurrency::streams::producer_consumer_buffer< _CharType > Concurrency::streams::rawptr_buffer< _CharType >

Public Types

typedef _CharType char_type
 
typedef ::concurrency::streams::char_traits< _CharType > traits
 
typedef traits::int_type int_type
 
typedef traits::pos_type pos_type
 
typedef traits::off_type off_type
 

Public Member Functions

virtual ~basic_streambuf ()
 Virtual constructor for stream buffers. More...
 
virtual bool can_read () const =0
 can_read is used to determine whether a stream buffer will support read operations (get). More...
 
virtual bool can_write () const =0
 can_write is used to determine whether a stream buffer will support write operations (put). More...
 
virtual bool can_seek () const =0
 can_seek is used to determine whether a stream buffer supports seeking. More...
 
virtual bool has_size () const =0
 has_size is used to determine whether a stream buffer supports size(). More...
 
virtual bool is_eof () const =0
 is_eof is used to determine whether a read head has reached the end of the buffer. More...
 
virtual size_t buffer_size (std::ios_base::openmode direction=std::ios_base::in) const =0
 Gets the stream buffer size, if one has been set. More...
 
virtual void set_buffer_size (size_t size, std::ios_base::openmode direction=std::ios_base::in)=0
 Sets the stream buffer implementation to buffer or not buffer. More...
 
virtual size_t in_avail () const =0
 For any input stream, in_avail returns the number of characters that are immediately available to be consumed without blocking. May be used in conjunction with <cref="::sbumpc method"/> to read data without incurring the overhead of using tasks. More...
 
virtual bool is_open () const =0
 Checks if the stream buffer is open. More...
 
virtual pplx::task< void > close (std::ios_base::openmode mode=(std::ios_base::in|std::ios_base::out))=0
 Closes the stream buffer, preventing further read or write operations. More...
 
virtual pplx::task< void > close (std::ios_base::openmode mode, std::exception_ptr eptr)=0
 Closes the stream buffer with an exception. More...
 
virtual pplx::task< int_type > putc (_CharType ch)=0
 Writes a single character to the stream. More...
 
virtual pplx::task< size_t > putn (const _CharType *ptr, size_t count)=0
 Writes a number of characters to the stream. More...
 
virtual pplx::task< size_t > putn_nocopy (const _CharType *ptr, size_t count)=0
 Writes a number of characters to the stream. Note: callers must make sure the data to be written is valid until the returned task completes. More...
 
virtual pplx::task< int_type > bumpc ()=0
 Reads a single character from the stream and advances the read position. More...
 
virtual int_type sbumpc ()=0
 Reads a single character from the stream and advances the read position. More...
 
virtual pplx::task< int_type > getc ()=0
 Reads a single character from the stream without advancing the read position. More...
 
virtual int_type sgetc ()=0
 Reads a single character from the stream without advancing the read position. More...
 
virtual pplx::task< int_type > nextc ()=0
 Advances the read position, then returns the next character without advancing again. More...
 
virtual pplx::task< int_type > ungetc ()=0
 Retreats the read position, then returns the current character without advancing. More...
 
virtual pplx::task< size_t > getn (_Out_writes_(count) _CharType *ptr, _In_ size_t count)=0
 Reads up to a given number of characters from the stream. More...
 
virtual size_t scopy (_Out_writes_(count) _CharType *ptr, _In_ size_t count)=0
 Copies up to a given number of characters from the stream, synchronously. More...
 
virtual pos_type getpos (std::ios_base::openmode direction) const =0
 Gets the current read or write position in the stream. More...
 
virtual utility::size64_t size () const =0
 Gets the size of the stream, if known. Calls to has_size will determine whether the result of size can be relied on. More...
 
virtual pos_type seekpos (pos_type pos, std::ios_base::openmode direction)=0
 Seeks to the given position. More...
 
virtual pos_type seekoff (off_type offset, std::ios_base::seekdir way, std::ios_base::openmode mode)=0
 Seeks to a position given by a relative offset. More...
 
virtual pplx::task< void > sync ()=0
 For output streams, flush any internally buffered data to the underlying medium. More...
 
virtual _CharType * alloc (_In_ size_t count)=0
 Allocates a contiguous memory block and returns it. More...
 
virtual void commit (_In_ size_t count)=0
 Submits a block already allocated by the stream buffer. More...
 
virtual bool acquire (_Out_ _CharType *&ptr, _Out_ size_t &count)=0
 Gets a pointer to the next already allocated contiguous block of data. More...
 
virtual void release (_Out_writes_(count) _CharType *ptr, _In_ size_t count)=0
 Releases a block of data acquired using ::acquire method. This frees the stream buffer to de-allocate the memory, if it so desires. Move the read position ahead by the count. More...
 
virtual std::exception_ptr exception () const =0
 Retrieves the stream buffer exception_ptr if it has been set. More...
 

Detailed Description

template<typename _CharType>
class Concurrency::streams::details::basic_streambuf< _CharType >

Stream buffer base class.

Constructor & Destructor Documentation

template<typename _CharType>
virtual Concurrency::streams::details::basic_streambuf< _CharType >::~basic_streambuf ( )
inlinevirtual

Virtual constructor for stream buffers.

Member Function Documentation

template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::acquire ( _Out_ _CharType *&  ptr,
_Out_ size_t &  count 
)
pure virtual

Gets a pointer to the next already allocated contiguous block of data.

Parameters
ptrA reference to a pointer variable that will hold the address of the block on success.
countThe number of contiguous characters available at the address in 'ptr.'
Returns
true if the operation succeeded, false otherwise.

A return of false does not necessarily indicate that a subsequent read operation would fail, only that there is no block to return immediately or that the stream buffer does not support the operation. The stream buffer may not de-allocate the block until ::release method is called. If the end of the stream is reached, the function will return true, a null pointer, and a count of zero; a subsequent read will not succeed.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >, and Concurrency::streams::details::basic_container_buffer< _CollectionType >.

template<typename _CharType>
virtual _CharType* Concurrency::streams::details::basic_streambuf< _CharType >::alloc ( _In_ size_t  count)
pure virtual

Allocates a contiguous memory block and returns it.

Parameters
countThe number of characters to allocate.
Returns
A pointer to a block to write to, null if the stream buffer implementation does not support alloc/commit.
template<typename _CharType>
virtual size_t Concurrency::streams::details::basic_streambuf< _CharType >::buffer_size ( std::ios_base::openmode  direction = std::ios_base::in) const
pure virtual
template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::details::basic_streambuf< _CharType >::bumpc ( )
pure virtual

Reads a single character from the stream and advances the read position.

Returns
A task that holds the value of the character. This value is EOF if the read fails.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::can_read ( ) const
pure virtual
template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::can_seek ( ) const
pure virtual
template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::can_write ( ) const
pure virtual
template<typename _CharType>
virtual pplx::task<void> Concurrency::streams::details::basic_streambuf< _CharType >::close ( std::ios_base::openmode  mode = (std::ios_base::in|std::ios_base::out))
pure virtual
template<typename _CharType>
virtual pplx::task<void> Concurrency::streams::details::basic_streambuf< _CharType >::close ( std::ios_base::openmode  mode,
std::exception_ptr  eptr 
)
pure virtual
template<typename _CharType>
virtual void Concurrency::streams::details::basic_streambuf< _CharType >::commit ( _In_ size_t  count)
pure virtual

Submits a block already allocated by the stream buffer.

Parameters
countThe number of characters to be committed.
template<typename _CharType>
virtual std::exception_ptr Concurrency::streams::details::basic_streambuf< _CharType >::exception ( ) const
pure virtual

Retrieves the stream buffer exception_ptr if it has been set.

Returns
Pointer to the exception, if it has been set; otherwise, nullptr will be returned

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::details::basic_streambuf< _CharType >::getc ( )
pure virtual

Reads a single character from the stream without advancing the read position.

Returns
A task that holds the value of the byte. This value is EOF if the read fails.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pplx::task<size_t> Concurrency::streams::details::basic_streambuf< _CharType >::getn ( _Out_writes_(count) _CharType *  ptr,
_In_ size_t  count 
)
pure virtual

Reads up to a given number of characters from the stream.

Parameters
ptrThe address of the target memory area.
countThe maximum number of characters to read.
Returns
A task that holds the number of characters read. This value is O if the end of the stream is reached.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pos_type Concurrency::streams::details::basic_streambuf< _CharType >::getpos ( std::ios_base::openmode  direction) const
pure virtual

Gets the current read or write position in the stream.

Parameters
directionThe I/O direction to seek (see remarks)
Returns
The current position. EOF if the operation fails.

Some streams may have separate write and read cursors. For such streams, the direction parameter defines whether to move the read or the write cursor.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >, Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, Concurrency::streams::details::basic_container_buffer< _CollectionType >, and Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::has_size ( ) const
pure virtual
template<typename _CharType>
virtual size_t Concurrency::streams::details::basic_streambuf< _CharType >::in_avail ( ) const
pure virtual
template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::is_eof ( ) const
pure virtual
template<typename _CharType>
virtual bool Concurrency::streams::details::basic_streambuf< _CharType >::is_open ( ) const
pure virtual
template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::details::basic_streambuf< _CharType >::nextc ( )
pure virtual

Advances the read position, then returns the next character without advancing again.

Returns
A task that holds the value of the character. This value is EOF if the read fails.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::details::basic_streambuf< _CharType >::putc ( _CharType  ch)
pure virtual

Writes a single character to the stream.

Parameters
chThe character to write
Returns
A task that holds the value of the character. This value is EOF if the write operation fails.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pplx::task<size_t> Concurrency::streams::details::basic_streambuf< _CharType >::putn ( const _CharType *  ptr,
size_t  count 
)
pure virtual

Writes a number of characters to the stream.

Parameters
ptrA pointer to the block of data to be written.
countThe number of characters to write.
Returns
A task that holds the number of characters actually written, either 'count' or 0.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pplx::task<size_t> Concurrency::streams::details::basic_streambuf< _CharType >::putn_nocopy ( const _CharType *  ptr,
size_t  count 
)
pure virtual

Writes a number of characters to the stream. Note: callers must make sure the data to be written is valid until the returned task completes.

Parameters
ptrA pointer to the block of data to be written.
countThe number of characters to write.
Returns
A task that holds the number of characters actually written, either 'count' or 0.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual void Concurrency::streams::details::basic_streambuf< _CharType >::release ( _Out_writes_(count) _CharType *  ptr,
_In_ size_t  count 
)
pure virtual

Releases a block of data acquired using ::acquire method. This frees the stream buffer to de-allocate the memory, if it so desires. Move the read position ahead by the count.

Parameters
ptrA pointer to the block of data to be released.
countThe number of characters that were read.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >, and Concurrency::streams::details::basic_file_buffer< _CharType >.

template<typename _CharType>
virtual int_type Concurrency::streams::details::basic_streambuf< _CharType >::sbumpc ( )
pure virtual

Reads a single character from the stream and advances the read position.

Returns
The value of the character. -1 if the read fails. -2 if an asynchronous read is required

This is a synchronous operation, but is guaranteed to never block.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual size_t Concurrency::streams::details::basic_streambuf< _CharType >::scopy ( _Out_writes_(count) _CharType *  ptr,
_In_ size_t  count 
)
pure virtual

Copies up to a given number of characters from the stream, synchronously.

Parameters
ptrThe address of the target memory area.
countThe maximum number of characters to read.
Returns
The number of characters copied. O if the end of the stream is reached or an asynchronous read is required.

This is a synchronous operation, but is guaranteed to never block.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pos_type Concurrency::streams::details::basic_streambuf< _CharType >::seekoff ( off_type  offset,
std::ios_base::seekdir  way,
std::ios_base::openmode  mode 
)
pure virtual

Seeks to a position given by a relative offset.

Parameters
offsetThe relative position to seek to
wayThe starting point (beginning, end, current) for the seek.
modeThe I/O direction to seek (see remarks)
Returns
The position. EOF if the operation fails.

Some streams may have separate write and read cursors. For such streams, the mode parameter defines whether to move the read or the write cursor.

Implemented in Concurrency::streams::details::streambuf_state_manager< _CharType >, Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >, Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, Concurrency::streams::details::basic_container_buffer< _CollectionType >, and Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >.

template<typename _CharType>
virtual pos_type Concurrency::streams::details::basic_streambuf< _CharType >::seekpos ( pos_type  pos,
std::ios_base::openmode  direction 
)
pure virtual

Seeks to the given position.

Parameters
posThe offset from the beginning of the stream.
directionThe I/O direction to seek (see remarks).
Returns
The position. EOF if the operation fails.

Some streams may have separate write and read cursors. For such streams, the direction parameter defines whether to move the read or the write cursor.

Implemented in Concurrency::streams::details::streambuf_state_manager< _CharType >, Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >, Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, Concurrency::streams::details::basic_container_buffer< _CollectionType >, and Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >.

template<typename _CharType>
virtual void Concurrency::streams::details::basic_streambuf< _CharType >::set_buffer_size ( size_t  size,
std::ios_base::openmode  direction = std::ios_base::in 
)
pure virtual

Sets the stream buffer implementation to buffer or not buffer.

Parameters
sizeThe size to use for internal buffering, 0 if no buffering should be done.
directionThe direction of buffering (in or out)

An implementation that does not support buffering will silently ignore calls to this function and it will not have any effect on what is returned by subsequent calls to ::buffer_size method.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >, Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, Concurrency::streams::details::basic_container_buffer< _CollectionType >, and Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >.

template<typename _CharType>
virtual int_type Concurrency::streams::details::basic_streambuf< _CharType >::sgetc ( )
pure virtual

Reads a single character from the stream without advancing the read position.

Returns
The value of the character. EOF if the read fails. ::requires_async method if an asynchronous read is required

This is a synchronous operation, but is guaranteed to never block.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual utility::size64_t Concurrency::streams::details::basic_streambuf< _CharType >::size ( ) const
pure virtual
template<typename _CharType>
virtual pplx::task<void> Concurrency::streams::details::basic_streambuf< _CharType >::sync ( )
pure virtual

For output streams, flush any internally buffered data to the underlying medium.

Returns
A task that returns true if the sync succeeds, false if not.

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.

template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::details::basic_streambuf< _CharType >::ungetc ( )
pure virtual

Retreats the read position, then returns the current character without advancing.

Returns
A task that holds the value of the character. This value is EOF if the read fails, requires_async if an asynchronous read is required

Implemented in Concurrency::streams::streambuf< _CharType >, Concurrency::streams::streambuf< _CollectionType::value_type >, Concurrency::streams::details::streambuf_state_manager< _CharType >, and Concurrency::streams::details::streambuf_state_manager< _CollectionType::value_type >.


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