2025-01-22 16:18:30 +01:00

93 lines
2.2 KiB
Haxe
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package eval.luv;
enum abstract RunMode(Int) {
/** Runs the event loop until there are no more active and referenced handles or requests. */
var DEFAULT = 0;
/** Poll for i/o once. Note that this mode blocks if there are no pending callbacks. */
var ONCE = 1;
/** Poll for i/o once but don't block if there are no pending callbacks. */
var NOWAIT = 2;
}
/**
Configuration options.
@see http://docs.libuv.org/en/v1.x/loop.html#c.uv_loop_configure
**/
enum abstract LoopOption<T>(Int) {
extern static public final sigprof:Int;
var LOOP_BLOCK_SIGNAL:LoopOption<Int> = 0;
var METRICS_IDLE_TIME:LoopOption<Result.NoData> = 1;
}
/**
Event loops.
@see https://aantron.github.io/luv/luv/Luv/Loop
Haxe event loops define an implicit cast to libuv loops. That is, you can use
`sys.thread.Thread.current().events` in any place where `eval.luv.Loop` is
expected.
**/
@:coreType abstract Loop {
@:from
static inline function fromHaxeEventLoop(events:sys.thread.EventLoop):Loop {
return events.handle;
}
/**
Returns the default event loop.
**/
static public function defaultLoop():Loop;
/**
Allocates and initializes a new event loop.
**/
static public function init():Result<Loop>;
/**
Releases any state libuv is holding on to.
Normally there's no need to do this manually.
Warning! Only call `Loop.libraryShutdown()` once.
Warning! Dont call `Loop.libraryShutdown()` when there are still event loops or I/O requests active.
Warning! Dont call libuv functions after calling `Loop.libraryShutdown()`.
**/
static public function libraryShutdown():Void;
/**
Runs an event loop.
**/
public function run(mode:RunMode):Bool;
/**
Releases resources associated with an event loop.
**/
public function close():Result<Result.NoData>;
/**
Indicates whether the loop is monitoring any activity.
**/
public function alive():Bool;
/**
Stops an event loop as soon as possible.
**/
public function stop():Void;
/**
Returns the cached loop timestamp.
**/
public function now():eval.integers.UInt64;
/**
Updates the cached loop timestamp.
**/
public function updateTime():Void;
/**
Sets the loop option.
**/
public function configure<T>(option:LoopOption<T>, value:T):Result<Result.NoData>;
}