class Protobuf::Rpc::Socket::Worker
Public Class Methods
new(sock, &complete_cb)
click to toggle source
# File lib/protobuf/rpc/servers/socket/worker.rb, line 11 def initialize(sock, &complete_cb) @socket = sock @complete_cb = complete_cb data = read_data return unless data gc_pause do encoded_response = handle_request(data) send_data(encoded_response) end end
Public Instance Methods
log_signature()
click to toggle source
# File lib/protobuf/rpc/servers/socket/worker.rb, line 46 def log_signature @_log_signature ||= "[server-#{self.class}-#{object_id}]" end
read_data()
click to toggle source
# File lib/protobuf/rpc/servers/socket/worker.rb, line 24 def read_data size_io = StringIO.new until (size_reader = @socket.getc) == "-" size_io << size_reader end str_size_io = size_io.string @socket.read(str_size_io.to_i) end
send_data(data)
click to toggle source
# File lib/protobuf/rpc/servers/socket/worker.rb, line 35 def send_data(data) fail 'Socket closed unexpectedly' unless socket_writable? response_buffer = Protobuf::Rpc::Buffer.new(:write) response_buffer.set_data(data) @socket.write(response_buffer.write) @socket.flush @complete_cb.call(@socket) end
socket_writable?()
click to toggle source
# File lib/protobuf/rpc/servers/socket/worker.rb, line 50 def socket_writable? ! @socket.nil? && ! @socket.closed? end