Class: Handler

Inherits:
Object
  • Object
show all
Includes:
Messenger, Selectable
Defined in:
lib/socketeer/handler.rb

Instance Attribute Summary collapse

Attributes included from Messenger

#in_queue, #out_queue

Instance Method Summary collapse

Methods included from Messenger

#bind_queues

Methods included from Selectable

#cycle_selector

Constructor Details

#initialize(socket, conn_id) ⇒ Handler

Returns a new instance of Handler.



14
15
16
17
18
19
20
# File 'lib/socketeer/handler.rb', line 14

def initialize socket, conn_id
  @socket = socket
  @conn_id = conn_id
  register_monitor @socket, :r do |m|
    read
  end
end

Instance Attribute Details

#conn_idObject (readonly)

Returns the value of attribute conn_id.



12
13
14
# File 'lib/socketeer/handler.rb', line 12

def conn_id
  @conn_id
end

Instance Method Details

#cycleObject



22
23
24
25
# File 'lib/socketeer/handler.rb', line 22

def cycle
  cycle_data_in
  cycle_data_out
end

#cycle_data_inObject



27
28
29
# File 'lib/socketeer/handler.rb', line 27

def cycle_data_in
  read
end

#cycle_data_outObject



31
32
33
34
35
36
37
# File 'lib/socketeer/handler.rb', line 31

def cycle_data_out
  1000.times do
    m = pop_message
    write m
    return if m.nil?
  end
end

#readObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/socketeer/handler.rb', line 43

def read
  begin
    # raises ex if no data to read
    data = ''
    loop do
      data << @socket.read_nonblock(4096)
    end
  rescue
    # no more datas
  end
  push_message data unless data.empty?
end

#socketObject



39
40
41
# File 'lib/socketeer/handler.rb', line 39

def socket
  @socket
end

#write(data) ⇒ Object



56
57
58
59
# File 'lib/socketeer/handler.rb', line 56

def write data
  return if data.nil?
  @socket.write data rescue false
end