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>;
|
|||
|
}
|