diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/yahns/wbuf.rb | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/yahns/wbuf.rb b/lib/yahns/wbuf.rb index 3abc5f9..d3552b3 100644 --- a/lib/yahns/wbuf.rb +++ b/lib/yahns/wbuf.rb @@ -31,6 +31,7 @@ require_relative 'wbuf_common' class Yahns::Wbuf # :nodoc: include Yahns::WbufCommon attr_reader :busy + IO_WRITEV = RUBY_VERSION.to_r >= 2.5 # IO#write uses writev def initialize(body, persist) @tmpio = nil @@ -40,9 +41,15 @@ class Yahns::Wbuf # :nodoc: @busy = false end - def wbuf_writev(buf) - @tmpio.kgio_writev(buf) - buf.inject(0) { |n, s| n += s.size } + if IO_WRITEV + def wbuf_writev(buf) + @tmpio.write(*buf) + end + else + def wbuf_writev(buf) + @tmpio.kgio_writev(buf) + buf.inject(0) { |n, s| n += s.size } + end end def wbuf_write(c, buf) |