Class: ForeignActor::ReactorMailbox

Inherits:
Celluloid::Mailbox
  • Object
show all
Defined in:
lib/foreign_actor/reactor_mailbox.rb

Instance Method Summary collapse

Constructor Details

#initializeReactorMailbox

Returns a new instance of ReactorMailbox.



4
5
6
7
# File 'lib/foreign_actor/reactor_mailbox.rb', line 4

def initialize(*)
  super
  @actor = nil
end

Instance Method Details

#<<(message) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/foreign_actor/reactor_mailbox.rb', line 9

def <<(message)
  super
  if @actor
    if message.is_a?(Celluloid::TerminationRequest)
      @actor.subject.suspend_reactor('exit')
    else
      @actor.subject.suspend_reactor()
    end
  end
end

#receive(timeout = nil, &block) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/foreign_actor/reactor_mailbox.rb', line 20

def receive(timeout = nil, &block)
  @actor ||= Thread.current[:celluloid_actor]
  if @messages.empty?
    @actor.subject.wakeup_reactor()
  end
  super
end