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::container_buffer< _CollectionType > Class Template Reference

The basic_container_buffer class serves as a memory-based steam buffer that supports writing or reading sequences of characters. Note that it cannot be used as a consumer producer buffer. More...

#include <containerstream.h>

Inheritance diagram for Concurrency::streams::container_buffer< _CollectionType >:
Concurrency::streams::streambuf< _CollectionType::value_type > Concurrency::streams::details::basic_streambuf< _CollectionType::value_type >

Public Types

typedef _CollectionType::value_type char_type
 
- Public Types inherited from Concurrency::streams::streambuf< _CollectionType::value_type >
typedef details::basic_streambuf< _CollectionType::value_type >::traits traits
 
typedef details::basic_streambuf< _CollectionType::value_type >::int_type int_type
 
typedef details::basic_streambuf< _CollectionType::value_type >::pos_type pos_type
 
typedef details::basic_streambuf< _CollectionType::value_type >::off_type off_type
 
typedef details::basic_streambuf< _CollectionType::value_type >::char_type char_type
 
- Public Types inherited from Concurrency::streams::details::basic_streambuf< _CollectionType::value_type >
typedef _CollectionType::value_type char_type
 
typedef ::concurrency::streams::char_traits< _CollectionType::value_type > traits
 
typedef traits::int_type int_type
 
typedef traits::pos_type pos_type
 
typedef traits::off_type off_type
 

Public Member Functions

 container_buffer (_CollectionType data, std::ios_base::openmode mode=std::ios_base::in)
 Creates a container_buffer given a collection, copying its data into the buffer. More...
 
 container_buffer (std::ios_base::openmode mode=std::ios_base::out)
 Creates a container_buffer starting from an empty collection. More...
 
_CollectionType & collection () const
 
- Public Member Functions inherited from Concurrency::streams::streambuf< _CollectionType::value_type >
 streambuf (_In_ const std::shared_ptr< details::basic_streambuf< _CollectionType::value_type >> &ptr)
 Constructor. More...
 
 streambuf ()
 Default constructor. More...
 
 streambuf (const streambuf< AlterCharType > &other)
 Converter Constructor. More...
 
concurrency::streams::basic_istream< _CollectionType::value_type > create_istream () const
 Constructs an input stream head for this stream buffer. More...
 
concurrency::streams::basic_ostream< _CollectionType::value_type > create_ostream () const
 Constructs an output stream for this stream buffer. More...
 
 operator bool () const
 Checks if the stream buffer has been initialized or not. More...
 
virtual ~streambuf ()
 Destructor More...
 
const std::shared_ptr< details::basic_streambuf< _CollectionType::value_type > > & get_base () const
 
virtual bool can_read () const
 can_read is used to determine whether a stream buffer will support read operations (get). More...
 
virtual bool can_write () const
 can_write is used to determine whether a stream buffer will support write operations (put). More...
 
virtual bool can_seek () const
 can_seek is used to determine whether a stream buffer supports seeking. More...
 
virtual bool has_size () const
 has_size is used to determine whether a stream buffer supports size(). More...
 
virtual utility::size64_t size () const
 Gets the total number of characters in the stream buffer, if known. Calls to has_size will determine whether the result of size can be relied on. More...
 
virtual size_t buffer_size (std::ios_base::openmode direction=std::ios_base::in) const
 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)
 Sets the stream buffer implementation to buffer or not buffer. More...
 
virtual size_t in_avail () const
 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
 Checks if the stream buffer is open. More...
 
virtual bool is_eof () const
 is_eof is used to determine whether a read head has reached the end of the buffer. More...
 
virtual pplx::task< void > close (std::ios_base::openmode mode=(std::ios_base::in|std::ios_base::out))
 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)
 Closes the stream buffer with an exception. More...
 
virtual pplx::task< int_type > putc (_CollectionType::value_type ch)
 Writes a single character to the stream. More...
 
virtual _CollectionType::value_type * alloc (size_t count)
 Allocates a contiguous memory block and returns it. More...
 
virtual void commit (size_t count)
 Submits a block already allocated by the stream buffer. More...
 
virtual bool acquire (_Out_ _CollectionType::value_type *&ptr, _Out_ size_t &count)
 Gets a pointer to the next already allocated contiguous block of data. More...
 
virtual void release (_Out_writes_(count) _CollectionType::value_type *ptr, _In_ size_t count)
 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 pplx::task< size_t > putn (const _CollectionType::value_type *ptr, size_t count)
 Writes a number of characters to the stream. More...
 
virtual pplx::task< size_t > putn_nocopy (const _CollectionType::value_type *ptr, size_t count)
 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 ()
 Reads a single character from the stream and advances the read position. More...
 
virtual details::basic_streambuf< _CollectionType::value_type >::int_type sbumpc ()
 Reads a single character from the stream and advances the read position. More...
 
virtual pplx::task< int_type > getc ()
 Reads a single character from the stream without advancing the read position. More...
 
virtual details::basic_streambuf< _CollectionType::value_type >::int_type sgetc ()
 Reads a single character from the stream without advancing the read position. More...
 
pplx::task< int_type > nextc ()
 Advances the read position, then returns the next character without advancing again. More...
 
pplx::task< int_type > ungetc ()
 Retreats the read position, then returns the current character without advancing. More...
 
virtual pplx::task< size_t > getn (_Out_writes_(count) _CollectionType::value_type *ptr, _In_ size_t count)
 Reads up to a given number of characters from the stream. More...
 
virtual size_t scopy (_Out_writes_(count) _CollectionType::value_type *ptr, _In_ size_t count)
 Copies up to a given number of characters from the stream, synchronously. More...
 
virtual details::basic_streambuf< _CollectionType::value_type >::pos_type getpos (std::ios_base::openmode direction) const
 Gets the current read or write position in the stream. More...
 
virtual details::basic_streambuf< _CollectionType::value_type >::pos_type seekpos (typename details::basic_streambuf< _CollectionType::value_type >::pos_type pos, std::ios_base::openmode direction)
 Seeks to the given position. More...
 
virtual details::basic_streambuf< _CollectionType::value_type >::pos_type seekoff (typename details::basic_streambuf< _CollectionType::value_type >::off_type offset, std::ios_base::seekdir way, std::ios_base::openmode mode)
 Seeks to a position given by a relative offset. More...
 
virtual pplx::task< void > sync ()
 For output streams, flush any internally buffered data to the underlying medium. More...
 
virtual std::exception_ptr exception () const
 Retrieves the stream buffer exception_ptr if it has been set. More...
 
- Public Member Functions inherited from Concurrency::streams::details::basic_streambuf< _CollectionType::value_type >
virtual ~basic_streambuf ()
 Virtual constructor for stream buffers. 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 _CollectionType::value_type * 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...
 

Detailed Description

template<typename _CollectionType>
class Concurrency::streams::container_buffer< _CollectionType >

The basic_container_buffer class serves as a memory-based steam buffer that supports writing or reading sequences of characters. Note that it cannot be used as a consumer producer buffer.

Template Parameters
_CollectionTypeThe type of the container.

This is a reference-counted version of basic_container_buffer.

Constructor & Destructor Documentation

template<typename _CollectionType >
Concurrency::streams::container_buffer< _CollectionType >::container_buffer ( _CollectionType  data,
std::ios_base::openmode  mode = std::ios_base::in 
)
inline

Creates a container_buffer given a collection, copying its data into the buffer.

Parameters
dataThe collection that is the starting point for the buffer
modeThe I/O mode that the buffer should use (in / out)
template<typename _CollectionType >
Concurrency::streams::container_buffer< _CollectionType >::container_buffer ( std::ios_base::openmode  mode = std::ios_base::out)
inline

Creates a container_buffer starting from an empty collection.

Parameters
modeThe I/O mode that the buffer should use (in / out)

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