Sha256: 99aab9cee00195ce1c11cfc3f0f1dc598e21d11f3c2500c075b0e12a5f30ad9f
Contents?: true
Size: 1.62 KB
Versions: 8
Compression:
Stored size: 1.62 KB
Contents
# frozen_string_literal: true require "forwardable" module HTTPX class UNIX < TCP extend Forwardable using URIExtensions attr_reader :path alias_method :host, :path def initialize(origin, addresses, options) @addresses = addresses @hostname = origin.host @state = :idle @options = Options.new(options) @fallback_protocol = @options.fallback_protocol if @options.io @io = case @options.io when Hash @options.io[origin.authority] else @options.io end raise Error, "Given IO objects do not match the request authority" unless @io @path = @io.path @keep_open = true @state = :connected else if @options.transport_options # :nocov: warn ":transport_options is deprecated, use :addresses instead" @path = @options.transport_options[:path] # :nocov: else @path = addresses.first end end @io ||= build_socket end def connect return unless closed? begin if @io.closed? transition(:idle) @io = build_socket end @io.connect_nonblock(Socket.sockaddr_un(@path)) rescue Errno::EISCONN end transition(:connected) rescue Errno::EINPROGRESS, Errno::EALREADY, ::IO::WaitReadable end # :nocov: def inspect "#<#{self.class}(path: #{@path}): (state: #{@state})>" end # :nocov: private def build_socket Socket.new(Socket::PF_UNIX, :STREAM, 0) end end end
Version data entries
8 entries across 8 versions & 1 rubygems