67 lines
926 B
C++
67 lines
926 B
C++
#include "matador/net/fdset.hpp"
|
|
|
|
namespace matador {
|
|
|
|
fdset::fdset()
|
|
{
|
|
reset();
|
|
}
|
|
|
|
fdset::fdset(fdset&& x) noexcept
|
|
: max_fd_set_(std::move(x.max_fd_set_))
|
|
, fd_set_(x.fd_set_) {}
|
|
|
|
fdset& fdset::operator=(fdset&& x) noexcept
|
|
{
|
|
max_fd_set_ = std::move(x.max_fd_set_);
|
|
fd_set_ = x.fd_set_;
|
|
return *this;
|
|
}
|
|
|
|
// set all bits to zero
|
|
void fdset::reset()
|
|
{
|
|
FD_ZERO(&fd_set_);
|
|
max_fd_set_.clear();
|
|
max_fd_set_.insert(0);
|
|
}
|
|
|
|
bool fdset::is_set(socket_type fd) const
|
|
{
|
|
return FD_ISSET(fd, &fd_set_) > 0;
|
|
}
|
|
|
|
void fdset::clear(socket_type fd)
|
|
{
|
|
FD_CLR(fd, &fd_set_);
|
|
max_fd_set_.erase(fd);
|
|
}
|
|
|
|
void fdset::set(socket_type fd)
|
|
{
|
|
FD_SET(fd, &fd_set_);
|
|
max_fd_set_.insert(fd);
|
|
}
|
|
|
|
socket_type fdset::maxp1() const
|
|
{
|
|
return *max_fd_set_.begin();
|
|
}
|
|
|
|
size_t fdset::count() const
|
|
{
|
|
return max_fd_set_.size() - 1;
|
|
}
|
|
|
|
bool fdset::empty() const
|
|
{
|
|
return count() == 0;
|
|
}
|
|
|
|
fd_set* fdset::get()
|
|
{
|
|
return &fd_set_;
|
|
}
|
|
|
|
}
|