This class contains a collection of static functions for reading and writing simple types, in network byte order (MSB first). More...
#include <DwmDescriptorIO.hh>
Static Public Member Functions | |
| static ssize_t | Read (int fd, char &c) |
Reads c from fd. | |
| static ssize_t | Write (int fd, char c) |
Writes c to fd. | |
| static ssize_t | Read (int fd, uint8_t &c) |
Reads c from fd. | |
| static ssize_t | Write (int fd, uint8_t c) |
Writes c to fd. | |
| static ssize_t | Read (int fd, bool &b) |
Reads b from fd. | |
| static ssize_t | Write (int fd, bool b) |
Writes b to fd. | |
| static ssize_t | Read (int fd, int16_t &val) |
Reads val from fd, in network byte order (MSB first). | |
| static ssize_t | Write (int fd, int16_t val) |
Writes val to fd, in network byte order (MSB first). | |
| static ssize_t | Read (int fd, uint16_t &val) |
Reads val from fd, in network byte order (MSB first). | |
| static ssize_t | Write (int fd, uint16_t val) |
Writes val to fd, in network byte order (MSB first). | |
| static ssize_t | Read (int fd, int32_t &val) |
Reads val from fd, in network byte order (MSB first). | |
| static ssize_t | Write (int fd, int32_t val) |
Writes val to fd, in network byte order (MSB first). | |
| static ssize_t | Read (int fd, uint32_t &val) |
Reads val from fd, in network byte order (MSB first). | |
| static ssize_t | Write (int fd, uint32_t val) |
Writes val to fd, in network byte order (MSB first). | |
| static ssize_t | Read (int fd, int64_t &val) |
Reads val from fd, in network byte order (MSB first). | |
| static ssize_t | Write (int fd, const int64_t &val) |
Writes val to fd, in network byte order (MSB first). | |
| static ssize_t | Read (int fd, uint64_t &val) |
Reads val from fd, in network byte order (MSB first). | |
| static ssize_t | Write (int fd, const uint64_t &val) |
Writes val to fd, in network byte order (MSB first). | |
| static ssize_t | Read (int fd, float &val) |
Reads val from fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985). | |
| static ssize_t | Write (int fd, float val) |
Writes val to fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985). | |
| static ssize_t | Read (int fd, double &val) |
Reads val from fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985). | |
| static ssize_t | Write (int fd, const double &val) |
Writes val to fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985). | |
| static ssize_t | Read (int fd, std::string &s) |
Reads s from fd. | |
| static ssize_t | Write (int fd, const std::string &s) |
Writes s to fd. | |
| static ssize_t | Read (int fd, DescriptorReadable &val) |
| Wrapper function to read a DescriptorReadable object from a descriptor. | |
| static ssize_t | Read (int fd, HasDescriptorRead auto &val) |
Reads val from fd, where val meets the requirements of the HasDescriptorRead concept. | |
| static ssize_t | Write (int fd, const DescriptorWritable &val) |
| Wrapper function to write a DescriptorWritable object to a descriptor. | |
| static ssize_t | Write (int fd, const HasDescriptorWrite auto &val) |
Writes val to fd, where val meets the requirements of the HasDescriptorWrite concept. | |
| template<typename _firstT , typename _secondT > | |
| static ssize_t | Read (int fd, std::pair< _firstT, _secondT > &p) |
| Reads a pair<_firstT,_secondT> from a file descriptor. | |
| template<typename _firstT , typename _secondT > | |
| static ssize_t | Write (int fd, const std::pair< _firstT, _secondT > &p) |
| Writes a pair<_firstT,_secondT> to a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Read (int fd, std::map< _keyT, _valueT, _Compare, _Alloc > &m) |
| Reads a map<_keyT,_valueT> from a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::map< _keyT, _valueT, _Compare, _Alloc > &m) |
| Writes a map<_keyT,_valueT> to a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Read (int fd, std::multimap< _keyT, _valueT, _Compare, _Alloc > &m) |
| Reads a multimap<_keyT,_valueT> from a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::multimap< _keyT, _valueT, _Compare, _Alloc > &m) |
| Writes a multimap<_keyT,_valueT> to a file descriptor. | |
| template<typename _valueT , std::size_t N> | |
| static ssize_t | Read (int fd, std::array< _valueT, N > &a) |
| Read an array<_valueT,N> from a file descriptor. | |
| template<typename _valueT , std::size_t N> | |
| static ssize_t | Write (int fd, const std::array< _valueT, N > &a) |
| Writes an array<_valueT,N> to a file descriptor. | |
| template<typename _valueT , typename _Alloc > | |
| static ssize_t | Read (int fd, std::vector< _valueT, _Alloc > &v) |
| Reads a vector<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::vector< _valueT, _Alloc > &v) |
| Writes a vector<_valueT> to a file descriptor. | |
| template<typename _valueT , typename _Alloc > | |
| static ssize_t | Read (int fd, std::deque< _valueT, _Alloc > &d) |
| Reads a deque<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::deque< _valueT, _Alloc > &d) |
| Writes a deque<_valueT> to a file descriptor. | |
| template<typename _valueT , typename _Alloc > | |
| static ssize_t | Read (int fd, std::list< _valueT, _Alloc > &l) |
| Reads a list<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::list< _valueT, _Alloc > &l) |
| Writes a list<_valueT> to a file descriptor. | |
| template<typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Read (int fd, std::set< _valueT, _Compare, _Alloc > &l) |
| Reads a set<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::set< _valueT, _Compare, _Alloc > &l) |
| Writes a set<_valueT> to a file descriptor. | |
| template<typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Read (int fd, std::multiset< _valueT, _Compare, _Alloc > &l) |
| Reads a multiset<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Compare , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::multiset< _valueT, _Compare, _Alloc > &l) |
| Writes a multiset<_valueT> to a file descriptor. | |
| template<typename... Args> | |
| static ssize_t | Read (int fd, std::tuple< Args... > &t) |
| Reads a tuple from a file descriptor. | |
| template<typename... Args> | |
| static ssize_t | Write (int fd, const std::tuple< Args... > &t) |
| Writes a tuple to a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Read (int fd, std::unordered_map< _keyT, _valueT, _Hash, _Pred, _Alloc > &m) |
| Reads an unordered_map<_keyT,_valueT> from a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::unordered_map< _keyT, _valueT, _Hash, _Pred, _Alloc > &m) |
| Writes an unordered_map<_keyT,_valueT> to a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Read (int fd, std::unordered_multimap< _keyT, _valueT, _Hash, _Pred, _Alloc > &m) |
| Reads an unordered_multimap<_keyT,_valueT> from a file descriptor. | |
| template<typename _keyT , typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::unordered_multimap< _keyT, _valueT, _Hash, _Pred, _Alloc > &m) |
| Writes an unordered_multimap<_keyT,_valueT> to a file descriptor. | |
| template<typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Read (int fd, std::unordered_set< _valueT, _Hash, _Pred, _Alloc > &m) |
| Reads an unordered_set<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::unordered_set< _valueT, _Hash, _Pred, _Alloc > &m) |
| Writes an unordered_set<_valueT> to a file descriptor. | |
| template<typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Read (int fd, std::unordered_multiset< _valueT, _Hash, _Pred, _Alloc > &m) |
| Reads an unordered_multiset<_valueT> from a file descriptor. | |
| template<typename _valueT , typename _Hash , typename _Pred , typename _Alloc > | |
| static ssize_t | Write (int fd, const std::unordered_multiset< _valueT, _Hash, _Pred, _Alloc > &m) |
| Writes an unordered_multiset<_valueT> to a file descriptor. | |
| static ssize_t | Read (int fd, std::monostate &sm) |
| Just a dummy helper function for std::variant instances that hold a std::monostate. | |
| static ssize_t | Write (int fd, const std::monostate &sm) |
| Just a dummy helper function for std::variant instances that hold a std::monostate. | |
| template<typename... Ts> | |
| static ssize_t | Read (int fd, std::variant< Ts... > &v) |
| Reads a variant from a descriptor. | |
| template<typename... Ts> | |
| static ssize_t | Write (int fd, const std::variant< Ts... > &v) |
| Writes a variant to a descriptor. | |
| template<typename ... Args> | |
| static ssize_t | ReadV (int fd, Args &...args) |
Reads args from fd. | |
| template<typename ... Args> | |
| static ssize_t | WriteV (int fd, const Args &...args) |
Writes args to fd. | |
| static ssize_t | Read (int fd, void *buf, size_t buflen) |
| static ssize_t | Write (int fd, const void *buf, size_t buflen) |
This class contains a collection of static functions for reading and writing simple types, in network byte order (MSB first).
It also contains functions to read and write strings. It also contains function templates to read and write arrays, deques, lists, vectors, maps, multimaps, sets, multisets, unordered_maps, unordered_multimaps, unordered_sets, unordered_multisets, tuples and variants. We use our member functions to handle reading and writing simple types in the containers, and function templates to handle reading and writing other class types. For a user-defined class, the class must implement the DescriptorReadable and DescriptorWritable interfaces, since our function templates simply call out to them. Since templates are static polymorphism, you don't need to inherit from DescriptorReadable and DescriptorWritable, but you must implement the interfaces.
|
static |
Reads b from fd.
Returns the number of bytes read (1) on success, less on failure.
|
static |
Reads c from fd.
Returns the number of bytes read (1) on success, less on failure.
|
static |
Reads val from fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985).
Returns number of bytes read (8) on success, less on failure.
|
static |
Reads val from fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985).
Returns number of bytes read (4) on success, less on failure.
|
static |
Reads val from fd, in network byte order (MSB first).
Returns number of bytes read (2) on success, less on failure.
|
static |
Reads val from fd, in network byte order (MSB first).
Returns number of bytes read (4) on success, less on failure.
|
static |
Reads val from fd, in network byte order (MSB first).
Returns number of bytes read (8) on success, less on failure.
|
inlinestatic |
Read an array<_valueT,N> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.

|
inlinestatic |
Reads a deque<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads a list<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads a map<_keyT,_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Just a dummy helper function for std::variant instances that hold a std::monostate.
This should only be called from our Read() for std::variant (via std::visit()), and does nothing. Returns 0.
|
inlinestatic |
Reads a multimap<_keyT,_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads a multiset<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads a pair<_firstT,_secondT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.

|
inlinestatic |
Reads a set<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
static |
Reads s from fd.
Returns the number of bytes read on success, -1 on failure. Since we write strings with a 64-bit unsigned length value preceding the actual string, and always have a terminating NULL, this always reads at least 9 bytes on success.
|
inlinestatic |
Reads a tuple from a file descriptor.
Returns the number of bytes read.

|
inlinestatic |
Reads an unordered_map<_keyT,_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads an unordered_multimap<_keyT,_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads an unordered_multiset<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads an unordered_set<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
inlinestatic |
Reads a variant from a descriptor.
Returns the number of bytes written on success, -1 on failure.

|
inlinestatic |
Reads a vector<_valueT> from a file descriptor.
Returns the number of bytes read on success, -1 on failure.
|
static |
Reads val from fd, in network byte order (MSB first).
Returns number of bytes read (2) on success, less on failure.
|
static |
Reads val from fd, in network byte order (MSB first).
Returns number of bytes read (4) on success, less on failure.
|
static |
Reads val from fd, in network byte order (MSB first).
Returns number of bytes read (8) on success, less on failure.
|
static |
Reads c from fd.
Returns the number of bytes read (1) on success, less on failure.
|
inlinestatic |
Reads args from fd.
Returns the number of bytes read on success, -1 on failure.

|
static |
Writes b to fd.
Returns the number of bytes written (1) on success, less on failure.
|
static |
Writes c to fd.
Returns the number of bytes written on success, -1 on failure.
|
static |
Writes val to fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985).
Returns the number of bytes written (8) on success, less on failure.
|
static |
Writes val to fd, in network byte order (MSB first).
Returns the number of bytes written (8) on success, less on failure.
|
inlinestatic |
Writes an array<_valueT,N> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.

|
inlinestatic |
Writes a deque<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes a list<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes a map<_keyT,_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Just a dummy helper function for std::variant instances that hold a std::monostate.
This should only be called from our Write() for std::variant (via std::visit()), and does nothing. Returns 0.
|
inlinestatic |
Writes a multimap<_keyT,_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes a multiset<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes a pair<_firstT,_secondT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.

|
inlinestatic |
Writes a set<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
static |
Writes s to fd.
Returns the number of bytes written on success, -1 on failure. Note that a 64-bit value is written first, holding the length of the string. The terminating NULL is also written. Hence, on success this will always return a value of 9 or greater.
|
inlinestatic |
Writes a tuple to a file descriptor.
Returns the number of bytes written.

|
inlinestatic |
Writes an unordered_map<_keyT,_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes an unordered_multimap<_keyT,_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes an unordered_multiset<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes an unordered_set<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
inlinestatic |
Writes a variant to a descriptor.
Returns the number of bytes written on success, -1 on failure.

|
inlinestatic |
Writes a vector<_valueT> to a file descriptor.
Returns the number of bytes written on success, -1 on failure.
|
static |
Writes val to fd, in network byte order (MSB first).
Returns the number of bytes written (8) on success, less on failure.
|
static |
Writes val to fd, in IEEE format (see RFC 1832 and/or ANSI/IEEE Standard 754-1985).
Returns the number of bytes written (4) on success, less on failure.
|
static |
Writes val to fd, in network byte order (MSB first).
Returns the number of bytes written (2) on success, less on failure.
|
static |
Writes val to fd, in network byte order (MSB first).
Returns the number of bytes written (4) on success, less on failure.
|
static |
Writes val to fd, in network byte order (MSB first).
Returns the number of bytes written (2) on success, less on failure.
|
static |
Writes val to fd, in network byte order (MSB first).
Returns the number of bytes written (4) on success, less on failure.
|
static |
Writes c to fd.
Returns the number of bytes written (1) on success, less on failure.
|
inlinestatic |
Writes args to fd.
Returns the number of bytes written on success, -1 on failure.
