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:



257
258
259
260
261
262
# File 'lib/zoidberg/shell.rb', line 257

def _zoidberg_proxy(oxy=nil)
  if(oxy)
    @_zoidberg_proxy = oxy
  end
  @_zoidberg_proxy
end

#_zoidberg_signal_interfaceObject

Initialize the signal instance if not



189
190
191
192
193
194
# File 'lib/zoidberg/shell.rb', line 189

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:



218
219
220
# File 'lib/zoidberg/shell.rb', line 218

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

#alive?TrueClass, FalseClass

Returns:

  • (TrueClass, FalseClass)


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

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)


235
236
237
# File 'lib/zoidberg/shell.rb', line 235

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:



209
210
211
# File 'lib/zoidberg/shell.rb', line 209

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)


271
272
273
274
# File 'lib/zoidberg/shell.rb', line 271

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)


227
228
229
# File 'lib/zoidberg/shell.rb', line 227

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

#timerTimer

Returns:



197
198
199
200
201
202
# File 'lib/zoidberg/shell.rb', line 197

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)


243
244
245
# File 'lib/zoidberg/shell.rb', line 243

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