dtas-all
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 8/9] unix_accepted: drop Ruby < 2.3 support code


From: Eric Wong
Subject: [PATCH 8/9] unix_accepted: drop Ruby < 2.3 support code
Date: Sun, 23 Jan 2022 21:37:45 +0000

This should save a little bit of memory for current users.
---
 lib/dtas/unix_accepted.rb | 49 ++++++++++-----------------------------
 1 file changed, 12 insertions(+), 37 deletions(-)

diff --git a/lib/dtas/unix_accepted.rb b/lib/dtas/unix_accepted.rb
index ec7f3ef..a84eade 100644
--- a/lib/dtas/unix_accepted.rb
+++ b/lib/dtas/unix_accepted.rb
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 all contributors <dtas-all@nongnu.org>
+# Copyright (C) all contributors <dtas-all@nongnu.org>
 # License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
 # frozen_string_literal: true
 require 'socket'
@@ -10,23 +10,22 @@ class DTAS::UNIXAccepted # :nodoc:
 
   def initialize(sock)
     @to_io = sock
-    @send_buf = []
+    @sbuf = []
   end
 
   # public API (for DTAS::Player)
   # returns :wait_readable on success
   def emit(msg)
-    buffered = @send_buf.size
-    if buffered == 0
-      case rv = sendmsg_nonblock(msg)
+    if @sbuf.empty?
+      case rv = @to_io.sendmsg_nonblock(msg, Socket::MSG_EOR, exception: false)
       when :wait_writable
-        @send_buf << msg
+        @sbuf << msg
         rv
       else
         :wait_readable
       end
-    else # buffered > 0
-      @send_buf << msg
+    else
+      @sbuf << msg
       :wait_writable
     end
   rescue => e
@@ -35,11 +34,11 @@ def emit(msg)
 
   # flushes pending data if it got buffered
   def writable_iter
-    case sendmsg_nonblock(@send_buf[0])
+    case @to_io.sendmsg_nonblock(@sbuf[0], Socket::MSG_EOR, exception: false)
     when :wait_writable then return :wait_writable
     else
-      @send_buf.shift
-      @send_buf.empty? ? :wait_readable : :wait_writable
+      @sbuf.shift
+      @sbuf.empty? ? :wait_readable : :wait_writable
     end
   rescue => e
     e
@@ -51,13 +50,13 @@ def readable_iter
     # EOF, assume no spurious wakeups for SOCK_SEQPACKET
     return nil if nread == 0
 
-    case msg = recv_nonblock(nread)
+    case msg = @to_io.recv_nonblock(nread, exception: false)
     when :wait_readable then return msg
     when '', nil then return nil # EOF
     else
       yield(self, msg) # DTAS::Player deals with this
     end
-    @send_buf.empty? ? :wait_readable : :wait_writable
+    @sbuf.empty? ? :wait_readable : :wait_writable
   rescue SystemCallError
     nil
   end
@@ -69,28 +68,4 @@ def close
   def closed?
     @to_io.closed?
   end
-
-  if RUBY_VERSION.to_f >= 2.3
-    def sendmsg_nonblock(msg)
-      @to_io.sendmsg_nonblock(msg, Socket::MSG_EOR, exception: false)
-    end
-
-    def recv_nonblock(len)
-      @to_io.recv_nonblock(len, exception: false)
-    end
-  else
-    def sendmsg_nonblock(msg)
-      @to_io.sendmsg_nonblock(msg, Socket::MSG_EOR)
-    rescue IO::WaitWritable
-      :wait_writable
-    end
-
-    def recv_nonblock(len)
-      @to_io.recv_nonblock(len)
-    rescue IO::WaitReadable
-      :wait_readable
-    rescue EOFError
-      nil
-    end
-  end
 end



reply via email to

[Prev in Thread] Current Thread [Next in Thread]