class Bones::RPC::Celluloid::Connection::Reader
Public Class Methods
new(connection, socket, adapter)
click to toggle source
# File lib/bones/rpc/celluloid/connection/reader.rb, line 11 def initialize(connection, socket, adapter) @connection = connection @socket = socket @adapter = adapter @buffer = "" async.read end
Public Instance Methods
parse(data)
click to toggle source
# File lib/bones/rpc/celluloid/connection/reader.rb, line 19 def parse(data) @buffer << data if @buffer.empty? async.read else parser = Bones::RPC::Parser.new(@buffer, @adapter) begin loop { async.send parser.read } rescue EOFError @buffer.replace(parser.buffer.to_str) end async.read end end
read()
click to toggle source
# File lib/bones/rpc/celluloid/connection/reader.rb, line 34 def read loop do async.parse @socket.readpartial(4096) end rescue EOFError, Errors::ConnectionFailure => e Loggable.warn(" BONES-RPC:", "#{@connection.node.address.resolved} Reader terminating: #{e.message}", "n/a") terminate end
send(message)
click to toggle source
# File lib/bones/rpc/celluloid/connection/reader.rb, line 43 def send(message) @connection.node.handle_message(message) end