Module: Socketeer

Defined in:
lib/socketeer/socketeer.rb

Instance Method Summary collapse

Instance Method Details

#bind(host, port, &callback) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/socketeer/socketeer.rb', line 27

def bind host, port, &callback
  # will use the passed callback if provided, else calls handle_message
  callback ||= proc { |m| handle_message m }
  @message_handler = MessageHandler.new &callback 
  @server = Server.new host, port, Handler
  @collator = MessageCollator.new "\n\n"
  @in_message_transformer = MessageTransformer.new {|d| MessagePack.unpack d }
  @out_message_transformer = MessageTransformer.new { |d|
    MessagePack.pack(d) + "\n\n"
  }
  @server.bind_queues IQueue.new, IQueue.new
  @collator.bind_queues IQueue.new, IQueue.new
  @in_message_transformer.bind_queues IQueue.new, IQueue.new
  @out_message_transformer.bind_queues IQueue.new, IQueue.new
  @message_handler.bind_queues IQueue.new, IQueue.new
  @pipeline = Pipeline.new(@server, 
                           Passthrough.new(:data, @collator),
                           Passthrough.new(:data, @in_message_transformer),
                           @message_handler, 
                           Passthrough.new(:data, @out_message_transformer),
                           @server)
  [host, port]
end

#cycleObject



51
52
53
# File 'lib/socketeer/socketeer.rb', line 51

def cycle
  @pipeline.cycle
end