Class: Async::IO::Notification

Inherits:
Object
  • Object
show all
Defined in:
lib/async/io/notification.rb

Overview

A cross-reactor/process notification pipe.

Instance Method Summary collapse

Constructor Details

#initializeNotification

Returns a new instance of Notification.



27
28
29
30
31
32
33
# File 'lib/async/io/notification.rb', line 27

def initialize
	pipe = ::IO.pipe
	
	# We could call wait and signal from different reactors/threads/processes, so we don't create wrappers here, because they are not thread safe by design.
	@input = pipe.first
	@output = pipe.last
end

Instance Method Details

#closeObject



35
36
37
38
# File 'lib/async/io/notification.rb', line 35

def close
	@input.close
	@output.close
end

#signalvoid

This method returns an undefined value.

Signal to a given task that it should resume operations.



52
53
54
55
56
57
# File 'lib/async/io/notification.rb', line 52

def signal
	wrapper = Async::IO::Generic.new(@output)
	wrapper.write(".")
ensure
	wrapper.reactor = nil
end

#waitObject

Wait for signal to be called.

Returns:

  • (Object)


42
43
44
45
46
47
48
# File 'lib/async/io/notification.rb', line 42

def wait
	wrapper = Async::IO::Generic.new(@input)
	wrapper.read(1)
ensure
	# Remove the wrapper from the reactor.
	wrapper.reactor = nil
end