Class: EventMachine::SpawnedProcess

Inherits:
Object
  • Object
show all
Defined in:
lib/em/spawnable.rb

Overview

Support for Erlang-style processes.

Instance Method Summary collapse

Instance Method Details

#notify(*x) ⇒ Object Also known as: resume, run

Send a message to the spawned process



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/em/spawnable.rb', line 31

def notify *x
  me = self
  EM.next_tick {
    # A notification executes in the context of this
    # SpawnedProcess object. That makes self and notify
    # work as one would expect.
    #
    y = me.call(*x)
    if y and y.respond_to?(:pull_out_yield_block)
      a,b = y.pull_out_yield_block
      set_receiver a
      self.notify if b
    end
  }
end

#set_receiver(blk) ⇒ Object

– I know I’m missing something stupid, but the inside of class << s can’t see locally-bound values. It can see globals, though.



53
54
55
56
57
58
# File 'lib/em/spawnable.rb', line 53

def set_receiver blk
  $em______tmpglobal = blk
  class << self
    define_method :call, $em______tmpglobal.dup
  end
end