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::producer_consumer_buffer< _CharType > Class Template Reference

The producer_consumer_buffer class serves as a memory-based steam buffer that supports both writing and reading sequences of bytes. It can be used as a consumer/producer buffer. More...

#include <producerconsumerstream.h>

Inheritance diagram for Concurrency::streams::producer_consumer_buffer< _CharType >:
Concurrency::streams::streambuf< _CharType > Concurrency::streams::details::basic_streambuf< _CharType >

Public Types

typedef _CharType char_type
 
- Public Types inherited from Concurrency::streams::streambuf< _CharType >
typedef details::basic_streambuf< _CharType >::traits traits
 
typedef details::basic_streambuf< _CharType >::int_type int_type
 
typedef details::basic_streambuf< _CharType >::pos_type pos_type
 
typedef details::basic_streambuf< _CharType >::off_type off_type
 
typedef details::basic_streambuf< _CharType >::char_type char_type
 
- Public Types inherited from Concurrency::streams::details::basic_streambuf< _CharType >
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

 producer_consumer_buffer (size_t alloc_size=512)
 Create a producer_consumer_buffer. More...
 
- Public Member Functions inherited from Concurrency::streams::streambuf< _CharType >
 streambuf (_In_ const std::shared_ptr< details::basic_streambuf< _CharType >> &ptr)
 Constructor. More...
 
 streambuf ()
 Default constructor. More...
 
template<typename AlterCharType >
 streambuf (const streambuf< AlterCharType > &other)
 Converter Constructor. More...
 
concurrency::streams::basic_istream< _CharType > create_istream () const
 Constructs an input stream head for this stream buffer. More...
 
concurrency::streams::basic_ostream< _CharType > 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< _CharType > > & 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 (_CharType ch)
 Writes a single character to the stream. More...
 
virtual _CharType * 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_ _CharType *&ptr, _Out_ size_t &count)
 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)
 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 _CharType *ptr, size_t count)
 Writes a number of characters to the stream. More...
 
virtual pplx::task< size_t > putn_nocopy (const _CharType *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< _CharType >::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< _CharType >::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) _CharType *ptr, _In_ size_t count)
 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)
 Copies up to a given number of characters from the stream, synchronously. More...
 
virtual details::basic_streambuf< _CharType >::pos_type getpos (std::ios_base::openmode direction) const
 Gets the current read or write position in the stream. More...
 
virtual details::basic_streambuf< _CharType >::pos_type seekpos (typename details::basic_streambuf< _CharType >::pos_type pos, std::ios_base::openmode direction)
 Seeks to the given position. More...
 
virtual details::basic_streambuf< _CharType >::pos_type seekoff (typename details::basic_streambuf< _CharType >::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< _CharType >
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 _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...
 

Detailed Description

template<typename _CharType>
class Concurrency::streams::producer_consumer_buffer< _CharType >

The producer_consumer_buffer class serves as a memory-based steam buffer that supports both writing and reading sequences of bytes. It can be used as a consumer/producer buffer.

Template Parameters
_CharTypeThe data type of the basic element of the producer_consumer_buffer.

This is a reference-counted version of basic_producer_consumer_buffer.

Constructor & Destructor Documentation

template<typename _CharType >
Concurrency::streams::producer_consumer_buffer< _CharType >::producer_consumer_buffer ( size_t  alloc_size = 512)
inline

Create a producer_consumer_buffer.

Parameters
alloc_sizeThe internal default block size.

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