mirror of
https://github.com/matrix-construct/construct
synced 2025-03-24 02:10:28 +01:00
ircd::net: Add an internal non-blocking read call; minor comments.
This commit is contained in:
parent
a1f0075d62
commit
a9bd77a67d
1 changed files with 22 additions and 5 deletions
|
@ -88,13 +88,14 @@ struct ircd::net::socket
|
|||
milliseconds cancel_timeout() noexcept;
|
||||
|
||||
// low level write suite
|
||||
template<class iov> size_t write_one(iov&&);
|
||||
template<class iov> size_t write_any(iov&&);
|
||||
template<class iov> size_t write_all(iov&&);
|
||||
template<class iov> size_t write_one(iov&&); // non-blocking
|
||||
template<class iov> size_t write_any(iov&&); // non-blocking
|
||||
template<class iov> size_t write_all(iov&&); // yielding
|
||||
|
||||
// low level read suite
|
||||
template<class iov> size_t read_any(iov&&);
|
||||
template<class iov> size_t read_all(iov&&);
|
||||
template<class iov> size_t read_one(iov&&); // non-blocking
|
||||
template<class iov> size_t read_any(iov&&); // yielding
|
||||
template<class iov> size_t read_all(iov&&); // yielding
|
||||
|
||||
// Asynchronous callback when socket ready
|
||||
void operator()(const wait_type &, const milliseconds &timeout, ec_handler);
|
||||
|
@ -179,6 +180,22 @@ ircd::net::socket::read_any(iov&& bufs)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/// Non-blocking; One system call only; never throws eof;
|
||||
template<class iov>
|
||||
size_t
|
||||
ircd::net::socket::read_one(iov&& bufs)
|
||||
{
|
||||
assert(!blocking(*this));
|
||||
const size_t ret
|
||||
{
|
||||
ssl.read_some(std::forward<iov>(bufs))
|
||||
};
|
||||
|
||||
in.bytes += ret;
|
||||
++in.calls;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// Yields ircd::ctx until all buffers are sent.
|
||||
template<class iov>
|
||||
size_t
|
||||
|
|
Loading…
Add table
Reference in a new issue