class Bones::RPC::Synchronous::Connection::Reader
Public Class Methods
new(connection, socket, adapter, writer)
click to toggle source
# File lib/bones/rpc/synchronous/connection/reader.rb, line 7 def initialize(connection, socket, adapter, writer) @connection = connection @socket = socket @adapter = adapter @writer = writer @alive = true @buffer = "" end
Public Instance Methods
alive?()
click to toggle source
# File lib/bones/rpc/synchronous/connection/reader.rb, line 16 def alive? !!@alive end
parse(data, proxy)
click to toggle source
# File lib/bones/rpc/synchronous/connection/reader.rb, line 20 def parse(data, proxy) @buffer << data if @buffer.empty? read(proxy) else parser = Bones::RPC::Parser.new(@buffer, @adapter) begin loop { send parser.read, proxy } rescue EOFError @buffer.replace(parser.buffer.to_str) end return if @buffer.empty? read(proxy) end end
read(proxy)
click to toggle source
# File lib/bones/rpc/synchronous/connection/reader.rb, line 36 def read(proxy) parse @socket.readpartial(4096), proxy rescue EOFError, Errors::ConnectionFailure => e Loggable.warn(" BONES-RPC:", "#{@connection.node.address.resolved} Reader terminating: #{e.message}", "n/a") terminate raise e end
send(message, proxy)
click to toggle source
# File lib/bones/rpc/synchronous/connection/reader.rb, line 44 def send(message, proxy) proxy.handle_message(message) end
terminate()
click to toggle source
# File lib/bones/rpc/synchronous/connection/reader.rb, line 48 def terminate return if not alive? @alive = false @buffer.clear @writer.terminate end