class GQTP::Backend::Coolio::Socket
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/gqtp/backend/coolio.rb, line 34 def initialize(*args) super @write_callbacks = [] @read_callbacks = [] @request = nil @buffer = "".force_encoding("ASCII-8BIT") end
Public Instance Methods
on_read(data)
click to toggle source
# File lib/gqtp/backend/coolio.rb, line 66 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_complete()
click to toggle source
# File lib/gqtp/backend/coolio.rb, line 50 def on_write_complete write_callbacks, @write_callbacks = @write_callbacks, [] write_callbacks.each do |callback| callback.call end end
read(size, &block)
click to toggle source
# File lib/gqtp/backend/coolio.rb, line 57 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)
click to toggle source
Calls superclass method
# File lib/gqtp/backend/coolio.rb, line 42 def write(*chunks, &block) chunks.each do |chunk| super(chunk) end @write_callbacks << block if block_given? Request.new(evloop) end
Private Instance Methods
consume_data(size, callback)
click to toggle source
# File lib/gqtp/backend/coolio.rb, line 77 def consume_data(size, callback) data = @buffer[0, size] @buffer = @buffer[size..-1] callback.call(data) end