From 38cdd06ca624f5b1b6f874724c88976cf8398367 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 5 Jan 2019 21:03:53 +0000 Subject: wbuf: use IO#write directly in Ruby 2.5+ for writev Slowly removing kgio dependencies... --- lib/yahns/wbuf.rb | 13 ++++++++++--- 1 file 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) -- cgit v1.2.3-24-ge0c7