Logo
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 | Friends | List of all members
Concurrency::streams::streambuf< _CharType > Class Template Reference

Reference-counted stream buffer. More...

#include <astreambuf.h>

Inheritance diagram for Concurrency::streams::streambuf< _CharType >:

Public Types

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
 
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

  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...
 

Friends

template<typename _CharType2 >
class  streambuf
 

Detailed Description

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

Reference-counted stream buffer.

Template Parameters
_CharType The data type of the basic element of the streambuf.
_CharType2 The data type of the basic element of the streambuf.

Constructor & Destructor Documentation

template<typename _CharType>
Concurrency::streams::streambuf< _CharType >::streambuf ( _In_ const std::shared_ptr< details::basic_streambuf< _CharType >> &  ptr )
inline

Constructor.

Parameters
ptr A pointer to the concrete stream buffer implementation.
template<typename _CharType>
inline

Default constructor.

template<typename _CharType>
template<typename AlterCharType >
Concurrency::streams::streambuf< _CharType >::streambuf ( const streambuf< AlterCharType > &  other )
inline

Converter Constructor.

Template Parameters
AlterCharType The data type of the basic element of the source streambuf.
Parameters
other The source buffer to be converted.
template<typename _CharType>
virtual Concurrency::streams::streambuf< _CharType >::~streambuf ( )
inlinevirtual

Destructor

Member Function Documentation

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

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

Parameters
ptr A reference to a pointer variable that will hold the address of the block on success.
count The 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.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual _CharType* Concurrency::streams::streambuf< _CharType >::alloc ( size_t  count )
inlinevirtual

Allocates a contiguous memory block and returns it.

Parameters
count The 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::streambuf< _CharType >::buffer_size ( std::ios_base::openmode  direction = std::ios_base::in ) const
inlinevirtual

Gets the stream buffer size, if one has been set.

Parameters
direction The direction of buffering (in or out)
Returns
The size of the internal buffer (for the given direction).

An implementation that does not support buffering will always return 0.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::streambuf< _CharType >::bumpc ( )
inlinevirtual

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

Returns
The value of the character. EOF if the read fails.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::streambuf< _CharType >::can_read ( ) const
inlinevirtual

can_read is used to determine whether a stream buffer will support read operations (get).

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::streambuf< _CharType >::can_seek ( ) const
inlinevirtual

can_seek is used to determine whether a stream buffer supports seeking.

Returns
True if seeking is supported, false otherwise.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::streambuf< _CharType >::can_write ( ) const
inlinevirtual

can_write is used to determine whether a stream buffer will support write operations (put).

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual pplx::task<void> Concurrency::streams::streambuf< _CharType >::close ( std::ios_base::openmode  mode = (std::ios_base::in | std::ios_base::out) )
inlinevirtual

Closes the stream buffer, preventing further read or write operations.

Parameters
mode The I/O mode (in or out) to close for.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual pplx::task<void> Concurrency::streams::streambuf< _CharType >::close ( std::ios_base::openmode  mode,
std::exception_ptr  eptr 
)
inlinevirtual

Closes the stream buffer with an exception.

Parameters
mode The I/O mode (in or out) to close for.
eptr Pointer to the exception.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual void Concurrency::streams::streambuf< _CharType >::commit ( size_t  count )
inlinevirtual

Submits a block already allocated by the stream buffer.

Parameters
count The number of characters to be committed.
template<typename _CharType>
concurrency::streams::basic_istream<_CharType> Concurrency::streams::streambuf< _CharType >::create_istream ( ) const
inline

Constructs an input stream head for this stream buffer.

Returns
basic_istream .
template<typename _CharType>
concurrency::streams::basic_ostream<_CharType> Concurrency::streams::streambuf< _CharType >::create_ostream ( ) const
inline

Constructs an output stream for this stream buffer.

Returns
basic_ostream
template<typename _CharType>
virtual std::exception_ptr Concurrency::streams::streambuf< _CharType >::exception ( ) const
inlinevirtual

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

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::streambuf< _CharType >::getc ( )
inlinevirtual

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

Returns
The value of the byte. EOF if the read fails.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

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

Parameters
ptr The address of the target memory area.
count The maximum number of characters to read.
Returns
The number of characters read. O if the end of the stream is reached.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

Gets the current read or write position in the stream.

Parameters
direction The 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.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::streambuf< _CharType >::has_size ( ) const
inlinevirtual

has_size is used to determine whether a stream buffer supports size().

Returns
True if the size API is supported, false otherwise.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual size_t Concurrency::streams::streambuf< _CharType >::in_avail ( ) const
inlinevirtual

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.

Returns
Number of characters that are ready to read.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::streambuf< _CharType >::is_eof ( ) const
inlinevirtual

is_eof is used to determine whether a read head has reached the end of the buffer.

Returns
True if at the end of the buffer, false otherwise.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual bool Concurrency::streams::streambuf< _CharType >::is_open ( ) const
inlinevirtual

Checks if the stream buffer is open.

No separation is made between open for reading and open for writing.

Returns
True if the stream buffer is open for reading or writing, false otherwise.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
pplx::task<int_type> Concurrency::streams::streambuf< _CharType >::nextc ( )
inlinevirtual

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

Returns
The value of the character. EOF if the read fails.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
Concurrency::streams::streambuf< _CharType >::operator bool ( ) const
inline

Checks if the stream buffer has been initialized or not.

template<typename _CharType>
virtual pplx::task<int_type> Concurrency::streams::streambuf< _CharType >::putc ( _CharType  ch )
inlinevirtual

Writes a single character to the stream.

Parameters
ch The character to write
Returns
The value of the character. EOF if the write operation fails

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

Writes a number of characters to the stream.

Parameters
ptr A pointer to the block of data to be written.
count The number of characters to write.
Returns
The number of characters actually written, either 'count' or 0.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

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
ptr A pointer to the block of data to be written.
count The number of characters to write.
Returns
The number of characters actually written, either 'count' or 0.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

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
ptr A pointer to the block of data to be released.
count The number of characters that were read.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

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.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual size_t Concurrency::streams::streambuf< _CharType >::scopy ( _Out_writes_(count) _CharType *  ptr,
_In_ size_t  count 
)
inlinevirtual

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

Parameters
ptr The address of the target memory area.
count The 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.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

Seeks to a position given by a relative offset.

Parameters
offset The relative position to seek to
way The starting point (beginning, end, current) for the seek.
mode The 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.

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

Seeks to the given position.

Parameters
pos The offset from the beginning of the stream.
direction The 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.

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

Sets the stream buffer implementation to buffer or not buffer.

Parameters
size The size to use for internal buffering, 0 if no buffering should be done.
direction The 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.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

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

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.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual utility::size64_t Concurrency::streams::streambuf< _CharType >::size ( ) const
inlinevirtual

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.

Returns
The total number of characters in the stream buffer.

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
virtual pplx::task<void> Concurrency::streams::streambuf< _CharType >::sync ( )
inlinevirtual

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

Returns
true if the flush succeeds, false if not

Implements Concurrency::streams::details::basic_streambuf< _CharType >.

template<typename _CharType>
pplx::task<int_type> Concurrency::streams::streambuf< _CharType >::ungetc ( )
inlinevirtual

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

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

Implements Concurrency::streams::details::basic_streambuf< _CharType >.


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

Generated by   doxygen 1.8.10

AltStyle によって変換されたページ (->オリジナル) /