mirror of
https://github.com/TokTok/c-toxcore
synced 2026-05-26 01:04:21 +00:00
2f87ac67b0
- `Ev` interface in `toxcore/ev.h` and `toxcore/ev.c`. - System-specific event loop backends (epoll, poll, win32) in `toxcore/os_event.c`. Performance Benchmarks (epoll backend): | Sockets (N) | Active (M) | Time (ns) | Time/Active (ns) | |------------:|-----------:|----------:|-----------------:| | 8 | 1 | 438 | 438 | | 64 | 1 | 438 | 438 | | 512 | 1 | 443 | 443 | | 1024 | 1 | 442 | 442 | | 1024 | 10 | 947 | 95 | | 1024 | 100 | 6,268 | 63 | | 1024 | 1024 | 61,875 | 60 |
48 lines
965 B
C
48 lines
965 B
C
/* SPDX-License-Identifier: GPL-3.0-or-later
|
|
* Copyright © 2026 The TokTok team.
|
|
*/
|
|
|
|
#include "ev.h"
|
|
|
|
#include <assert.h>
|
|
|
|
#include "ccompat.h"
|
|
|
|
bool ev_add(Ev *ev, Socket sock, Ev_Events events, void *data)
|
|
{
|
|
assert(ev != nullptr);
|
|
return ev->funcs->add_callback(ev->user_data, sock, events, data);
|
|
}
|
|
|
|
bool ev_mod(Ev *ev, Socket sock, Ev_Events events, void *data)
|
|
{
|
|
assert(ev != nullptr);
|
|
return ev->funcs->mod_callback(ev->user_data, sock, events, data);
|
|
}
|
|
|
|
bool ev_del(Ev *ev, Socket sock)
|
|
{
|
|
assert(ev != nullptr);
|
|
return ev->funcs->del_callback(ev->user_data, sock);
|
|
}
|
|
|
|
int32_t ev_run(Ev *ev, Ev_Result *results, uint32_t max_results, int32_t timeout_ms)
|
|
{
|
|
assert(ev != nullptr);
|
|
|
|
if (max_results == 0) {
|
|
return 0;
|
|
}
|
|
|
|
return ev->funcs->run_callback(ev->user_data, results, max_results, timeout_ms);
|
|
}
|
|
|
|
void ev_kill(Ev *ev)
|
|
{
|
|
if (ev == nullptr) {
|
|
return;
|
|
}
|
|
|
|
ev->funcs->kill_callback(ev);
|
|
}
|