module GQTP::Backend::Eventmachine::Handler
Public Instance Methods
post_init()
click to toggle source
# File lib/gqtp/backend/eventmachine.rb, line 30 def post_init @read_callbacks = [] @buffer = "".force_encoding("ASCII-8BIT") end
read(size, &block)
click to toggle source
# File lib/gqtp/backend/eventmachine.rb, line 46 def read(size, &block) if @buffer.bytesize >= size consume_data(size, block) else @read_callbacks << [size, block] end if block_given? nil else Request.new end end
receive_data(data)
click to toggle source
# File lib/gqtp/backend/eventmachine.rb, line 59 def receive_data(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
write(*chunks, &block)
click to toggle source
# File lib/gqtp/backend/eventmachine.rb, line 35 def write(*chunks, &block) chunks.each do |chunk| send_data(chunk) end if block_given? block.call else Request.new end end
Private Instance Methods
consume_data(size, callback)
click to toggle source
# File lib/gqtp/backend/eventmachine.rb, line 70 def consume_data(size, callback) data = @buffer[0, size] @buffer = @buffer[size..-1] callback.call(data) end