spec/fixtures/extensions_ints.rb in rflow-1.0.0a1 vs spec/fixtures/extensions_ints.rb in rflow-1.0.0a2
- old
+ new
@@ -1,11 +1,8 @@
-# This will/should bring in available components and their schemas
require 'rflow/components'
require 'rflow/message'
-#RFlow::Configuration.add_available_data_schema RFlow::Message::Data::AvroSchema.new('Integer', long_integer_schema)
-
# Example of creating and registering a data extension
module SimpleDataExtension
# Use this to default/verify the data in data_object
def self.extended(base_data)
base_data.data_object
@@ -13,129 +10,34 @@
def my_method; end
end
RFlow::Configuration.add_available_data_extension('RFlow::Message::Data::Integer', SimpleDataExtension)
-
-
-# Example of creating and registering a new schema
-long_integer_schema = '{"type": "long"}'
-RFlow::Configuration.add_available_data_type('RFlow::Message::Data::Integer', 'avro', long_integer_schema)
-
-
-class RFlow::Components::GenerateIntegerSequence < RFlow::Component
- output_port :out
- output_port :even_odd_out
-
- def configure!(config)
- @start = config['start'].to_i
- @finish = config['finish'].to_i
- @step = config['step'] ? config['step'].to_i : 1
- # If interval seconds is not given, it will default to 0
- @interval_seconds = config['interval_seconds'].to_i
- end
-
- # Note that this uses the timer (sometimes with 0 interval) so as
- # not to block the reactor
- def run!
- timer = EM::PeriodicTimer.new(@interval_seconds) do
- message = RFlow::Message.new('RFlow::Message::Data::Integer')
- message.data.data_object = @start
- out.send_message message
- if @start % 2 == 0
- even_odd_out['even'].send_message message
- else
- even_odd_out['odd'].send_message message
- end
-
- @start += @step
- timer.cancel if @start > @finish
- end
- end
-
-end
-
-class RFlow::Components::Replicate < RFlow::Component
- input_port :in
- output_port :out
- output_port :errored
-
- def process_message(input_port, input_port_key, connection, message)
- puts "Processing message in Replicate"
- out.each do |connections|
- puts "Replicating"
- begin
- connections.send_message message
- rescue Exception => e
- puts "Exception #{e.message}"
- errored.send_message message
- end
- end
- end
-end
-
-puts "Before RubyProcFilter"
-class RFlow::Components::RubyProcFilter < RFlow::Component
- input_port :in
- output_port :filtered
- output_port :dropped
- output_port :errored
-
-
- def configure!(config)
- @filter_proc = eval("lambda {|message| #{config['filter_proc_string']} }")
- end
-
- def process_message(input_port, input_port_key, connection, message)
- puts "Processing message in RubyProcFilter"
- begin
- if @filter_proc.call(message)
- filtered.send_message message
- else
- dropped.send_message message
- end
- rescue Exception => e
- puts "Attempting to send message to errored #{e.message}"
- errored.send_message message
- end
- end
-end
-
-puts "Before FileOutput"
class RFlow::Components::FileOutput < RFlow::Component
attr_accessor :output_file_path, :output_file
input_port :in
def configure!(config)
self.output_file_path = config['output_file_path']
self.output_file = File.new output_file_path, 'w+'
end
- #def run!; end
-
def process_message(input_port, input_port_key, connection, message)
- puts "About to output to a file #{output_file_path}"
output_file.puts message.data.data_object.inspect
output_file.flush
end
-
def cleanup
output_file.close
end
-
end
-# TODO: Ensure that all the following methods work as they are
-# supposed to. This is the interface that I'm adhering to
class SimpleComponent < RFlow::Component
input_port :in
output_port :out
def configure!(config); end
def run!; end
def process_message(input_port, input_port_key, connection, message); end
def shutdown!; end
def cleanup!; end
end
-
-