Friday, September 20, 2024 2:59:33 AM
> settings

Customize


Authenticate

> socket.rb
# frozen_string_literal: true

module ESM
  module Connection
    class Socket < SimpleDelegator
      READ_BYTES = 65_444 - 20 - 8

      def readable?(timeout = 5)
        wait_readable(timeout).first.size > 0
      end

      def writeable?(timeout = 5)
        wait_writeable(timeout).second.size > 0
      end

      private

      #
      # Blocks until the socket is readable
      #
      # @param timeout [Integer] Timeout in seconds
      #
      # @returns [Array] The sockets grouped by state [readable, writeable, errored]
      #
      def wait_readable(timeout = 5)
        IO.select([__getobj__], nil, nil, timeout) || [[], [], []]
      rescue IOError
        [[], [], []]
      end

      #
      # Blocks until the socket is writeable
      #
      # @param timeout [Integer] Timeout in seconds
      #
      # @returns [Array] The sockets grouped by state [readable, writeable, errored]
      #
      def wait_writeable(timeout = 5)
        IO.select(nil, [__getobj__], nil, timeout) || [[], [], []]
      rescue IOError
        [[], [], []]
      end
    end
  end
end
All opinions represented herein are my own
- © 2024 itsthedevman
- build 340fbb8