Class: Carnivore::Source::Actor

Inherits:
Carnivore::Source show all
Defined in:
lib/carnivore-actor/actor.rb

Overview

Actor based Carnivore source

Instance Method Summary collapse

Instance Method Details

#receive(*args) ⇒ Array<Object>

Receive messages

Returns:

  • (Array<Object>)


20
21
22
23
24
25
26
27
28
# File 'lib/carnivore-actor/actor.rb', line 20

def receive(*args)
  new_message = wait(:new_message)
  begin
    new_message = MultiJson.load(new_message)
    new_message.respond_to?(:to_smash) ? new_message.to_smash : new_message
  rescue MultiJson::ParseError
    new_message
  end
end

#setup(*args) ⇒ TrueClass

Initialize source storage

Returns:

  • (TrueClass)


13
14
15
# File 'lib/carnivore-actor/actor.rb', line 13

def setup(*args)
  true
end

#transmit(payload, *args) ⇒ TrueClass

Note:

if ‘:remote_name` exists in arguments, transmission is made to “remote” source instead of self (jackal hack)

Send messages

Parameters:

  • payload (Object)

Returns:

  • (TrueClass)


36
37
38
39
40
41
42
43
44
# File 'lib/carnivore-actor/actor.rb', line 36

def transmit(payload, *args)
  if(arguments[:remote_name])
    Carnivore::Supervisor.supervisor[arguments[:remote_name]].async.transmit(payload)
    true
  else
    signal(:new_message, MultiJson.dump(payload))
    true
  end
end