package async_extra
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=782a955450c0cbd3e978fef4d4b77422b1f15dac29ddd5298642cedb48520264
md5=e645c6df8dff3da2e56205b3c95f920c
doc/async_extra.async_bus/Async_bus/index.html
Module Async_busSource
Async operations on Core_kernel.Bus.
val pipe1_exn :
('a -> unit, [> Core_kernel.read ]) Bus.t ->
Core_kernel.Source_code_position.t ->
'a Async_kernel.Pipe.Reader.tpipe1_exn t returns a pipe of updates from t by subscribing to t. Closing the pipe unsubscribes from t. Closing t closes the pipe. pipe1_exn raises in the same circumstances as subscribe_exn.
val first_exn :
?stop:unit Async_kernel.Deferred.t ->
('c, [> Core_kernel.read ]) Bus.t ->
Core_kernel.Source_code_position.t ->
('c, 'f, 'r) First_arity.t ->
f:'f ->
'r Async_kernel.Deferred.tfirst_exn here t arity ~f returns a deferred that becomes determined with value r when the first event is published to t where f returns Some r. first_exn then unsubscribes from t, ensuring that f is never called again after it returns Some. first_exn raises if it can't subscribe to the bus, i.e., if subscribe_exn raises. If f raises, then first_exn raises to the monitor in effect when first_exn was called. first_exn takes time proportional to the number of bus subscribers.
If stop is provided and becomes determined, f will not be called again, it will unsubscribe from the bus, and the deferred that was returned by first_exn will never become determined.