Class: HTTPX::UNIX

Inherits:
TCP
  • Object
show all
Defined in:
lib/httpx/io/unix.rb

Constant Summary

Constants included from Loggable

Loggable::COLORS, Loggable::USE_DEBUG_LOG

Instance Attribute Summary collapse

Attributes inherited from TCP

#addresses, #interests, #ip, #port, #state

Instance Method Summary collapse

Methods inherited from TCP

#add_addresses, #close, #closed?, #connected?, #protocol, #read, #socket, #to_io, #write

Methods included from Loggable

#log, #log_exception

Constructor Details

#initialize(origin, path, options) ⇒ UNIX

Returns a new instance of UNIX.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/httpx/io/unix.rb', line 11

def initialize(origin, path, options)
  @addresses = []
  @hostname = origin.host
  @state = :idle
  @options = 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
  elsif path
    @path = path
  else
    raise Error, "No path given where to store the socket"
  end
  @io ||= build_socket
end

Instance Attribute Details

#pathObject (readonly) Also known as: host

Returns the value of attribute path.



7
8
9
# File 'lib/httpx/io/unix.rb', line 7

def path
  @path
end

Instance Method Details

#connectObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/httpx/io/unix.rb', line 37

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

#expired?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/httpx/io/unix.rb', line 54

def expired?
  false
end

#inspectObject

:nocov:



59
60
61
# File 'lib/httpx/io/unix.rb', line 59

def inspect
  "#<#{self.class}(path: #{@path}): (state: #{@state})>"
end