Class: GQTP::Connection::Coolio::Socket

Inherits:
Coolio::TCPSocket
  • Object
show all
Defined in:
lib/gqtp/connection/coolio.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Socket

Returns a new instance of Socket.



35
36
37
38
39
40
41
# File 'lib/gqtp/connection/coolio.rb', line 35

def initialize(*args)
  super
  @write_callbacks = []
  @read_callbacks = []
  @request = nil
  @buffer = "".force_encoding("ASCII-8BIT")
end

Instance Method Details

#on_read(data) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/gqtp/connection/coolio.rb', line 67

def on_read(data)
  @buffer << data
  until @read_callbacks.empty?
    size, callback = @read_callbacks.first
    break if @buffer.bytesize < size
    @read_callbacks.shift
    consume_data(size, callback)
  end
end

#on_write_completeObject



51
52
53
54
55
56
# File 'lib/gqtp/connection/coolio.rb', line 51

def on_write_complete
  write_callbacks, @write_callbacks = @write_callbacks, []
  write_callbacks.each do |callback|
    callback.call
  end
end

#read(size, &block) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/gqtp/connection/coolio.rb', line 58

def read(size, &block)
  if @buffer.bytesize >= size
    consume_data(size, block)
  else
    @read_callbacks << [size, block]
  end
  Request.new(evloop)
end

#write(*chunks, &block) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/gqtp/connection/coolio.rb', line 43

def write(*chunks, &block)
  chunks.each do |chunk|
    super(chunk)
  end
  @write_callbacks << block if block_given?
  Request.new(evloop)
end