Class: Passthrough

Inherits:
Object
  • Object
show all
Includes:
Messenger
Defined in:
lib/socketeer/passthrough.rb

Instance Attribute Summary

Attributes included from Messenger

#in_queue, #out_queue

Instance Method Summary collapse

Methods included from Messenger

#bind_queues

Constructor Details

#initialize(attr, messenger) ⇒ Passthrough

Returns a new instance of Passthrough.



7
8
9
10
11
12
# File 'lib/socketeer/passthrough.rb', line 7

def initialize attr, messenger
  @attr = attr
  @messenger = messenger
  @in_flight = []
  bind_queues Queue.new, Queue.new
end

Instance Method Details

#cycleObject



14
15
16
17
18
# File 'lib/socketeer/passthrough.rb', line 14

def cycle
  cycle_in_queue
  cycle_out_queue
  cycle_messenger
end

#cycle_in_queueObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/socketeer/passthrough.rb', line 20

def cycle_in_queue
  begin
    in_message = in_queue.deq true 
    if in_message 
      @in_flight << in_message
      @messenger.in_queue << in_message[@attr]
    end
  rescue ThreadError
  end
end

#cycle_messengerObject



43
44
45
# File 'lib/socketeer/passthrough.rb', line 43

def cycle_messenger
  @messenger.cycle if @messenger.respond_to? 'cycle'
end

#cycle_out_queueObject



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/socketeer/passthrough.rb', line 31

def cycle_out_queue
  begin
    out_message = @messenger.out_queue.deq true
    if out_message
      original_message = @in_flight.shift
      original_message[@attr] = out_message
      out_queue << original_message
    end
  rescue ThreadError
  end
end