nds2-client - ClientDeveloper  0.16.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
nds_impl::Socket::OwningBufferedReader< Reader > Class Template Reference

#include <buffered_reader.hh>

Collaboration diagram for nds_impl::Socket::OwningBufferedReader< Reader >:
Collaboration graph
[legend]

Public Member Functions

 OwningBufferedReader (Reader &&r)
 
void write_all (const char *start, const char *end)
 
char * read_available (char *start, char *end)
 
char * read_exactly (char *start, const char *end)
 
template<typename It >
std::vector< char > read_until (It begin_set, It end_set)
 
std::vector< char >::size_type __buffered_bytes () const
 

Private Member Functions

void fill_buffer ()
 
void consume (std::vector< char >::size_type count)
 

Private Attributes

Reader r_
 
std::vector< char > buf_
 

Constructor & Destructor Documentation

template<typename Reader>
nds_impl::Socket::OwningBufferedReader< Reader >::OwningBufferedReader ( Reader &&  r)
inlineexplicit

Member Function Documentation

template<typename Reader>
std::vector< char >::size_type nds_impl::Socket::OwningBufferedReader< Reader >::__buffered_bytes ( ) const
inline

A debugging function

Returns
Return the number of bytes in the current buffer
template<typename Reader>
void nds_impl::Socket::OwningBufferedReader< Reader >::consume ( std::vector< char >::size_type  count)
inlineprivate
template<typename Reader>
void nds_impl::Socket::OwningBufferedReader< Reader >::fill_buffer ( )
inlineprivate
template<typename Reader>
char* nds_impl::Socket::OwningBufferedReader< Reader >::read_available ( char *  start,
char *  end 
)
inline

A read the data that is currently available. This will only result in a read on the underlying reader if the internal buffer is empty.

Parameters
startStart address of the destination
endAddress of the byte past the last in the destination
Returns
A pointer in [start, end] that is the next location
template<typename Reader>
char* nds_impl::Socket::OwningBufferedReader< Reader >::read_exactly ( char *  start,
const char *  end 
)
inline

Read exactly enough data to fill the range [start,end)

Parameters
startStart of the destination
endByte just past the end of the destination
Returns
end
template<typename Reader>
template<typename It >
std::vector< char > nds_impl::Socket::OwningBufferedReader< Reader >::read_until ( It  begin_set,
It  end_set 
)
inline

Read until a value in [begin_set,end_set) is found in the input stream.

Template Parameters
ItAn iterator that dereferences chars
Parameters
begin_setStart of the list of terminators
end_setEnd of hte list of terminators
Returns
A std::vector<char> of the data that was read in, including the terminator that was found.

This will retrieve data from the underlying reader as needed

template<typename Reader>
void nds_impl::Socket::OwningBufferedReader< Reader >::write_all ( const char *  start,
const char *  end 
)
inline

Write data through to the underlying reader object.

Parameters
startBytes to start at
endAddress just past the last byte to send

Member Data Documentation

template<typename Reader>
std::vector< char > nds_impl::Socket::OwningBufferedReader< Reader >::buf_
private
template<typename Reader>
Reader nds_impl::Socket::OwningBufferedReader< Reader >::r_
private

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