ark namespace

grand namespace for all non-specific symbols of arkio

Namespaces

namespace async
contains apis that invokes a given ark::callback on completion
namespace coro
contains apis that returns an Awaitable
namespace net
namespace for module Net
namespace sync
contains apis that blocks until completion

Classes

class async_context
context for running async functions
template<typename CharT>
class base_buffer
base type for mutable_buffer and const_buffer
template<typename RetType>
struct callback
a movable noncopyable unique_function invoked to signal completion
template<>
struct callback<void>
a movable noncopyable unique_function invoked to signal completion
class context_exit_guard
RAII-style helper for async_context.exit()
class event_fd
wraps fildes created by eventfd(2) as an io object
class mem_fd
wraps fildes created by memfd_create(2) as an io object
class nonseekable_fd
An io object, denotes a non lseek()-able fd as defined in kernel.
class normal_file
wraps fildes that represents an normal file as an io object
class pipe_fd
wraps fildes created by pipe2(2) as an io object
template<class T>
class result
result class from outcome library
class seekable_fd
An io object, denotes a lseek()-able fd as defined in kernel.
template<class T>
class task
task<> as defined in p1056, without exception support
class with_async_context
able to bound to an async_context

Typedefs

using mutable_buffer = base_buffer<char>
a view to a span of memory as mutable buffer
using const_buffer = base_buffer<const char>
a view to a span of memory as const buffer
template<typename T>
using is_mutable_buffer_sequence = decltype(detail::is_mutable_buffer_sequence_impl<T>(0))
std::true_type if T is a MutableBufferSequence
template<typename T>
using is_const_buffer_sequence = decltype(detail::is_const_buffer_sequence_impl<T>(0))
std::true_type if T is a ConstBufferSequence

Functions

auto operator+(const mutable_buffer& b, size_t n) -> mutable_buffer noexcept
returns an ascended buffer by n bytes
auto operator+(size_t n, const mutable_buffer& b) -> mutable_buffer noexcept
returns an ascended buffer by n bytes
auto operator+(const const_buffer& b, size_t n) -> const_buffer noexcept
returns an ascended buffer by n bytes
auto operator+(size_t n, const const_buffer& b) -> const_buffer noexcept
returns an ascended buffer by n bytes
auto buffer(void* p, size_t n) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
auto buffer(const void* p, size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
auto buffer(const mutable_buffer& b) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
auto buffer(const mutable_buffer& b, size_t n) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
auto buffer(const const_buffer& b) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
auto buffer(const const_buffer& b, size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(T(&data)[N]) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(const T(&data)[N]) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(array<T, N>& data) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(array<const T, N>& data) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, class Allocator>
auto buffer(vector<T, Allocator>& data) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, class Allocator>
auto buffer(const vector<T, Allocator>& data) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class CharT, class Traits, class Allocator>
auto buffer(basic_string<CharT, Traits, Allocator>& data) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class CharT, class Traits, class Allocator>
auto buffer(const basic_string<CharT, Traits, Allocator>& data) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class CharT, class Traits>
auto buffer(basic_string_view<CharT, Traits> data) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(T(&data)[N], size_t n) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(const T(&data)[N], size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(array<T, N>& data, size_t n) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, size_t N>
auto buffer(array<const T, N>& data, size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, class Allocator>
auto buffer(vector<T, Allocator>& data, size_t n) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class T, class Allocator>
auto buffer(const vector<T, Allocator>& data, size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class CharT, class Traits, class Allocator>
auto buffer(basic_string<CharT, Traits, Allocator>& data, size_t n) -> mutable_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class CharT, class Traits, class Allocator>
auto buffer(const basic_string<CharT, Traits, Allocator>& data, size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
template<class CharT, class Traits>
auto buffer(basic_string_view<CharT, Traits> data, size_t n) -> const_buffer noexcept
creates a ark::mutable_buffer or ark::const_buffer
auto buffer_sequence_begin(const mutable_buffer& b) -> const mutable_buffer* noexcept
returns an iterator to the first buffer of ConstBufferSequence
auto buffer_sequence_begin(const const_buffer& b) -> const const_buffer* noexcept
returns an iterator to the first buffer of ConstBufferSequence
template<class C>
auto buffer_sequence_begin(C& c) -> auto noexcept
returns an iterator to the first buffer of ConstBufferSequence
template<class C>
auto buffer_sequence_begin(const C& c) -> auto noexcept
returns an iterator to the first buffer of ConstBufferSequence
auto buffer_sequence_end(const mutable_buffer& b) -> const mutable_buffer* noexcept
returns an iterator past the last buffer of BufferSequence
auto buffer_sequence_end(const const_buffer& b) -> const const_buffer* noexcept
returns an iterator past the last buffer of BufferSequence
template<class C>
auto buffer_sequence_end(C& c) -> auto noexcept
returns an iterator past the last buffer of BufferSequence
template<class C>
auto buffer_sequence_end(const C& c) -> auto noexcept
returns an iterator past the last buffer of BufferSequence
template<class ConstBufferSequence>
auto buffer_size(const ConstBufferSequence& buffers) -> size_t noexcept
returns the sum size of a ConstBufferSequence
template<class MutableBufferSequence, class ConstBufferSequence>
auto buffer_copy(const MutableBufferSequence& dest, const ConstBufferSequence& source, size_t max_size) -> size_t
copy the underlying bytes from one buffer to another
template<typename T>
auto co_async(task<T> tsk) -> future<T> noexcept
start the task as another coroutine task series.
auto transfer_all() -> auto constexpr noexcept
returns a CompletionCondition which denotes transfering until all bytes in provided buffer is done.
auto transfer_at_least(size_t n) -> auto noexcept
returns a CompletionCondition which denotes transfering at least n bytes, or until all bytes in provided buffer is done.
auto transfer_exactly(size_t n) -> auto noexcept
returns a CompletionCondition which denotes transfering exactly n bytes, or until all bytes in provided buffer is done.

Variables

template<typename T>
bool is_mutable_buffer_sequence_v constexpr
helper for is_mutable_buffer_sequence::value
template<typename T>
bool is_const_buffer_sequence_v constexpr
helper for is_const_buffer_sequence::value