class Nifty::Event::Processor
Processing of events
@author Michal Kimle @attr_reader [Nifty::Backend] backend @attr_reader [Nifty::TransferMethod] transfer_method
@attr_reader [Hash] parameters
Attributes
backend[R]
error_code[R]
parameters[R]
transfer_method[R]
Public Class Methods
new(backend, transfer_method, parameters)
click to toggle source
Constructor
@param [Nifty::Backend] backend @param [Nifty::TransferMethod] transfer_method
@param [Hash] parameters
# File lib/nifty/event/processor.rb, line 17 def initialize(backend, transfer_method, parameters) @backend = backend @transfer_method = transfer_method @parameters = parameters @error_code = Nifty::ExitCodes::NO_ERROR_EXIT_CODE end
Public Instance Methods
process_events()
click to toggle source
Runs the whole event processing
# File lib/nifty/event/processor.rb, line 26 def process_events run_backend_pre run_events run_backend_post error_code end
run_backend_post()
click to toggle source
Runs backend's postprocessing routine
# File lib/nifty/event/processor.rb, line 43 def run_backend_post logger.debug('Running backend post-processing...') backend.post(parameters) if backend.respond_to? 'post' end
run_backend_pre()
click to toggle source
Runs backend's preprocessing routine
# File lib/nifty/event/processor.rb, line 36 def run_backend_pre logger.debug('Running backend pre-processing...') backend.pre(parameters) if backend.respond_to? 'pre' end
run_events()
click to toggle source
Takes care of event processing. All the events are loaded, converted and run.
# File lib/nifty/event/processor.rb, line 50 def run_events events = prepare_events logger.debug("Events ready to run: #{events}") events.each do |event, file| begin event.run # clean event's descriptor so it won't be processed again FileUtils.rm file rescue Nifty::Errors::Events::EventError => ex logger.error "Unable to process event #{event.inspect} from descriptor #{file.inspect}: #{ex.message}." @error_code = Nifty::ExitCodes::EVENT_PROCESSING_ERROR_EXIT_CODE break rescue SystemCallError => ex logger.error "Cannot delete descriptor file #{file.inspect} of already processed event: #{ex.message}." @error_code = Nifty::ExitCodes::EVENT_CLEANUP_ERROR_EXIT_CODE break end end end
Private Instance Methods
prepare_events()
click to toggle source
Prepares events for processing
# File lib/nifty/event/processor.rb, line 75 def prepare_events appliance_dir = parameters[:"appliance-dir"] logger.warn "Descriptor directory #{appliance_dir.inspect} doesn't seem to be readable" unless File.readable? appliance_dir events = {} # each event has its own descriptor Dir.glob(File.join(appliance_dir, '*.json')).sort.each do |file| begin appliance = Nifty::Event::Loader.load_appliance(file) event = Nifty::Event::Converter.convert_appliance(appliance, backend, transfer_method, parameters) events[event] = file rescue Nifty::Errors::Event::LoaderError, Nifty::Errors::BackendError => ex logger.error "Error occured while event #{file.inspect} preparation: #{ex.message}." @error_code = Nifty::ExitCodes::EVENT_PREPARATION_ERROR_EXIT_CODE break end end events end