Class: Dynflow::Connectors::Database::Core
- Inherits:
-
Actor
- Object
- Concurrent::Actor::Context
- Actor
- Dynflow::Connectors::Database::Core
show all
- Defined in:
- lib/dynflow/connectors/database.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Actor
#behaviour_definition, #finish_termination, #start_termination, #terminating?
#on_message
#log
Constructor Details
#initialize(connector, polling_interval) ⇒ Core
Returns a new instance of Core.
48
49
50
51
52
53
54
|
# File 'lib/dynflow/connectors/database.rb', line 48
def initialize(connector, polling_interval)
@connector = connector
@world = nil
@executor_round_robin = RoundRobin.new
@stopped = false
@polling_interval = polling_interval
end
|
Instance Attribute Details
#polling_interval ⇒ Object
Returns the value of attribute polling_interval.
46
47
48
|
# File 'lib/dynflow/connectors/database.rb', line 46
def polling_interval
@polling_interval
end
|
Instance Method Details
#check_inbox ⇒ Object
81
82
83
84
|
# File 'lib/dynflow/connectors/database.rb', line 81
def check_inbox
return unless @world
receive_envelopes
end
|
#handle_envelope(envelope) ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/dynflow/connectors/database.rb', line 86
def handle_envelope(envelope)
world_id = find_receiver(envelope)
if world_id == @world.id
if @stopped
log(Logger::ERROR, "Envelope #{envelope} received for stopped world")
else
@connector.receive(@world, envelope)
end
else
send_envelope(update_receiver_id(envelope, world_id))
end
end
|
#periodic_check_inbox ⇒ Object
76
77
78
79
|
# File 'lib/dynflow/connectors/database.rb', line 76
def periodic_check_inbox
self << :check_inbox
@world.clock.ping(self, polling_interval, :periodic_check_inbox) unless @stopped
end
|
#start_listening(world) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/dynflow/connectors/database.rb', line 60
def start_listening(world)
@world = world
@stopped = false
postgres_listen_start
self << :periodic_check_inbox
end
|
#stop_listening ⇒ Object
71
72
73
74
|
# File 'lib/dynflow/connectors/database.rb', line 71
def stop_listening
@stopped = true
postgres_listen_stop
end
|
#stop_receiving_new_work ⇒ Object
67
68
69
|
# File 'lib/dynflow/connectors/database.rb', line 67
def stop_receiving_new_work
@world.coordinator.deactivate_world(@world.registered_world)
end
|
#stopped? ⇒ Boolean
56
57
58
|
# File 'lib/dynflow/connectors/database.rb', line 56
def stopped?
!!@stopped
end
|