93 lines
2.2 KiB
Haxe
93 lines
2.2 KiB
Haxe
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! Don’t call `Loop.libraryShutdown()` when there are still event loops or I/O requests active.
|
||
Warning! Don’t 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>;
|
||
} |