Class: Bones::RPC::Synchronous::Connection::Reader
- Inherits:
-
Object
- Object
- Bones::RPC::Synchronous::Connection::Reader
- Defined in:
- lib/bones/rpc/synchronous/connection/reader.rb
Overview
Instance Method Summary collapse
- #alive? ⇒ Boolean
-
#initialize(connection, socket, adapter, writer) ⇒ Reader
constructor
A new instance of Reader.
- #parse(data, proxy) ⇒ Object
- #read(proxy) ⇒ Object
- #send(message, proxy) ⇒ Object
- #terminate ⇒ Object
Constructor Details
#initialize(connection, socket, adapter, writer) ⇒ Reader
Returns a new instance of Reader.
7 8 9 10 11 12 13 14 |
# 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 |
Instance Method Details
#alive? ⇒ Boolean
16 17 18 |
# File 'lib/bones/rpc/synchronous/connection/reader.rb', line 16 def alive? !!@alive end |
#parse(data, proxy) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# 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) ⇒ Object
36 37 38 39 40 41 42 |
# 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.}", "n/a") terminate raise e end |
#send(message, proxy) ⇒ Object
44 45 46 |
# File 'lib/bones/rpc/synchronous/connection/reader.rb', line 44 def send(, proxy) proxy.() end |
#terminate ⇒ Object
48 49 50 51 52 53 |
# File 'lib/bones/rpc/synchronous/connection/reader.rb', line 48 def terminate return if not alive? @alive = false @buffer.clear @writer.terminate end |