38#define FDE_READ 0x0001
39#define FDE_WRITE 0x0002
40#define FDE_ERROR 0x0004
41#define FDE_TIMEOUT 0x0008
45typedef void (*
fd_func)(
int fd,
unsigned events,
void *userdata);
63 std::optional<std::chrono::milliseconds>
timeout;
66 std::variant<fd_func, fd_func2>
func;
100 void HandleEvents(
const std::vector<fdevent_event>& events);
121 void Run(
std::function<
void()> fn);
Definition: unique_fd.h:61
unique_fd fdevent_release(fdevent *fde)
Definition: fdevent.cpp:236
void invoke_fde(struct fdevent *fde, unsigned events)
Definition: fdevent.cpp:38
void fdevent_destroy(fdevent *fde)
Definition: fdevent.cpp:240
void fdevent_run_on_looper(std::function< void()> fn)
Definition: fdevent.cpp:260
void fdevent_terminate_loop()
Definition: fdevent.cpp:276
fdevent * fdevent_create(int fd, fd_func func, void *arg)
Definition: fdevent.cpp:226
size_t fdevent_installed_count()
Definition: fdevent.cpp:280
void fdevent_check_not_looper()
Definition: fdevent.cpp:272
std::string dump_fde(const fdevent *fde)
Definition: fdevent.cpp:48
void fdevent_add(fdevent *fde, unsigned events)
Definition: fdevent.cpp:248
void(* fd_func2)(struct fdevent *fde, unsigned events, void *userdata)
Definition: fdevent.h:46
void fdevent_set(fdevent *fde, unsigned events)
Definition: fdevent.cpp:244
void fdevent_loop()
Definition: fdevent.cpp:264
void(* fd_func)(int fd, unsigned events, void *userdata)
Definition: fdevent.h:45
void fdevent_del(fdevent *fde, unsigned events)
Definition: fdevent.cpp:252
void fdevent_reset()
Definition: fdevent.cpp:284
void fdevent_check_looper()
Definition: fdevent.cpp:268
void fdevent_set_timeout(fdevent *fde, std::optional< std::chrono::milliseconds > timeout)
Definition: fdevent.cpp:256
Definition: logging.h:464
__u32 set
Definition: nl80211.h:1
std::atomic< bool > terminate_loop_
Definition: fdevent.h:132
virtual void Register(fdevent *)=0
virtual void Unregister(fdevent *)=0
virtual size_t InstalledCount()=0
std::mutex run_queue_mutex_
Definition: fdevent.h:138
unique_fd Destroy(fdevent *fde)
Definition: fdevent.cpp:91
void Del(fdevent *fde, unsigned events)
Definition: fdevent.cpp:115
uint64_t fdevent_id_
Definition: fdevent.h:137
std::set< fdevent * > fdevent_set_
Definition: fdevent.h:141
void FlushRunQueue() EXCLUDES(run_queue_mutex_)
Definition: fdevent.cpp:166
void CheckNotLooperThread() const
Definition: fdevent.cpp:189
virtual ~fdevent_context()=default
std::optional< std::chrono::milliseconds > CalculatePollDuration()
Definition: fdevent.cpp:127
void CheckLooperThread() const
Definition: fdevent.cpp:183
virtual void Set(fdevent *fde, unsigned events)=0
void SetTimeout(fdevent *fde, std::optional< std::chrono::milliseconds > timeout)
Definition: fdevent.cpp:120
std::map< int, fdevent > installed_fdevents_
Definition: fdevent.h:134
void TerminateLoop()
Definition: fdevent.cpp:204
fdevent * Create(unique_fd fd, std::variant< fd_func, fd_func2 > func, void *arg)
Definition: fdevent.cpp:63
std::optional< uint64_t > looper_thread_id_
Definition: fdevent.h:131
void HandleEvents(const std::vector< fdevent_event > &events)
Definition: fdevent.cpp:154
void Add(fdevent *fde, unsigned events)
Definition: fdevent.cpp:110
void Run(std::function< void()> fn)
Definition: fdevent.cpp:195
virtual void Interrupt()=0
std::deque< std::function< void()> > run_queue_ GUARDED_BY(run_queue_mutex_)
fdevent_event(fdevent *pfde, unsigned ev)
Definition: fdevent.h:54
fdevent * fde
Definition: fdevent.h:52
unsigned events
Definition: fdevent.h:53
std::optional< std::chrono::milliseconds > timeout
Definition: fdevent.h:63
std::variant< fd_func, fd_func2 > func
Definition: fdevent.h:66
uint16_t state
Definition: fdevent.h:62
uint64_t id
Definition: fdevent.h:58
void * arg
Definition: fdevent.h:67
unique_fd fd
Definition: fdevent.h:60
std::chrono::steady_clock::time_point last_active
Definition: fdevent.h:64
#define EXCLUDES(...)
Definition: thread_annotations.h:74