/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/coroutine/engine/poller.h
49 строк
1 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#pragma once #include <util/generic/ptr.h> #include <util/generic/vector.h> #include <util/network/socket.h> #include <util/network/pollerimpl.h> #include <util/datetime/base.h> enum class EContPoller { Default /* "default" */, Select /* "select" */, Poll /* "poll" */, Epoll /* "epoll" */, Kqueue /* "kqueue" */ }; class IPollerFace { public: struct TChange { SOCKET Fd; void* Data; ui16 Flags; }; struct TEvent { void* Data; int Status; ui16 Filter; }; using TEvents = TVector<TEvent>; virtual ~IPollerFace() { } void Set(void* ptr, SOCKET fd, ui16 flags) { const TChange c = {fd, ptr, flags}; Set(c); } virtual void Set(const TChange& change) = 0; virtual void Wait(TEvents& events, TInstant deadLine) = 0; virtual EContPoller PollEngine() const = 0; static THolder<IPollerFace> Default(); static THolder<IPollerFace> Construct(TStringBuf name); static THolder<IPollerFace> Construct(EContPoller poller); };