Class: Async::HTTP::Protocol::HTTP1::Connection

Inherits:
HTTP::Protocol::HTTP1::Connection
  • Object
show all
Defined in:
lib/async/http/protocol/http1/connection.rb

Direct Known Subclasses

Client, Server

Constant Summary collapse

CRLF =
"\r\n"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stream, version) ⇒ Connection

Returns a new instance of Connection.



34
35
36
37
38
# File 'lib/async/http/protocol/http1/connection.rb', line 34

def initialize(stream, version)
  super(stream)
  
  @version = version
end

Instance Attribute Details

#countObject (readonly)

Returns the value of attribute count.



63
64
65
# File 'lib/async/http/protocol/http1/connection.rb', line 63

def count
  @count
end

#streamObject (readonly)

Returns the value of attribute stream.



44
45
46
# File 'lib/async/http/protocol/http1/connection.rb', line 44

def stream
  @stream
end

#versionObject (readonly)

Returns the value of attribute version.



40
41
42
# File 'lib/async/http/protocol/http1/connection.rb', line 40

def version
  @version
end

Instance Method Details

#closeObject



79
80
81
82
83
# File 'lib/async/http/protocol/http1/connection.rb', line 79

def close
  Async.logger.debug(self) {"Closing connection"}
  
  @stream.close
end

#connected?Boolean

Can we use this connection to make requests?

Returns:

  • (Boolean)


70
71
72
# File 'lib/async/http/protocol/http1/connection.rb', line 70

def connected?
  @stream.connected?
end

#hijackAsync::Wrapper

Returns the underlying non-blocking IO.

Returns:

  • (Async::Wrapper)

    the underlying non-blocking IO.



51
52
53
54
55
56
57
# File 'lib/async/http/protocol/http1/connection.rb', line 51

def hijack
  @persistent = false
  
  @stream.flush
  
  return @stream.io
end

#multiplexObject



65
66
67
# File 'lib/async/http/protocol/http1/connection.rb', line 65

def multiplex
  1
end

#peerObject



59
60
61
# File 'lib/async/http/protocol/http1/connection.rb', line 59

def peer
  @stream.io
end

#read_chunked_bodyObject



85
86
87
# File 'lib/async/http/protocol/http1/connection.rb', line 85

def read_chunked_body
  Body::Chunked.new(self)
end

#read_fixed_body(length) ⇒ Object



89
90
91
# File 'lib/async/http/protocol/http1/connection.rb', line 89

def read_fixed_body(length)
  Body::Fixed.new(@stream, length)
end

#read_lineObject



46
47
48
# File 'lib/async/http/protocol/http1/connection.rb', line 46

def read_line
  @stream.read_until(CRLF) or raise EOFError
end

#read_remainder_bodyObject



97
98
99
# File 'lib/async/http/protocol/http1/connection.rb', line 97

def read_remainder_body
  Body::Remainder.new(@stream)
end

#read_tunnel_bodyObject



93
94
95
# File 'lib/async/http/protocol/http1/connection.rb', line 93

def read_tunnel_body
  read_remainder_body
end

#reusable?Boolean

Returns:

  • (Boolean)


74
75
76
77
# File 'lib/async/http/protocol/http1/connection.rb', line 74

def reusable?
  !@stream.closed?
  # !(self.closed? || @stream.closed?)
end