#include <folly/io/ShutdownSocketSet.h>
#include <chrono>
#include <thread>
#include <glog/logging.h>
#include <folly/FileUtil.h>
#include <folly/net/NetOps.h>
#include <folly/portability/Sockets.h>
namespace folly {
handle_t;
static constexpr auto handle_tag = …;
static constexpr auto invalid_pos = …;
template <typename Cap>
static size_t cap_(std::false_type, Cap) { … }
template <typename Cap, typename H = handle_t>
static size_t cap_(std::true_type, Cap cap) { … }
static size_t cap(size_t capacity) { … }
template <typename Data>
static size_t pos_(std::false_type, Data) { … }
template <typename Data>
static size_t pos_(std::true_type, Data data) { … }
static size_t pos(NetworkSocket fd) { … }
template <typename Pos>
static NetworkSocket at_(std::false_type, Pos) { … }
template <typename Pos>
static NetworkSocket at_(std::true_type, Pos p) { … }
static NetworkSocket at(size_t p) { … }
ShutdownSocketSet::ShutdownSocketSet(size_t capacity)
: … { … }
void ShutdownSocketSet::add(NetworkSocket fd) { … }
void ShutdownSocketSet::remove(NetworkSocket fd) { … }
int ShutdownSocketSet::close(NetworkSocket fd) { … }
void ShutdownSocketSet::shutdown(NetworkSocket fd, bool abortive) { … }
void ShutdownSocketSet::shutdownAll(bool abortive) { … }
void ShutdownSocketSet::doShutdown(NetworkSocket fd, bool abortive) { … }
}