Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 8 additions & 48 deletions include/boost/corosio/native/detail/epoll/epoll_acceptor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,22 @@

#if BOOST_COROSIO_HAS_EPOLL

#include <boost/corosio/tcp_acceptor.hpp>
#include <boost/capy/ex/executor_ref.hpp>
#include <boost/corosio/detail/intrusive.hpp>

#include <boost/corosio/native/detail/reactor/reactor_acceptor.hpp>
#include <boost/corosio/native/detail/epoll/epoll_op.hpp>

#include <memory>
#include <boost/capy/ex/executor_ref.hpp>

namespace boost::corosio::detail {

class epoll_acceptor_service;

/// Acceptor implementation for epoll backend.
class epoll_acceptor final
: public tcp_acceptor::implementation
, public std::enable_shared_from_this<epoll_acceptor>
, public intrusive_list<epoll_acceptor>::node
: public reactor_acceptor<
epoll_acceptor,
epoll_acceptor_service,
epoll_op,
epoll_accept_op,
descriptor_state>
{
friend class epoll_acceptor_service;

Expand All @@ -44,47 +43,8 @@ class epoll_acceptor final
std::error_code*,
io_object::implementation**) override;

int native_handle() const noexcept
{
return fd_;
}
endpoint local_endpoint() const noexcept override
{
return local_endpoint_;
}
bool is_open() const noexcept override
{
return fd_ >= 0;
}
void cancel() noexcept override;

std::error_code set_option(
int level,
int optname,
void const* data,
std::size_t size) noexcept override;
std::error_code
get_option(int level, int optname, void* data, std::size_t* size)
const noexcept override;
void cancel_single_op(epoll_op& op) noexcept;
void close_socket() noexcept;
void set_local_endpoint(endpoint ep) noexcept
{
local_endpoint_ = ep;
}

epoll_acceptor_service& service() noexcept
{
return svc_;
}

epoll_accept_op acc_;
descriptor_state desc_state_;

private:
epoll_acceptor_service& svc_;
int fd_ = -1;
endpoint local_endpoint_;
};

} // namespace boost::corosio::detail
Expand Down
Loading
Loading