about summary refs log tree commit homepage
path: root/lib/dtas/nonblock.rb
blob: 2cf086cb9ab10198165aca9b071f16773fec9271 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Copyright (C) 2015-2020 all contributors <dtas-all@nongnu.org>
# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>

class DTAS::Nonblock < IO # :nodoc:
  if RUBY_VERSION.to_f <= 2.0
    EX = {}.freeze
    def read_nonblock(len, buf = nil, opts = EX)
      super(len, buf)
    rescue IO::WaitReadable
      raise if opts[:exception]
      :wait_readable
    rescue EOFError
      raise if opts[:exception]
      nil
    end

    def write_nonblock(buf, opts = EX)
      super(buf)
    rescue IO::WaitWritable
      raise if opts[:exception]
      :wait_writable
    end
  end
end