Janet 1.15.0-2795e8a Documentation
(Other Versions: 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 (asynchrnous) IO and a fiber based event loop.


ev/call ev/cancel ev/capacity ev/chan 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/take ev/thread 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
(ev/cancel fiber err)

Cancel a suspended fiber in the event loop. Differs from cancel in that it returns the canceled fiber immediately
Community Examples

ev/capacity cfunction
(ev/capacity channel)

Get the number of items a channel will store before blocking writers.
Community Examples

ev/chan cfunction
(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/chunk cfunction
(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
(ev/close stream)

Close a stream. This should be the same as calling (:close stream) for all streams.
Community Examples

ev/count cfunction
(ev/count channel)

Get the number of items currently waiting in a channel.
Community Examples

ev/deadline cfunction
(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/full cfunction
(ev/full channel)

Check if a channel is full or not.
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
(ev/give channel value)

Write a value to a channel, suspending the current fiber if the channel is full.
Community Examples

ev/give-supervisor cfunction
(ev/give-supervsior 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
(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 well 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
(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
(ev/rselect & clauses)

Similar to ev/select, but will try clauses in a random order for fairness.
Community Examples

ev/select cfunction
(ev/select & clauses)

Block until the first of several channel operations occur. Returns a tuple of the form [:give chan] or [:take chan x], where a :give tuple is the result of a write and :take tuple is the result of a write. 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.
Community Examples

ev/sleep cfunction
(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/take cfunction
(ev/take channel)

Read from a channel, suspending the current fiber if no value is available.
Community Examples

ev/thread cfunction
(ev/thread fiber &opt value flags)

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. The the final result.
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
(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