Module: Zoidberg::Shell::InstanceMethods

Defined in:
lib/zoidberg/shell.rb

Instance Method Summary collapse

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

Parameters:

Returns:



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_interfaceObject

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

Parameters:

  • interval (Numeric)

Yields:

  • action to run

Returns:



240
241
242
# File 'lib/zoidberg/shell.rb', line 240

def after(interval, &block)
  timer.after(interval, &block)
end

#alive?TrueClass, FalseClass

Returns:

  • (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

Parameters:

  • name (String, Symbol)

    name of signal

  • arg (Object) (defaults to: nil)

    optional argument to transmit

Returns:

  • (TrueClass, FalseClass)


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

Parameters:

  • interval (Numeric)

Yields:

  • action to run

Returns:



231
232
233
# File 'lib/zoidberg/shell.rb', line 231

def every(interval, &block)
  timer.every(interval, &block)
end

Link given shelled instance to current shelled instance to handle any exceptions raised from async actions

Parameters:

  • inst (Object)

Returns:

  • (TrueClass)


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

Parameters:

  • name (String, Symbol)

    name of signal

  • arg (Object) (defaults to: nil)

    optional argument to transmit

Returns:

  • (TrueClass, FalseClass)


249
250
251
# File 'lib/zoidberg/shell.rb', line 249

def signal(name, arg=nil)
  _zoidberg_signal_interface.signal(*[name, arg].compact)
end

#timerTimer

Returns:



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

Parameters:

  • name (String, Symbol)

    name of signal

Returns:

  • (Object)


265
266
267
# File 'lib/zoidberg/shell.rb', line 265

def wait_for(name)
  defer{ current_self._zoidberg_signal_interface.wait_for(name) }
end