Janet 1.17.1-e1c4fc2 Documentation
(Other Versions:
1.16.1
1.15.0
1.13.1
1.12.2
1.11.1
1.10.1
1.9.1
1.8.1
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.1
)
Event Module
Functions related to evented (asynchronous) IO and a fiber based event loop.
Index
ev/call ev/cancel ev/capacity ev/chan ev/chan-close ev/chunk ev/close ev/count ev/deadline ev/do-thread ev/full ev/gather ev/give ev/give-supervisor ev/go ev/read ev/rselect ev/select ev/sleep ev/spawn ev/spawn-thread ev/take ev/thread ev/thread-chan ev/with-deadline ev/write
ev/call function source
(ev/call f & args) Call a function asynchronously. Returns a fiber that is scheduled to run the function.Community Examples
ev/cancel cfunction source
(ev/cancel fiber err) Cancel a suspended fiber in the event loop. Differs from cancel in that it returns the canceled fiber immediatelyCommunity Examples
ev/capacity cfunction source
(ev/capacity channel) Get the number of items a channel will store before blocking writers.Community Examples
ev/chan cfunction source
(ev/chan &opt capacity) Create a new channel. capacity is the number of values to queue before blocking writers, defaults to 0 if not provided. Returns a new channel.Community Examples
ev/chan-close cfunction source
(ev/chan-close chan) Close a channel. A closed channel will cause all pending reads and writes to return nil. Returns the channel.Community Examples
ev/chunk cfunction source
(ev/chunk stream n &opt buffer timeout) Same as ev/read, but will not return early if less than n bytes are available. If an end of stream is reached, will also return early with the collected bytes.Community Examples
ev/close cfunction source
(ev/close stream) Close a stream. This should be the same as calling (:close stream) for all streams.Community Examples
ev/count cfunction source
(ev/count channel) Get the number of items currently waiting in a channel.Community Examples
ev/deadline cfunction source
(ev/deadline sec &opt tocancel tocheck) Set a deadline for a fiber `tocheck`. If `tocheck` is not finished after `sec` seconds, `tocancel` will be canceled as with `ev/cancel`. If `tocancel` and `tocheck` are not given, they default to `(fiber/root)` and `(fiber/current)` respectively. Returns `tocancel`.Community Examples
ev/do-thread macro source
(ev/do-thread & body) Run some code in a new thread. Suspends the current fiber until the thread is complete, and evaluates to nil.Community Examples
ev/gather macro source
(ev/gather & bodies) Run a number of fibers in parallel on the event loop, and join when they complete. Returns the gathered results in an array.Community Examples
ev/give cfunction source
(ev/give channel value) Write a value to a channel, suspending the current fiber if the channel is full. Returns the channel if the write succeeded, nil otherwise.Community Examples
ev/give-supervisor cfunction source
(ev/give-supervisor tag & payload) Send a message to the current supervior channel if there is one. The message will be a tuple of all of the arguments combined into a single message, where the first element is tag. By convention, tag should be a keyword indicating the type of message. Returns nil.Community Examples
ev/go cfunction source
(ev/go fiber &opt value supervisor) Put a fiber on the event loop to be resumed later. Optionally pass a value to resume with, otherwise resumes with nil. Returns the fiber. An optional `core/channel` can be provided as a supervisor. When various events occur in the newly scheduled fiber, an event will be pushed to the supervisor. If not provided, the new fiber will inherit the current supervisor.Community Examples
ev/read cfunction source
(ev/read stream n &opt buffer timeout) Read up to n bytes into a buffer asynchronously from a stream. `n` can also be the keyword `:all` to read into the buffer until end of stream. Optionally provide a buffer to write into as well as a timeout in seconds after which to cancel the operation and raise an error. Returns the buffer if the read was successful or nil if end-of-stream reached. Will raise an error if there are problems with the IO operation.Community Examples
ev/rselect cfunction source
(ev/rselect & clauses) Similar to ev/select, but will try clauses in a random order for fairness.Community Examples
ev/select cfunction source
(ev/select & clauses) Block until the first of several channel operations occur. Returns a tuple of the form [:give chan], [:take chan x], or [:close chan], where a :give tuple is the result of a write and :take tuple is the result of a read. Each clause must be either a channel (for a channel take operation) or a tuple [channel x] for a channel give operation. Operations are tried in order, such that the first clauses will take precedence over later clauses. Both and give and take operations can return a [:close chan] tuple, which indicates that the specified channel was closed while waiting, or that the channel was already closed.Community Examples
ev/sleep cfunction source
(ev/sleep sec) Suspend the current fiber for sec seconds without blocking the event loop.Community Examples
ev/spawn macro source
(ev/spawn & body) Run some code in a new fiber. This is shorthand for (ev/call (fn [] ;body)).Community Examples
ev/spawn-thread macro source
(ev/spawn-thread & body) Run some code in a new thread. Like `ev/do-thread`, but returns nil immediately.Community Examples
ev/take cfunction source
(ev/take channel) Read from a channel, suspending the current fiber if no value is available.Community Examples
ev/thread cfunction source
(ev/thread fiber &opt value flags supervisor) Resume a (copy of a) `fiber` in a new operating system thread, optionally passing `value` to resume with. Unlike `ev/go`, this function will suspend the current fiber until the thread is complete. If you want to run the thread without waiting for a result, pass the `:n` flag to return nil immediately. Otherwise, returns nil. Available flags: * `:n` - return immediately * `:a` - don't copy abstract registry to new thread (performance optimization) * `:c` - don't copy cfunction registry to new thread (performance optimization)Community Examples
ev/thread-chan cfunction source
(ev/thread-chan &opt limit) Create a threaded channel. A threaded channel is a channel that can be shared between threads and used to communicate between any number of operating system threads.Community Examples
ev/with-deadline macro source
(ev/with-deadline deadline & body) Run a body of code with a deadline, such that if the code does not complete before the deadline is up, it will be canceled.Community Examples
ev/write cfunction source
(ev/write stream data &opt timeout) Write data to a stream, suspending the current fiber until the write completes. Takes an optional timeout in seconds, after which will return nil. Returns nil, or raises an error if the write failed.Community Examples