41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Workers
|
|
module Daemons
|
|
class Upstream < Base
|
|
def run
|
|
Engine.all.map { |e| Thread.new { process(e) } }.map(&:join)
|
|
end
|
|
|
|
def process(engine)
|
|
EM.synchrony do
|
|
upstream = Peatio::Upstream.registry[engine.driver]
|
|
engine.markets.each do |market|
|
|
target = if market.data.present? && market.data['target'].present?
|
|
market.data['target']
|
|
else
|
|
market.id
|
|
end
|
|
|
|
configs = engine.data.merge('source' => market.id, 'amqp' => ::AMQP::Queue, 'target' => target)
|
|
|
|
upstream.new(configs).ws_connect
|
|
Rails.logger.info "Upstream with driver #{engine.driver} for #{market.id} started"
|
|
rescue StandardError => e
|
|
report_exception(e)
|
|
next
|
|
end
|
|
rescue Peatio::AdapterRegistry::NotRegisteredAdapterError => e
|
|
report_exception(e)
|
|
end
|
|
end
|
|
|
|
def stop
|
|
puts 'Shutting down'
|
|
@shutdown = true
|
|
exit(42)
|
|
end
|
|
end
|
|
end
|
|
end
|