This PR introduces UDP socket support using the LibUV library, enabling asynchronous I/O operations with it.
39 lines
No EOL
850 B
C++
39 lines
No EOL
850 B
C++
/*
|
|
Copyright (c) 2024 Lean FRO, LLC. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
Author: Markus Himmel, Sofia Rodrigues
|
|
*/
|
|
#include <pthread.h>
|
|
#include "runtime/libuv.h"
|
|
#include "runtime/object.h"
|
|
|
|
namespace lean {
|
|
|
|
#ifndef LEAN_EMSCRIPTEN
|
|
#include <uv.h>
|
|
|
|
extern "C" void initialize_libuv() {
|
|
initialize_libuv_timer();
|
|
initialize_libuv_tcp_socket();
|
|
initialize_libuv_udp_socket();
|
|
initialize_libuv_loop();
|
|
|
|
lthread([]() { event_loop_run_loop(&global_ev); });
|
|
}
|
|
|
|
/* Lean.libUVVersionFn : Unit → Nat */
|
|
extern "C" LEAN_EXPORT lean_obj_res lean_libuv_version(lean_obj_arg o) {
|
|
return lean_unsigned_to_nat(uv_version());
|
|
}
|
|
|
|
#else
|
|
|
|
extern "C" void initialize_libuv() {}
|
|
|
|
extern "C" LEAN_EXPORT lean_obj_res lean_libuv_version(lean_obj_arg o) {
|
|
return lean_box(0);
|
|
}
|
|
|
|
#endif
|
|
} |