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.


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 immediately
Community 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/full cfunction source
(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 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