Core LibraryalphaAPI Reference

Choose documentation 3

v0.1.0.alpha.3

Current version

v0.1.0.alpha.3
English

Prerelease This site documents an alpha of libtmux. Its structure, URLs and APIs are subject to change.

method libtmux-ruby v0.1.0.alpha.3

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 ) -> ::LibTmux::CommandResult

Public owner: LibTmux::Server#wait_for

Description#

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 d8ce4bbee0ca7748a81929f81f7d8d07f8c51267

Save 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: true
begin
# docs:begin main
require "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 do
scope.server.run(["wait-for", "-S", "ready", ";", "wait-for", "held"], timeout: 5)
rescue LibTmux::Cancelled => error
error
end
scope.server.wait_for("ready", timeout: 5)
waiting.cancel
failure = waiting.wait
puts "request: #{failure.class}"
puts "delivery: #{failure.delivery}"
end
end.wait
end
# docs:end main
rescue StandardError => error
warn "#{error.class}: #{error.message}"
exit 1
end

Install 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.rb

Expected output:

request: LibTmux::Cancelled
delivery: possibly_sent
Parameters
Esc

Type to search.

Reference preview Open reference