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 | |
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 |
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 | |
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 | is_open () const |
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) |
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 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< int_type > | putc (_CharType ch) |
Writes a single character to the stream. 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 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 int_type | sgetc () |
Reads a single character from the stream without advancing the read position. More... | |
virtual pplx::task< int_type > | nextc () |
Advances the read position, then returns the next character without advancing again. More... | |
virtual 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 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... | |
_CharType * | alloc (size_t count) |
Allocates a contiguous memory block and returns it. More... | |
void | commit (size_t count) |
Submits a block already allocated by the stream buffer. More... | |
virtual bool | can_seek () const =0 |
can_seek More... | |
virtual bool | has_size () const =0 |
has_size More... | |
virtual utility::size64_t | size () const |
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 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 pos_type | getpos (std::ios_base::openmode direction) const =0 |
Gets the current read or write position in the stream. 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 bool | acquire (_Out_writes_(count) _CharType *&ptr, _In_ size_t &count)=0 |
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... | |
Public Member Functions inherited from Concurrency::streams::details::basic_streambuf< _CharType > | |
virtual | ~basic_streambuf () |
Virtual constructor for stream buffers. 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... | |
Protected Member Functions | |
virtual pplx::task< int_type > | _putc (_CharType ch)=0 |
virtual pplx::task< size_t > | _putn (const _CharType *ptr, size_t count, bool) |
virtual pplx::task< size_t > | _putn (const _CharType *ptr, size_t count)=0 |
virtual pplx::task< int_type > | _bumpc ()=0 |
virtual int_type | _sbumpc ()=0 |
virtual pplx::task< int_type > | _getc ()=0 |
virtual int_type | _sgetc ()=0 |
virtual pplx::task< int_type > | _nextc ()=0 |
virtual pplx::task< int_type > | _ungetc ()=0 |
virtual pplx::task< size_t > | _getn (_Out_writes_(count) _CharType *ptr, _In_ size_t count)=0 |
virtual size_t | _scopy (_Out_writes_(count) _CharType *ptr, _In_ size_t count)=0 |
virtual pplx::task< bool > | _sync ()=0 |
virtual _CharType * | _alloc (size_t count)=0 |
virtual void | _commit (size_t count)=0 |
virtual pplx::task< void > | _close_read () |
The real read head close operation, implementation should override it if there is any resource to be released. More... | |
virtual pplx::task< void > | _close_write () |
The real write head close operation, implementation should override it if there is any resource to be released. More... | |
streambuf_state_manager (std::ios_base::openmode mode) | |
Protected Attributes | |
std::exception_ptr | m_currentException |
bool | m_stream_can_read |
bool | m_stream_can_write |
bool | m_stream_read_eof |
bool | m_alloced |
|
inlineprotectedvirtual |
The real read head close operation, implementation should override it if there is any resource to be released.
Reimplemented in Concurrency::streams::details::basic_file_buffer< _CharType >.
|
inlineprotectedvirtual |
The real write head close operation, implementation should override it if there is any resource to be released.
Reimplemented in Concurrency::streams::details::basic_file_buffer< _CharType >.
|
inline |
Allocates a contiguous memory block and returns it.
count | The number of characters to allocate. |
This is intended as an advanced API to be used only when it is important to avoid extra copies.
|
pure virtual |
Gets the stream buffer size, if one has been set.
direction | The direction of buffering (in or out) |
An implementation that does not support buffering will always return 0.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Implemented in 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 >.
|
inlinevirtual |
Reads a single character from the stream and advances the read position.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
can_read
is used to determine whether a stream buffer will support read operations (get).
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
pure virtual |
can_seek
is used to determine whether a stream buffer supports seeking.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Implemented in Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, and Concurrency::streams::details::basic_container_buffer< _CollectionType >.
|
inlinevirtual |
can_write
is used to determine whether a stream buffer will support write operations (put).
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Closes the stream buffer, preventing further read or write operations.
mode | The I/O mode (in or out) to close for. |
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Reimplemented in Concurrency::streams::details::basic_rawptr_buffer< _CharType >.
|
inlinevirtual |
Closes the stream buffer with an exception.
mode | The I/O mode (in or out) to close for. |
eptr | Pointer to the exception. |
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inline |
Submits a block already allocated by the stream buffer.
count | The number of characters to be committed. |
This is intended as an advanced API to be used only when it is important to avoid extra copies.
|
inlinevirtual |
Retrieves the stream buffer exception_ptr if it has been set.
nullptr
will be returned.Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Reads a single character from the stream without advancing the read position.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Reads up to a given number of characters from the stream.
ptr | The address of the target memory area. |
count | The maximum number of characters to read. |
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
pure virtual |
Gets the current read or write position in the stream.
direction | The I/O direction to seek (see remarks) |
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 >.
Implemented in 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 >.
|
pure virtual |
has_size
is used to determine whether a stream buffer supports size().
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Implemented in Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_producer_consumer_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, and Concurrency::streams::details::basic_container_buffer< _CollectionType >.
|
pure virtual |
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.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Implemented in 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 >.
|
inlinevirtual |
is_eof
is used to determine whether a read head has reached the end of the buffer.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Checks if the stream buffer is open.
No separation is made between open for reading and open for writing.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Advances the read position, then returns the next character without advancing again.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Writes a single character to the stream.
ch | The character to write |
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Writes a number of characters to the stream.
ptr | A pointer to the block of data to be written. |
count | The number of characters to write. |
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
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.
ptr | A pointer to the block of data to be written. |
count | The number of characters to write. |
task
that holds the number of characters actually written, either 'count' or 0.Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
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.
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 >.
Implemented in Concurrency::streams::details::basic_file_buffer< _CharType >.
|
inlinevirtual |
Reads a single character from the stream and advances the read position.
-1
if the read fails. -2
if an asynchronous read is requiredThis is a synchronous operation, but is guaranteed to never block.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Copies up to a given number of characters from the stream, synchronously.
ptr | The address of the target memory area. |
count | The maximum number of characters to read. |
This is a synchronous operation, but is guaranteed to never block.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
pure virtual |
Seeks to a position given by a relative offset.
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) |
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.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Implemented in 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 >.
|
pure virtual |
Seeks to the given position.
pos | The offset from the beginning of the stream. |
direction | The I/O direction to seek (see remarks). |
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 >.
Implemented in 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 >.
|
pure virtual |
Sets the stream buffer implementation to buffer or not buffer.
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 >.
Implemented in 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 >.
|
inlinevirtual |
Reads a single character from the stream without advancing the read position.
This is a synchronous operation, but is guaranteed to never block.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Gets the size of the stream, if known. Calls to has_size
will determine whether the result of size
can be relied on.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.
Reimplemented in Concurrency::streams::details::basic_file_buffer< _CharType >, Concurrency::streams::details::basic_rawptr_buffer< _CharType >, and Concurrency::streams::details::basic_container_buffer< _CollectionType >.
|
inlinevirtual |
For output streams, flush any internally buffered data to the underlying medium.
true
if the flush succeeds, false
if notImplements Concurrency::streams::details::basic_streambuf< _CharType >.
|
inlinevirtual |
Retreats the read position, then returns the current character without advancing.
Implements Concurrency::streams::details::basic_streambuf< _CharType >.