Sha256: 44dc3115383010ea0aae3cd9a6b84d7b8cc57170ff54402c54cd5af124cf3d77
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true require 'ds9' module GrpcKit module Session class IO def initialize(io) @io = io end def close @io.close end def recv_event(length) data = @io.read_nonblock(length, nil, exception: false) case data when :wait_readable DS9::ERR_WOULDBLOCK when nil # nil means EOF DS9::ERR_EOF else data end end def send_event(data) remain = data.bytesize size = remain while remain > 0 begin remain -= @io.syswrite(data) rescue Errno::EAGAIN, Errno::EWOULDBLOCK unless IO.select(nil, [io], nil, 1) raise 'timeout writing data' end rescue IOError => e raise IOError, e # TODO end data = data.byteslice(remain..-1) end size end def wait_readable @io.wait_writable end def flush @io.flush end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
grpc_kit-0.1.2 | lib/grpc_kit/session/io.rb |