21#ifndef IO_CONCEPTS_HPP 
   22#define IO_CONCEPTS_HPP 
   26#include "platforms/posix/concepts_posix.hpp"  
   28#include "io/socket/detail/socket.hpp" 
   39enum struct execution_trigger : std::uint8_t;
 
   50template <
typename Allocator>
 
   52    requires(Allocator alloc, 
typename Allocator::value_type *ptr) {
 
   53      { alloc.allocate(0) } -> std::same_as<
decltype(ptr)>;
 
   54      { alloc.deallocate(ptr, 0) } -> std::same_as<void>;
 
 
   60  std::ranges::data(buf);
 
   61  std::ranges::size(buf);
 
 
   74  typename T::event_type;
 
   75  typename T::interval_type;
 
   76  typename T::size_type;
 
   77  typename T::template is_eager_t<T>;
 
   78  T::template is_eager_v<T>;
 
 
   87  requires std::is_invocable_v<Fn>;
 
   88  typename std::invoke_result_t<Fn>::value_type;
 
   89  requires std::is_same_v<
 
   90      std::invoke_result_t<Fn>,
 
   91      std::optional<typename std::invoke_result_t<Fn>::value_type>>;
 
 
  105  typename T::demultiplexer;
 
  106  typename T::template sender<
decltype([]() -> std::optional<int> {
 
  109  mux.set(std::shared_ptr<socket::socket_handle>{},
 
  110          execution::execution_trigger{},
 
  111          []() -> std::optional<int> { 
return std::nullopt; });
 
  112  mux.wait_for(
typename T::interval_type{});
 
 
  119template <
typename Socket>
 
  121  requires std::is_constructible_v<Socket, socket::native_socket_type>;
 
  122  static_cast<socket::native_socket_type
>(Socket{});
 
 
  129template <
typename Dialog>
 
  131  typename Dialog::executor_type;
 
 
  140template <
typename Message>
 
  142    requires(Message msg) { 
static_cast<socket::socket_message_type
>(msg); };
 
 
A concept that checks if a type is an allocator.
Definition concepts.hpp:51
Concept for a completion handler.
Definition concepts.hpp:86
Concept for types that behave like a dialog.
Definition concepts.hpp:130
Concept for types that behave like a socket message.
Definition concepts.hpp:141
Concept for a multiplexer.
Definition concepts.hpp:103
Concept for a multiplexer tag.
Definition concepts.hpp:73
A concept that describes a scatter/gather like buffer object.
Definition concepts.hpp:59
Concept for types that behave like a socket.
Definition concepts.hpp:120
This file defines various macros that configure AsyncBerkeley.
The io namespace contains all the functions and classes for the I/O library.
Definition executor.hpp:33