Module: Zoidberg::Shell::InstanceMethods
- Defined in:
- lib/zoidberg/shell.rb
Instance Method Summary collapse
-
#_zoidberg_proxy(oxy = nil) ⇒ NilClass, Zoidberg::Proxy
(also: #current_self, #current_actor)
Provide access to the proxy instance from the real instance.
-
#_zoidberg_signal_interface ⇒ Object
Initialize the signal instance if not.
-
#after(interval) { ... } ⇒ Timer
Register an action to run after interval.
- #alive? ⇒ TrueClass, FalseClass
-
#broadcast(name, arg = nil) ⇒ TrueClass, FalseClass
Broadcast a signal to all waiters.
-
#every(interval) { ... } ⇒ Timer
Register a recurring action.
-
#link(inst) ⇒ TrueClass
Link given shelled instance to current shelled instance to handle any exceptions raised from async actions.
-
#signal(name, arg = nil) ⇒ TrueClass, FalseClass
Send a signal to single waiter.
- #timer ⇒ Timer
-
#wait_for(name) ⇒ Object
(also: #wait)
Wait for a given signal.
Instance Method Details
#_zoidberg_proxy(oxy = nil) ⇒ NilClass, Zoidberg::Proxy Also known as: current_self, current_actor
Provide access to the proxy instance from the real instance
279 280 281 282 283 284 285 286 287 288 |
# File 'lib/zoidberg/shell.rb', line 279 def _zoidberg_proxy(oxy=nil) if(oxy) @_zoidberg_proxy = oxy end if(@_zoidberg_proxy) @_zoidberg_proxy else Lazy.new(self.class){ @_zoidberg_proxy } end end |
#_zoidberg_signal_interface ⇒ Object
Initialize the signal instance if not
211 212 213 214 215 216 |
# File 'lib/zoidberg/shell.rb', line 211 def _zoidberg_signal_interface unless(@_zoidberg_signal) @_zoidberg_signal = ::Zoidberg::Signal.new(:cache_signals => self.class.option?(:cache_signals)) end @_zoidberg_signal end |
#after(interval) { ... } ⇒ Timer
Register an action to run after interval
240 241 242 |
# File 'lib/zoidberg/shell.rb', line 240 def after(interval, &block) timer.after(interval, &block) end |
#alive? ⇒ TrueClass, FalseClass
271 272 273 |
# File 'lib/zoidberg/shell.rb', line 271 def alive? !respond_to?(:_zoidberg_destroyed) end |
#broadcast(name, arg = nil) ⇒ TrueClass, FalseClass
Broadcast a signal to all waiters
257 258 259 |
# File 'lib/zoidberg/shell.rb', line 257 def broadcast(name, arg=nil) current_self._zoidberg_signal_interface.broadcast(*[name, arg].compact) end |
#every(interval) { ... } ⇒ Timer
Register a recurring action
231 232 233 |
# File 'lib/zoidberg/shell.rb', line 231 def every(interval, &block) timer.every(interval, &block) end |
#link(inst) ⇒ TrueClass
Link given shelled instance to current shelled instance to handle any exceptions raised from async actions
297 298 299 300 |
# File 'lib/zoidberg/shell.rb', line 297 def link(inst) inst._zoidberg_link = current_self true end |
#signal(name, arg = nil) ⇒ TrueClass, FalseClass
Send a signal to single waiter
249 250 251 |
# File 'lib/zoidberg/shell.rb', line 249 def signal(name, arg=nil) _zoidberg_signal_interface.signal(*[name, arg].compact) end |
#timer ⇒ Timer
219 220 221 222 223 224 |
# File 'lib/zoidberg/shell.rb', line 219 def timer unless(@_zoidberg_timer) @_zoidberg_timer = Timer.new end @_zoidberg_timer end |
#wait_for(name) ⇒ Object Also known as: wait
Wait for a given signal
265 266 267 |
# File 'lib/zoidberg/shell.rb', line 265 def wait_for(name) defer{ current_self._zoidberg_signal_interface.wait_for(name) } end |