Server.wait_for
Retiring the client cannot remove a dispatched waiter from tmux's queue.
Source and package
- Qualified name
-
LibTmux:: Async:: Server#wait _for - Module
- LibTmux::Async
- Declared in
- Server
- Package
- libtmux-async
- Source
- gems/libtmux/lib/libtmux/operations.rb
- def wait_for: ( ::String, ?action: :wait | :signal | :lock | :unlock, ?timeout: ::Numeric, ?cancel: untyped ) -> ::Lib
Tmux:: Command Result -
Public owner:
LibTmux::Server#wait_forDescription#
Behavior contract: Wait channels.
Examples#
Cancel an Async task whose tmux request is waiting and read the delivery evidence on the Cancelled error. Use Ruby 4.0.7, Bundler, Git and tmux 3.3a or newer on Unix, with /bin/cat and /bin/sh available. In an empty directory, fetch the documented library revision:
Terminal window $ git clone https://github.com/libtmux/libtmux-ruby.git libtmux-source && \git -C libtmux-source checkout d8ce4bbee0ca7748a81929f81f7d8d07f8c51267Save this dependency file as Gemfile:
source "https://rubygems.org"gem "libtmux-async", path: "libtmux-source/gems/libtmux-async"Save this complete program as async_run.rb. Its Server.start block owns a private tmux server and stops it on exit, including after an error. View source
# frozen_string_literal: truebegin# docs:begin mainrequire "libtmux"require "libtmux/async"LibTmux::Server.start do |server|server.new_session(name: "work", command: ["/bin/cat"])Async do |parent|LibTmux::Async.open(parent: parent, server: server) do |scope|waiting = parent.async doscope.server.run(["wait-for", "-S", "ready", ";", "wait-for", "held"], timeout: 5)rescue LibTmux::Cancelled => errorerrorendscope.server.wait_for("ready", timeout: 5)waiting.cancelfailure = waiting.waitputs "request: #{failure.class}"puts "delivery: #{failure.delivery}"endend.waitend# docs:end mainrescue StandardError => errorwarn "#{error.class}: #{error.message}"exit 1endInstall the runtime dependencies and run the saved program. An operation or cleanup error makes it exit unsuccessfully:
Terminal window $ bundle config set --local path vendor/bundle && \bundle install --jobs 2 && \bundle exec ruby async_run.rbExpected output:
request: LibTmux::Cancelleddelivery: possibly_sent