The http2 Reference Manual

Next: , Previous: , Up: (dir)   [Contents][Index]

The http2 Reference Manual

This is the http2 Reference Manual, version 1.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Tue Nov 15 05:59:12 2022 GMT+0.

Table of Contents


1 Introduction

#+TITLE: http/2 in Common Lisp

[[https://github.com/zellerin/http2/actions/workflows/test.yml/badge.svg]]

This is a (work in progress) implementation of HTTP/2 protocol as described in
RFC9113 (and RFC7540 before) and RFC7541 (HPACK).

The core part of the library is implementing writing http2 frames, reading them,
and reacting on read frames. What to do with the frames is managed by classes
~CONNECTION~ and ~HTTP2-STREAM~ that are supposed to be extended by application to
do something reasonable with headers and payload; see [[./client/client.lisp][client.lisp]] or [[./server/server.lisp][server.lisp]]
for an example.

** Status and quick start
In quicklisp. Tested primarily on sbcl, occasionally on ecl.

Almost all parts of the listed standards implemented, see below for exceptions.

The library definitely allows to implement a client or server, and a simple ones
are attached to it as examples.

*** Client

The bundled client requests remote page and returns values of body (converted to
string), result status, and response headers.

Improvements to allow for cookie management, ... are out of scope of this
library, as they would probably be better taken over from some existing http/1.x
library or incorporated there.

Improvements to query several resources on one server, and to receive pushes are
considered for future, as they are http2 specific.

#+begin_src lisp
  (ql:quickload 'http2/client)
  (http2/client:retrieve-url "https://example.com")
#+end_src

#+RESULTS:
#+begin_src text



    Example Domain

    
    
    



2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 http2

HTTP2 protocol implementation

Author

Tomáš Zellerin <tomas@zellerin.cz>

License

MIT

Version

1.0

Dependencies
  • trivial-gray-streams (system).
  • flexi-streams (system).
Source

http2.asd.

Child Components

Next: , Previous: , Up: The http2 Reference Manual   [Contents][Index]

3 Modules

Modules are listed depth-first from the system components tree.


Previous: , Up: Modules   [Contents][Index]

3.1 http2/core

Dependency

package.lisp (file).

Source

http2.asd.

Parent Component

http2 (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

4.1 Lisp


Next: , Previous: , Up: Lisp   [Contents][Index]

4.1.1 http2/http2.asd

Source

http2.asd.

Parent Component

http2 (system).

ASDF Systems

http2.


4.1.2 http2/package.lisp

Source

http2.asd.

Parent Component

http2 (system).

Packages

http2.


4.1.3 http2/core/utils.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface

+no-error+ (constant).

Internals

4.1.4 http2/core/frames.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.5 http2/core/classes.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.6 http2/core/headers.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.7 http2/core/payload-streams.lisp

Source

http2.asd.

Parent Component

core (module).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

5.1 http2

HTTP2 API on several levels.

First, it has some high level interface to facilitate making HTTP2 client and
server with some vanilla behaviour. The communication is done mostly by writing to and reading from (Lisp) streams and sending/parsing/receiving headers.

Then, there is an object oriented interface that allows to customize details on
how the client or server acts in some situations. This allows things such as sending pushes on the server side.

Then there is a low level frame oriented interface to read and write frames.

Source

package.lisp.

Use List

common-lisp.

Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

6.1 Public Interface


6.1.1 Constants

Constant: +no-error+

graceful shutdown

Package

http2.

Source

utils.lisp.


6.1.2 Special variables

Special Variable: *do-print-log*

Set to true value to log to the *TRACE-OUTPUT*.

Package

http2.

Source

classes.lisp.

Special Variable: *use-huffman-coding-by-default*

Is set, the headers are by default huffman-encoded. Special value :maybe means whatever is shorter, plain encoding in case of draw.

Package

http2.

Source

headers.lisp.


6.1.3 Ordinary functions

Function: encode-header (name value &optional context huffman)

Encode header consisting of NAME and VALUE.

The ‘never-indexed‘ format is never generated,
use a separate function for this (and this function needs to be written).

When CONTEXT is provided, use incremental indexing with dynamic table in that CONTEXT.

Use Huffman when HUFFMAN is true.

Package

http2.

Source

headers.lisp.

Function: read-frame (connection &optional stream)

All frames begin with a fixed 9-octet header followed by a variable- length payload.

#+begin_src artist +———————————————–+
| Length (24) | +—————+—————+—————+
| Type (8) | Flags (8) | +-+————-+—————+——————————-+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +—————————————————————+ #+end_src

Length: The length of the frame payload expressed as an unsigned 24-bit integer. Values greater than 2^14 (16,384) MUST NOT be sent unless the receiver has set a larger value for SETTINGS_MAX_FRAME_SIZE.

The 9 octets of the frame header are not included in this value.

Type: The 8-bit type of the frame. The frame type determines the format and semantics of the frame. Implementations MUST ignore and discard any frame that has a type that is unknown.

Flags: An 8-bit field reserved for boolean flags specific to the frame type.

Flags are assigned semantics specific to the indicated frame type. Flags that have no defined semantics for a particular frame type MUST be ignored and MUST be left unset (0x0) when sending.

R: A reserved 1-bit field. The semantics of this bit are undefined, and the bit MUST remain unset (0x0) when sending and MUST be ignored when receiving.

Stream Identifier: A stream identifier (see Section 5.1.1) expressed as an unsigned 31-bit integer. The value 0x0 is reserved for frames that are associated with the connection as a whole as opposed to an individual stream.

Package

http2.

Source

frames.lisp.

Function: request-headers (method path authority &key scheme additional-headers)

Encode standard headers that are obligatory.

Package

http2.

Source

headers.lisp.

Function: update-dynamic-table-size (context new-size)
Package

http2.

Source

headers.lisp.

Function: write-ack-setting-frame (stream)

Write ACK settings frame.

ACK (0x1): When set, bit 0 indicates that this frame acknowledges receipt and application of the peer’s SETTINGS frame. When this bit is set, the payload of the SETTINGS frame MUST be empty. Receipt of a SETTINGS frame with the ACK flag set and a length field value other than 0 MUST be treated as a connection error (Section 5.4.1) of type FRAME_SIZE_ERROR. For more information, see Section 6.5.3 ("Settings Synchronization").

Package

http2.

Source

frames.lisp.

Function: write-altsvc-frame (http-connection-or-stream origin alt-svc-field-value &key)

See RFC 7838. The ALTSVC HTTP/2 frame advertises the availability of an alternative service to an HTTP/2 client.

#+begin_src artist +——————————-+——————————-+ | Origin-Len (16) | Origin? (*) ... +——————————-+——————————-+ | Alt-Svc-Field-Value (*) ... +—————————————————————+ #+end_src

Package

http2.

Source

frames.lisp.

Function: write-continuation-frame (http-connection-or-stream headers &key end-headers)

#+begin_src artist

+—————————————————————+
| Header Block Fragment (*) ... +—————————————————————+ #+end_src

The CONTINUATION frame (type=0x9) is used to continue a sequence of header block fragments (Section 4.3). Any number of CONTINUATION frames can be sent, as long as the preceding frame is on the same stream and is a HEADERS, PUSH_PROMISE, or CONTINUATION frame without the END_HEADERS flag set.

Package

http2.

Source

frames.lisp.

Function: write-data-frame (http-connection-or-stream data &key padded end-stream)

#+begin_src artist

+—————+———————————————–+ | Data (*) ... +—————————————————————+ #+end_src

DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a stream. One or more DATA frames are used, for instance, to carry HTTP request or response payloads.

Package

http2.

Source

frames.lisp.

Function: write-frame-header (stream length type flags http-stream r)

All frames begin with a fixed 9-octet header followed by a variable- length payload.

#+begin_src artist +———————————————–+
| Length (24) | +—————+—————+—————+
| Type (8) | Flags (8) | +-+————-+—————+——————————-+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +—————————————————————+ #+end_src

Length: The length of the frame payload expressed as an unsigned 24-bit integer. Values greater than 2^14 (16,384) MUST NOT be sent unless the receiver has set a larger value for SETTINGS_MAX_FRAME_SIZE.

The 9 octets of the frame header are not included in this value.

Type: The 8-bit type of the frame. The frame type determines the format and semantics of the frame.

Flags: An 8-bit field reserved for boolean flags specific to the frame type.

Flags are assigned semantics specific to the indicated frame type. Flags that have no defined semantics for a particular frame type MUST be ignored and MUST be left unset (0x0) when sending.

R: A reserved 1-bit field. The semantics of this bit are undefined, and the bit MUST remain unset (0x0) when sending and MUST be ignored when receiving.

Stream Identifier: A stream identifier (see Section 5.1.1) expressed as an unsigned 31-bit integer. The value 0x0 is reserved for frames that are associated with the connection as a whole as opposed to an individual stream.

Package

http2.

Source

frames.lisp.

Function: write-goaway-frame (http-connection-or-stream last-stream-id error-code debug-data &key reserved)

#+begin_src artist +-+————————————————————-+ |R| Last-Stream-ID (31) | +-+————————————————————-+ | Error Code (32) | +—————————————————————+ | Additional Debug Data (*) | +—————————————————————+ #+end_src

The GOAWAY frame (type=0x7) is used to initiate shutdown of a connection or to signal serious error conditions. GOAWAY allows an endpoint to gracefully stop accepting new streams while still finishing processing of previously established streams. This enables administrative actions, like server maintenance.

Package

http2.

Source

frames.lisp.

Function: write-headers-frame (http-connection-or-stream headers &key padded end-stream end-headers priority)

#+begin_src artist

+-+————-+———————————————–+ |E| Stream Dependency? (31) | +-+————-+———————————————–+ | Weight? (8) | +-+————-+———————————————–+ | Header Block Fragment (*) ... +—————————————————————+ #+end_src

The HEADERS frame (type=0x1) is used to open a stream (Section 5.1), and additionally carries a header block fragment. HEADERS frames can be sent on a stream in the "idle", "reserved (local)", "open", or "half-closed (remote)" state.

Package

http2.

Source

frames.lisp.

Function: write-ping-frame (http-connection-or-stream opaque-data &key ack)

The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the sender, as well as determining whether an idle connection is still functional. PING frames can be sent from any endpoint.

#+begin_src artist +—————————————————————+ | | | Opaque Data (64) | | | +—————————————————————+ #+end_src

Figure 12: PING Payload Format

In addition to the frame header, PING frames MUST contain 8 octets of opaque data in the payload. A sender can include any value it chooses and use those octets in any fashion.

Receivers of a PING frame that does not include an ACK flag MUST send a PING frame with the ACK flag set in response, with an identical payload. PING responses SHOULD be given higher priority than any other frame.

The PING frame defines the following flags:

ACK (0x1): When set, bit 0 indicates that this PING frame is a PING response. An endpoint MUST set this flag in PING responses. An endpoint MUST NOT respond to PING frames containing this flag.

Package

http2.

Source

frames.lisp.

Function: write-priority-frame (http-connection-or-stream exclusive stream-dependency weight &key)

The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream (Section 5.3).

#+begin_src artist +-+————————————————————-+ |E| Stream Dependency (31) | +-+————-+———————————————–+ | Weight (8) |
+-+————-+
#+end_src

The payload of a PRIORITY frame contains the following fields:

E: A single-bit flag indicating that the stream dependency is exclusive (see Section 5.3).

Stream Dependency: A 31-bit stream identifier for the stream that this stream depends on (see Section 5.3).

Weight: An unsigned 8-bit integer representing a priority weight for the stream (see Section 5.3). Add one to the value to obtain a weight between 1 and 256.

Package

http2.

Source

frames.lisp.

Function: write-push-promise-frame (http-connection-or-stream promised-stream-id headers &key reserved padded end-headers)

The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the sender intends to initiate. The PUSH_PROMISE frame includes the unsigned 31-bit identifier of the stream the endpoint plans to create along with a set of headers that provide additional context for the stream. Section 8.2 contains a thorough description of the use of PUSH_PROMISE frames.

#+begin_src artist +-+————-+———————————————–+ |R| Promised Stream ID (31) | +-+—————————–+——————————-+ | Header Block Fragment (*) ... +—————————————————————+ #+end_src

The PUSH_PROMISE frame payload has the following fields:

R: A single reserved bit.

Promised Stream ID: An unsigned 31-bit integer that identifies the stream that is reserved by the PUSH_PROMISE. The promised stream identifier MUST be a valid choice for the next stream sent by the sender (see "new stream identifier" in Section 5.1.1).

Header Block Fragment: A header block fragment (Section 4.3) containing request header fields.

The PUSH_PROMISE frame defines the following flags:

END_HEADERS (0x4): When set, bit 2 indicates that this frame contains an entire header block (Section 4.3) and is not followed by any CONTINUATION frames.

A PUSH_PROMISE frame without the END_HEADERS flag set MUST be followed by a CONTINUATION frame for the same stream. A receiver MUST treat the receipt of any other type of frame or a frame on a different stream as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.

Package

http2.

Source

frames.lisp.

Function: write-rst-stream-frame (http-connection-or-stream error-code &key)

The RST_STREAM frame (type=0x3) allows for immediate termination of a stream. RST_STREAM is sent to request cancellation of a stream or to indicate that an error condition has occurred.

#+begin_src artist +—————————————————————+ | Error Code (32) | +—————————————————————+ #+end_src

The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error code (Section 7). The error code indicates why the stream is being terminated.

The RST_STREAM frame does not define any flags.

Package

http2.

Source

frames.lisp.

Function: write-settings-frame (http-connection-or-stream settings &key ack)

#+begin_src artist
+——————————-+
| Identifier (16) | +——————————-+——————————-+ | Value (32) | +—————————————————————+ #+end_src

The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints communicate, such as preferences and constraints on peer behavior. The SETTINGS frame is also used to acknowledge the receipt of those parameters. Individually, a SETTINGS parameter can also be referred to as a "setting".

Package

http2.

Source

frames.lisp.

Function: write-window-update-frame (http-connection-or-stream window-size-increment &key reserved)

#+begin_src artist
+-+————————————————————-+
|R| Window Size Increment (31) |
+-+————————————————————-+
#+end_src

The WINDOW_UPDATE frame (type=0x8) is used to implement flow control; see Section 5.2 for an overview. Flow control operates at two levels: on each individual stream and on the entire connection.

Package

http2.

Source

frames.lisp.


6.1.4 Generic functions

Generic Function: apply-data-frame (stream payload)

Data frame is received by a stream.
By default does nothing; there are several mixins that implement reading the data.

Package

http2.

Source

classes.lisp.

Methods
Method: apply-data-frame ((stream binary-input-stream-over-data-frames) frame-data)
Source

payload-streams.lisp.

Method: apply-data-frame (stream payload)
Method: apply-data-frame ((stream body-collecting-mixin) data)
Method: apply-data-frame :before ((stream logging-object) payload)
Generic Function: apply-stream-priority (stream exclusive weight stream-dependency)

Called when priority frame - or other frame with priority settings set - arrives. Does nothing, as priorities are deprecated in RFC9113 anyway.

Package

http2.

Source

classes.lisp.

Methods
Method: apply-stream-priority (stream exclusive weight stream-dependency)
Method: apply-stream-priority :before ((stream logging-object) exclusive weight stream-dependency)
Generic Function: apply-window-size-increment (object increment)

Called on window update frame. By default, increases PEER-WINDOW-SIZE slot of the strem or connection.

Package

http2.

Source

classes.lisp.

Methods
Method: apply-window-size-increment :before ((object logging-object) increment)
Method: apply-window-size-increment (object increment)
Generic Function: do-goaway (connection error-code last-stream-id debug-data)

Called when a go-away frame is received. By default throws GO-AWAY condition if error was reported.

Package

http2.

Source

classes.lisp.

Methods
Method: do-goaway :before ((connection logging-object) error-code last-stream-id debug-data)
Method: do-goaway (connection error-code last-stream-id debug-data)
Generic Function: do-pong (connection data)

Called when ping-frame with ACK is received. By default warns about unexpected ping response; see also TIMESHIFT-PINGING-CONNECTION mixin.

Package

http2.

Source

classes.lisp.

Methods
Method: do-pong :before ((connection logging-object) data)
Method: do-pong (connection data)
Method: do-pong ((connection timeshift-pinging-connection) data)
Generic Reader: get-body (object)
Package

http2.

Methods
Reader Method: get-body ((body-collecting-mixin body-collecting-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

body.

Generic Writer: (setf get-body) (object)
Package

http2.

Methods
Writer Method: (setf get-body) ((body-collecting-mixin body-collecting-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

body.

Generic Reader: get-headers (object)
Package

http2.

Methods
Reader Method: get-headers ((header-collecting-mixin header-collecting-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

headers.

Generic Writer: (setf get-headers) (object)
Package

http2.

Methods
Writer Method: (setf get-headers) ((header-collecting-mixin header-collecting-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

headers.

Generic Reader: get-path (object)
Generic Writer: (setf get-path) (object)
Package

http2.

Methods
Reader Method: get-path ((server-stream server-stream))
Writer Method: (setf get-path) ((server-stream server-stream))

The path and query parts of the target URI

Source

classes.lisp.

Target Slot

path.

Generic Function: handle-undefined-frame (type flags length)

Callback that is called when a frame of unknown type is received - see extensions.

Package

http2.

Source

classes.lisp.

Methods
Method: handle-undefined-frame (type flags length)
Generic Function: peer-acks-settings (connection)

Called when SETTINGS-FRAME with ACK flag is received. By default does nothing.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-acks-settings (connection)
Method: peer-acks-settings ((connection logging-object))
Generic Function: peer-ends-http-stream (stream)

Do relevant state changes when closing http stream (as part of received HEADERS or PAYLOAD).

Package

http2.

Source

classes.lisp.

Methods
Method: peer-ends-http-stream :after ((stream logging-object))
Method: peer-ends-http-stream (stream)
Generic Function: peer-expects-settings-ack (connection)

Called when settings-frame without ACK is received, after individual SET-PEER-SETTING calls. By default, send ACK frame.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-expects-settings-ack (connection)
Method: peer-expects-settings-ack :before ((connection logging-object))
Generic Function: peer-opens-http-stream (connection stream-id frame-type)

Unknown stream ID was sent by the other side - i.e., from headers frame. Should return an object representing new stream.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-opens-http-stream :before ((connection logging-object) stream-id frame-type)
Method: peer-opens-http-stream (connection stream-id (frame-type (eql 1)))
Method: peer-opens-http-stream (connection stream-id (frame-type (eql 2)))
Method: peer-opens-http-stream :before ((connection client-http2-connection) stream-id frame-type)
Method: peer-opens-http-stream :before ((connection server-http2-connection) stream-id frame-type)
Method: peer-opens-http-stream :around ((connection logging-object) stream-id frame-type)
Generic Function: peer-resets-stream (stream error-code)

The RST_STREAM frame fully terminates the referenced stream and causes it to enter the "closed" state. After receiving a RST_STREAM on a stream, the receiver MUST NOT send additional frames for that stream, with the exception of PRIORITY. However, after sending the RST_STREAM, the sending endpoint MUST be prepared to receive and process additional frames sent on the stream that might have been sent by the peer prior to the arrival of the RST_STREAM.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-resets-stream (stream error-code)
Method: peer-resets-stream :before ((stream logging-object) error-code)
Generic Function: peer-sends-push-promise (stream)

This should be called on push promise (FIXME: and maybe it is not, and maybe the parameters should be different anyway). By default throws an error.

Package

http2.

Source

classes.lisp.

Methods
Method: peer-sends-push-promise (stream)
Generic Function: send-headers (stream-or-connection headers &key end-stream end-headers padded priority padding &allow-other-keys)

Send headers to the connection or stream. Stream is either an existing instance of a stream, or a connection; in this case a new stream is created on it. In both cases, the stream is returned.

Package

http2.

Source

classes.lisp.

Methods
Method: send-headers ((stream http2-stream) headers &key end-stream end-headers padded priority)
Method: send-headers :before ((stream logging-object) headers &rest raw-stream-args)
Method: send-headers ((connection http2-connection) headers &rest stream-args &key end-stream end-headers padding priority)
Generic Function: send-ping (connection &optional payload)

Send a ping request.

Package

http2.

Source

classes.lisp.

Methods
Method: send-ping (connection &optional payload)
Method: send-ping ((connection timeshift-pinging-connection) &optional payload)
Generic Function: set-peer-setting (connection name value)

Process received information about peers setting.

The setting relates to the CONNECTION. NAME is a keyword symbol (see *SETTINGS-ALIST*, subject to possible change to 16bit number in future) and VALUE is 32bit number.

Package

http2.

Source

classes.lisp.

Methods
Method: set-peer-setting (connection name value)

Fallback.

Method: set-peer-setting :before ((connection logging-object) name value)
Method: set-peer-setting (connection (name (eql :header-table-size)) value)
Method: set-peer-setting (connection (name (eql :initial-window-size)) value)
Method: set-peer-setting (connection (name (eql :max-frame-size)) value)
Method: set-peer-setting (connection (name (eql :max-header-list-size)) value)
Method: set-peer-setting ((connection client-http2-connection) (name (eql :enable-push)) value)
Method: set-peer-setting ((connection server-http2-connection) (name (eql :enable-push)) value)
Method: set-peer-setting (connection (name (eql :max-concurrent-streams)) value)

6.1.5 Standalone methods

Method: close ((stream binary-output-stream-over-data-frames) &key &allow-other-keys)
Source

payload-streams.lisp.

Method: close ((connection http2-connection) &key &allow-other-keys)
Source

classes.lisp.

Method: initialize-instance :after ((stream binary-output-stream-over-data-frames) &key connection window-size &allow-other-keys)
Source

payload-streams.lisp.

Method: initialize-instance :after ((connection client-http2-connection) &key &allow-other-keys)

In HTTP/2, each endpoint is required to send a connection preface as a final confirmation of the protocol in use and to establish the initial settings for the HTTP/2 connection. The client and server each send a different connection preface.

The client connection preface starts with a sequence of 24 octets. This sequence MUST be followed by a SETTINGS frame (Section 6.5), which MAY be empty.

Source

classes.lisp.

Method: initialize-instance :after ((stream http2-stream) &key connection)
Source

classes.lisp.

Method: initialize-instance :after ((connection server-http2-connection) &key &allow-other-keys)
Source

classes.lisp.

Method: print-object ((stream server-stream) out)
Source

classes.lisp.

Method: print-object ((o http2-stream) out)
Source

classes.lisp.

Method: stream-element-type ((stream binary-stream))
Source

payload-streams.lisp.

Method: stream-force-output ((stream binary-output-stream-over-data-frames))
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-listen ((stream binary-input-stream-over-data-frames))
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-read-byte ((stream binary-input-stream-over-data-frames))
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-write-byte ((stream binary-output-stream-over-data-frames) byte)
Package

sb-gray.

Source

payload-streams.lisp.

Method: stream-write-sequence ((stream binary-output-stream-over-data-frames) sequence start end &key)
Package

trivial-gray-streams.

Source

payload-streams.lisp.


6.1.6 Classes

Class: binary-output-stream-over-data-frames

Binary stream that accepts new octets to the output-buffer, until it is big enough to send the data as a data frame (or forced to by close of force-output).

Package

http2.

Source

payload-streams.lisp.

Direct superclasses
Direct methods
Direct Default Initargs
InitargValue
:to-write0
:to-store0
Direct slots
Slot: output-buffer
Readers

get-output-buffer.

Writers

(setf get-output-buffer).

Class: client-http2-connection

Client connections have odd-numbered streams.

Package

http2.

Source

classes.lisp.

Direct superclasses

http2-connection.

Direct methods
Direct Default Initargs
InitargValue
:id-to-use1
Class: client-stream

HTTP2 stream that checks headers as required for clients (no psedoheader other than :status allowed, etc.

Package

http2.

Source

classes.lisp.

Direct superclasses

http2-stream.

Direct methods
Direct Default Initargs
InitargValue
:statusnil
Direct slots
Slot: status

HTTP status code field (see [RFC7231], Section 6)

Initargs

:status

Readers

get-status.

Writers

(setf get-status).

Class: header-collecting-mixin

Mixin to be used to collect all observed headers to a slot.

Package

http2.

Source

classes.lisp.

Direct methods
Direct Default Initargs
InitargValue
:headersnil
Direct slots
Slot: headers
Initargs

:headers

Readers

get-headers.

Writers

(setf get-headers).

Class: history-printing-object

A ~LOGGING-OBJECT~ that implements ~ADD-LOG~ to print all logs to ~*TRACE-OUTPUT*~ as soon as it receives them.

Package

http2.

Source

classes.lisp.

Direct superclasses

logging-object.

Direct methods

add-log.

Class: logging-object

Objects with this mixin have ~ADD-LOG~ called in many situations so that the communication can be debugged or recorded.

Package

http2.

Source

classes.lisp.

Direct subclasses
Direct methods
Class: timeshift-pinging-connection

A mixin that implements specific DO-PING and DO-PONG so that the RTT is printed after DO-PING is send.

Package

http2.

Source

classes.lisp.

Direct methods

6.2 Internals


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.1 Constants

Constant: +altsvc-frame+
Package

http2.

Source

frames.lisp.

Constant: +cancel+

stream cancelled

Package

http2.

Source

utils.lisp.

Constant: +compression-error+

compression state not updated

Package

http2.

Source

utils.lisp.

Constant: +connect-error+

tcp connection error for connect method

Package

http2.

Source

utils.lisp.

Constant: +continuation-frame+
Package

http2.

Source

frames.lisp.

Constant: +data-frame+
Package

http2.

Source

frames.lisp.

Constant: +enhance-your-calm+

processing capacity exceeded

Package

http2.

Source

utils.lisp.

Constant: +flow-control-error+

flow-control limits exceeded

Package

http2.

Source

utils.lisp.

Constant: +frame-size-error+

frame size incorrect

Package

http2.

Source

utils.lisp.

Constant: +goaway-frame+
Package

http2.

Source

frames.lisp.

Constant: +headers-frame+
Package

http2.

Source

frames.lisp.

Constant: +http-1-1-required+

Use HTTP/1.1 for the request

Package

http2.

Source

utils.lisp.

Constant: +inadequate-security+

negotiated tls parameters not acceptable

Package

http2.

Source

utils.lisp.

Constant: +internal-error+

implementation fault

Package

http2.

Source

utils.lisp.

Constant: +known-frame-types-count+

Number of frame types we know.

Package

http2.

Source

frames.lisp.

Constant: +ping-frame+
Package

http2.

Source

frames.lisp.

Constant: +priority-frame+
Package

http2.

Source

frames.lisp.

Constant: +protocol-error+

protocol error detected

Package

http2.

Source

utils.lisp.

Constant: +push-promise-frame+
Package

http2.

Source

frames.lisp.

Constant: +refused-stream+

stream not processed

Package

http2.

Source

utils.lisp.

Constant: +rst-stream-frame+
Package

http2.

Source

frames.lisp.

Constant: +settings-frame+
Package

http2.

Source

frames.lisp.

Constant: +settings-timeout+

settings not acknowledged

Package

http2.

Source

utils.lisp.

Constant: +stream-closed+

frame received for closed stream

Package

http2.

Source

utils.lisp.

Constant: +window-update-frame+
Package

http2.

Source

frames.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.2 Special variables

Special Variable: *bytes-left*

Number of bytes left in frame

Package

http2.

Source

utils.lisp.

Special Variable: *bytes-to-possibly-reuse*
Package

http2.

Source

utils.lisp.

Special Variable: *bytes-to-reuse*
Package

http2.

Source

utils.lisp.

Special Variable: *error-codes*

This table maps error codes to mnemonic names - symbols.

Error codes are 32-bit fields that are used in RST_STREAM and GOAWAY frames to convey the reasons for the stream or connection error.

Error codes share a common code space. Some error codes apply only to either streams or the entire connection and have no defined semantics in the other context.

Package

http2.

Source

utils.lisp.

Special Variable: *flag-codes*

Property list of flag names and their bit index.

This makes use of the fact that same flag name has same index in all headers where it is used.

Package

http2.

Source

frames.lisp.

Special Variable: *frame-types*

Array of frame types. It is populated later with DEFINE-FRAME-TYPE.

Package

http2.

Source

frames.lisp.

Special Variable: *huffman-code*
Package

http2.

Source

headers.lisp.

Special Variable: *log-stream*

Stream for logging output send by LOGGER.

Package

http2.

Source

utils.lisp.

Special Variable: *settings-alist*

See https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml

Package

http2.

Source

frames.lisp.

Special Variable: *when-no-bytes-left-fn*

Function to call when no bytes are left. Either errors or calls continuations.

Package

http2.

Source

utils.lisp.

Special Variable: +client-preface-start+

The client connection preface starts with a sequence of 24 octets, which in hex notation is this. That is, the connection preface starts with the string "PRI * HTTP/2.0rnrnSMrnrn").

Package

http2.

Source

classes.lisp.

Special Variable: static-headers-table
Package

http2.

Source

headers.lisp.


6.2.3 Macros

Macro: check-place-empty-and-set-it (new-value accessor)

All HTTP/2 requests MUST include exactly one valid value for the :method, :scheme, and :path pseudo-header fields, unless it is a CONNECT request (Section 8.3). An HTTP request that omits mandatory pseudo-header fields is malformed (Section 8.1.2.6).

Package

http2.

Source

classes.lisp.

Macro: define-frame-type (type-code frame-type-name documentation (&rest parameters) (&key flags length must-have-stream-in must-not-have-stream bad-state-error has-reserved) writer-body (&body reader))

This specification defines a number of frame types, each identified by a unique 8-bit TYPE CODE. Each frame type serves a distinct purpose in the establishment and management either of the connection as a whole or of individual streams.

The macro defining FRAME-TYPE-NAME :foo defines
- a constant named ‘+foo+‘ that translates to TYPE-CODE,
- a writer function WRITE-FOO that takes CONNECTION, HTTP-STREAM and possibly other PARAMETERS, sends frame header for given frame type with FLAGS and LENGTH expressions, and then executes WRITER-BODY with functions write-bytes and write-vector bound to writing to the transport stream. Each PARAMETER is a list of name, size in bits (or :variable) and documentation.
- a reader function named READ-FOO that takes CONNECTION, HTTP-STREAM, payload LENGTH and FLAGS and reads the payload of the frame: it runs READER-BODY with read-bytes and read-vector bound to reading from the transport stream. This function is supposed to be called from READ-FRAME that has already read the header and determined the appropriate http stream.

The transmission of specific frame types can alter the state of a connection. If endpoints fail to maintain a synchronized view of the connection state, successful communication within the connection will no longer be possible. Therefore, it is important that endpoints have a shared comprehension of how the state is affected by the use any given frame.

Package

http2.

Source

frames.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.4 Ordinary functions

Function: account-frame-window-contribution (connection stream length)
Package

http2.

Source

frames.lisp.

Function: close-output (stream)
Package

http2.

Source

payload-streams.lisp.

Function: copy-frame-type (instance)
Package

http2.

Source

frames.lisp.

Function: count-open-streams (connection)
Package

http2.

Source

classes.lisp.

Function: create-new-local-stream (connection &optional pars)

Create new local stream of default class on CONNECTION. Additional PARS are passed to the make-instance

Package

http2.

Source

frames.lisp.

Function: decode-huffman (bytes)
Package

http2.

Source

headers.lisp.

Function: decode-huffman-to-stream (char-stream bytes &optional nr nr-size prefix)
Package

http2.

Source

headers.lisp.

Function: decode-octet-fn (&optional codes)
Package

http2.

Source

headers.lisp.

Function: dynamic-table-entry-size (name value)

The size of an entry is the sum of its name’s length in octets (as defined in Section 5.2), its value’s length in octets, and 32.

The size of an entry is calculated using the length of its name and value without any Huffman encoding applied.

Package

http2.

Source

classes.lisp.

Function: dynamic-table-value (context idx)

Header on position IDX in the dynamic table in CONTEXT.

This is factored out to be used in testing.

Package

http2.

Source

headers.lisp.

Function: empty-data-p (data)
Package

http2.

Source

payload-streams.lisp.

Function: encode-huffman (string res)

Convert string to huffman encoding.

Package

http2.

Source

headers.lisp.

Function: find-header-in-tables (context name)

Find header NAME in static table and, if CONNECTION is not null, in its dynamic table. Return the index, or NIL if not found.

Package

http2.

Source

headers.lisp.

Function: find-in-tables (context item test key static-end)

Find something (pair or header name) in static and possibly dynamic table.

Package

http2.

Source

headers.lisp.

Function: find-pair-in-tables (context pair)

Find header PAIR in static table and, if CONNECTION is not null, in its dynamic table. Return the index, or NIL if not found.

Package

http2.

Source

headers.lisp.

Function: find-setting-by-id (id)
Package

http2.

Source

frames.lisp.

Function: find-setting-code (name)
Package

http2.

Source

frames.lisp.

Function: flags-to-code (flags)

Create code to generate flag octet from FLAGS variable.

Package

http2.

Source

frames.lisp.

Function: flags-to-vars-code (flags)

Create code to extract variables named as each member of *flag-codes*
that is set to T if it is in FLAGS and appropriate bit is set in the read flags.

Package

http2.

Source

frames.lisp.

Reader: frame-type-documentation (instance)
Writer: (setf frame-type-documentation) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

documentation.

Reader: frame-type-name (instance)
Writer: (setf frame-type-name) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

name.

Function: frame-type-p (object)
Package

http2.

Source

frames.lisp.

Reader: frame-type-receive-fn (instance)
Writer: (setf frame-type-receive-fn) (instance)
Package

http2.

Source

frames.lisp.

Target Slot

receive-fn.

Function: get-error-name (code)
Package

http2.

Source

utils.lisp.

Function: get-history (object)
Package

http2.

Source

classes.lisp.

Function: get-integer-from-octet (stream initial-octet bit-size)

Decode an integer from starting OCTET and additional octets in STREAM as defined in RFC7541 sect. 5.1.

Package

http2.

Source

headers.lisp.

Function: header-size (header)

Size of the header for dynamic cache purposes: 32 octets plus header and name sizes, including leading : at special header names.

Package

http2.

Source

headers.lisp.

Function: header-writer (res name value &optional context huffman)

Encode header consisting of NAME and VALUE.

The ‘never-indexed‘ format is never generated,
use a separate function for this (and this function needs to be written).

When CONTEXT is provided, use incremental indexing with dynamic table in that CONTEXT.

Use Huffman when HUFFMAN is true.

Package

http2.

Source

headers.lisp.

Function: huffman-coded-size (string)

Size of huffman-coded text

Package

http2.

Source

headers.lisp.

Function: integer-to-array (integer bit-size mask)

Represent integer to a vector as defined in RFC7541 sect. 5.1.

Package

http2.

Source

headers.lisp.

Function: logger (fmt &rest pars)

Send a format message to *LOG-STREAM*.

Package

http2.

Source

utils.lisp.

Function: make-cond-branch (i prefix code)

Return decoder code for I matching PREFIX among codes.

Package

http2.

Source

headers.lisp.

Function: make-frame-type (name documentation receive-fn)
Package

http2.

Source

frames.lisp.

Function: peer-opens-http-stream-really-open (connection stream-id state)
Package

http2.

Source

classes.lisp.

Function: pop-frame (data)
Package

http2.

Source

payload-streams.lisp.

Function: push-frame (data frame)
Package

http2.

Source

payload-streams.lisp.

Function: read-altsvc-frame (connection http-stream length flags)

See RFC 7838. The ALTSVC HTTP/2 frame advertises the availability of an alternative service to an HTTP/2 client.

#+begin_src artist +——————————-+——————————-+ | Origin-Len (16) | Origin? (*) ... +——————————-+——————————-+ | Alt-Svc-Field-Value (*) ... +—————————————————————+ #+end_src

Package

http2.

Source

frames.lisp.

Function: read-and-add-headers (connection http-stream length end-headers)
Package

http2.

Source

frames.lisp.

Function: read-byte* (stream)
Package

http2.

Source

utils.lisp.

Function: read-bytes (stream n)

Read N bytes from stream to an integer

Package

http2.

Source

utils.lisp.

Function: read-continuation-frame (connection http-stream length flags)

#+begin_src artist

+—————————————————————+
| Header Block Fragment (*) ... +—————————————————————+ #+end_src

The CONTINUATION frame (type=0x9) is used to continue a sequence of header block fragments (Section 4.3). Any number of CONTINUATION frames can be sent, as long as the preceding frame is on the same stream and is a HEADERS, PUSH_PROMISE, or CONTINUATION frame without the END_HEADERS flag set.

Package

http2.

Source

frames.lisp.

Function: read-data-frame (connection http-stream length flags)

#+begin_src artist

+—————+———————————————–+ | Data (*) ... +—————————————————————+ #+end_src

DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated with a stream. One or more DATA frames are used, for instance, to carry HTTP request or response payloads.

Package

http2.

Source

frames.lisp.

Function: read-from-tables (index context)

Read item on INDEX in static table or dynamic table in CONNECTION.

Package

http2.

Source

headers.lisp.

Function: read-goaway-frame (connection http-stream length flags)

#+begin_src artist +-+————————————————————-+ |R| Last-Stream-ID (31) | +-+————————————————————-+ | Error Code (32) | +—————————————————————+ | Additional Debug Data (*) | +—————————————————————+ #+end_src

The GOAWAY frame (type=0x7) is used to initiate shutdown of a connection or to signal serious error conditions. GOAWAY allows an endpoint to gracefully stop accepting new streams while still finishing processing of previously established streams. This enables administrative actions, like server maintenance.

Package

http2.

Source

frames.lisp.

Function: read-headers-frame (connection http-stream length flags)

#+begin_src artist

+-+————-+———————————————–+ |E| Stream Dependency? (31) | +-+————-+———————————————–+ | Weight? (8) | +-+————-+———————————————–+ | Header Block Fragment (*) ... +—————————————————————+ #+end_src

The HEADERS frame (type=0x1) is used to open a stream (Section 5.1), and additionally carries a header block fragment. HEADERS frames can be sent on a stream in the "idle", "reserved (local)", "open", or "half-closed (remote)" state.

Package

http2.

Source

frames.lisp.

Function: read-http-header (connection)

Read header field from stream. Decrement *bytes-left* as needed.

Package

http2.

Source

headers.lisp.

Function: read-huffman (stream len)

Read Huffman coded text of length LEN from STREAM.

Package

http2.

Source

headers.lisp.

Function: read-padding (stream padding-size)

Read the padding if padding-size is not NIL.

Package

http2.

Source

frames.lisp.

Function: read-ping-frame (connection http-stream length flags)

The PING frame (type=0x6) is a mechanism for measuring a minimal round-trip time from the sender, as well as determining whether an idle connection is still functional. PING frames can be sent from any endpoint.

#+begin_src artist +—————————————————————+ | | | Opaque Data (64) | | | +—————————————————————+ #+end_src

Figure 12: PING Payload Format

In addition to the frame header, PING frames MUST contain 8 octets of opaque data in the payload. A sender can include any value it chooses and use those octets in any fashion.

Receivers of a PING frame that does not include an ACK flag MUST send a PING frame with the ACK flag set in response, with an identical payload. PING responses SHOULD be given higher priority than any other frame.

The PING frame defines the following flags:

ACK (0x1): When set, bit 0 indicates that this PING frame is a PING response. An endpoint MUST set this flag in PING responses. An endpoint MUST NOT respond to PING frames containing this flag.

Package

http2.

Source

frames.lisp.

Function: read-priority-frame (connection http-stream length flags)

The PRIORITY frame (type=0x2) specifies the sender-advised priority of a stream (Section 5.3).

#+begin_src artist +-+————————————————————-+ |E| Stream Dependency (31) | +-+————-+———————————————–+ | Weight (8) |
+-+————-+
#+end_src

The payload of a PRIORITY frame contains the following fields:

E: A single-bit flag indicating that the stream dependency is exclusive (see Section 5.3).

Stream Dependency: A 31-bit stream identifier for the stream that this stream depends on (see Section 5.3).

Weight: An unsigned 8-bit integer representing a priority weight for the stream (see Section 5.3). Add one to the value to obtain a weight between 1 and 256.

Package

http2.

Source

frames.lisp.

Function: read-push-promise-frame (connection http-stream length flags)

The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of streams the sender intends to initiate. The PUSH_PROMISE frame includes the unsigned 31-bit identifier of the stream the endpoint plans to create along with a set of headers that provide additional context for the stream. Section 8.2 contains a thorough description of the use of PUSH_PROMISE frames.

#+begin_src artist +-+————-+———————————————–+ |R| Promised Stream ID (31) | +-+—————————–+——————————-+ | Header Block Fragment (*) ... +—————————————————————+ #+end_src

The PUSH_PROMISE frame payload has the following fields:

R: A single reserved bit.

Promised Stream ID: An unsigned 31-bit integer that identifies the stream that is reserved by the PUSH_PROMISE. The promised stream identifier MUST be a valid choice for the next stream sent by the sender (see "new stream identifier" in Section 5.1.1).

Header Block Fragment: A header block fragment (Section 4.3) containing request header fields.

The PUSH_PROMISE frame defines the following flags:

END_HEADERS (0x4): When set, bit 2 indicates that this frame contains an entire header block (Section 4.3) and is not followed by any CONTINUATION frames.

A PUSH_PROMISE frame without the END_HEADERS flag set MUST be followed by a CONTINUATION frame for the same stream. A receiver MUST treat the receipt of any other type of frame or a frame on a different stream as a connection error (Section 5.4.1) of type PROTOCOL_ERROR.

Package

http2.

Source

frames.lisp.

Function: read-rst-stream-frame (connection http-stream length flags)

The RST_STREAM frame (type=0x3) allows for immediate termination of a stream. RST_STREAM is sent to request cancellation of a stream or to indicate that an error condition has occurred.

#+begin_src artist +—————————————————————+ | Error Code (32) | +—————————————————————+ #+end_src

The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the error code (Section 7). The error code indicates why the stream is being terminated.

The RST_STREAM frame does not define any flags.

Package

http2.

Source

frames.lisp.

Function: read-settings-frame (connection http-stream length flags)

#+begin_src artist
+——————————-+
| Identifier (16) | +——————————-+——————————-+ | Value (32) | +—————————————————————+ #+end_src

The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints communicate, such as preferences and constraints on peer behavior. The SETTINGS frame is also used to acknowledge the receipt of those parameters. Individually, a SETTINGS parameter can also be referred to as a "setting".

Package

http2.

Source

frames.lisp.

Function: read-string-from-stream (stream)

Read string literal from a STREAM as defined in RFC7541 sect 5.2.

Package

http2.

Source

headers.lisp.

Function: read-window-update-frame (connection http-stream length flags)

#+begin_src artist
+-+————————————————————-+
|R| Window Size Increment (31) |
+-+————————————————————-+
#+end_src

The WINDOW_UPDATE frame (type=0x8) is used to implement flow control; see Section 5.2 for an overview. Flow control operates at two levels: on each individual stream and on the entire connection.

Package

http2.

Source

frames.lisp.

Function: send-data (stream sequence start size)

Send data in OUTPUT-BUFFER and SIZE data from SEQUENCE starting at START in one data frame; mark them as sent.

Return new START.

Package

http2.

Source

payload-streams.lisp.

Function: set-when-no-bytes-left-fn (http2-stream-id end-headers)

Read a header of continuation frame if continuation expected. Set *when-no-bytes-left-fn* appropriately.

Package

http2.

Source

frames.lisp.

Function: store-string (string res huffman)

Add STRING to fillable array RES in format defined by HPACK, possibly using huffman encoding.

Package

http2.

Source

headers.lisp.

Function: vector-from-hex-text (text)
Package

http2.

Source

utils.lisp.

Function: vector-index-to-hpack-index (table idx)

Convert between hpack index and index in the vector. This works both ways.

Package

http2.

Source

headers.lisp.

Function: write-31-bits (stream value reserved)

Write 31 bits of VALUE to a STREAM. Set first bit if RESERVED is set.

Package

http2.

Source

frames.lisp.

Function: write-bytes (stream n value)

write VALUE as N octets to stream. Maximum length is 64 bits (used by ping).

Package

http2.

Source

utils.lisp.

Function: write-integer-to-array (array integer bit-size mask)

Write integer to a fillable vector as defined in RFC7541 sect. 5.1.

Package

http2.

Source

headers.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.5 Generic functions

Generic Function: add-dynamic-header (context header)
Package

http2.

Methods
Method: add-dynamic-header (context header)

Add dynamic header to a table.

Source

headers.lisp.

Generic Function: add-header (connection stream name value)
Package

http2.

Source

classes.lisp.

Methods
Method: add-header :around (connection (stream http2-stream) name value)

Decode compressed headers

Method: add-header (connection stream name value)
Method: add-header (connection (stream server-stream) (name symbol) value)
Method: add-header (connection (stream client-stream) (name symbol) value)
Method: add-header :after (connection (stream log-headers-mixin) name value)
Method: add-header (connection (stream header-collecting-mixin) name value)
Method: add-header :before (connection (stream logging-object) name value)
Generic Function: add-log (object log-pars)
Package

http2.

Source

classes.lisp.

Methods
Method: add-log ((object history-keeping-object) log-pars)
Method: add-log ((object history-printing-object) log-pars)
Generic Function: do-ping (connection data)

Called when ping-frame without ACK is received. By default send ping-frame with ACK and same data.

Package

http2.

Source

classes.lisp.

Methods
Method: do-ping (connection data)
Method: do-ping :before ((connection logging-object) data)
Generic Reader: get-acked-settings (object)
Package

http2.

Methods
Reader Method: get-acked-settings ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

acked-settings.

Generic Writer: (setf get-acked-settings) (object)
Package

http2.

Methods
Writer Method: (setf get-acked-settings) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

acked-settings.

Generic Reader: get-authority (object)
Generic Writer: (setf get-authority) (object)
Package

http2.

Methods
Reader Method: get-authority ((server-stream server-stream))
Writer Method: (setf get-authority) ((server-stream server-stream))

The authority portion of the target URI ([RFC3986], Section 3.2)

Source

classes.lisp.

Target Slot

authority.

Generic Reader: get-bytes-left-in-table (object)
Package

http2.

Methods
Reader Method: get-bytes-left-in-table ((hpack-context hpack-context))

automatically generated reader method

Source

headers.lisp.

Target Slot

bytes-left-in-table.

Generic Writer: (setf get-bytes-left-in-table) (object)
Package

http2.

Methods
Writer Method: (setf get-bytes-left-in-table) ((hpack-context hpack-context))

automatically generated writer method

Source

headers.lisp.

Target Slot

bytes-left-in-table.

Generic Reader: get-compression-context (object)
Package

http2.

Methods
Reader Method: get-compression-context ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

compression-context.

Generic Writer: (setf get-compression-context) (object)
Package

http2.

Methods
Writer Method: (setf get-compression-context) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

compression-context.

Generic Reader: get-connection (object)
Package

http2.

Methods
Reader Method: get-connection ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

connection.

Generic Writer: (setf get-connection) (object)
Package

http2.

Methods
Writer Method: (setf get-connection) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

connection.

Generic Reader: get-data (object)
Package

http2.

Methods
Reader Method: get-data ((binary-input-stream-over-data-frames binary-input-stream-over-data-frames))

tlist that of accepted frames and cons of last frame and nil.

Source

payload-streams.lisp.

Target Slot

data.

Reader Method: get-data ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

data.

Generic Writer: (setf get-data) (object)
Package

http2.

Methods
Writer Method: (setf get-data) ((binary-input-stream-over-data-frames binary-input-stream-over-data-frames))

tlist that of accepted frames and cons of last frame and nil.

Source

payload-streams.lisp.

Target Slot

data.

Writer Method: (setf get-data) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

data.

Generic Reader: get-debug-data (condition)
Generic Writer: (setf get-debug-data) (condition)
Package

http2.

Methods
Reader Method: get-debug-data ((condition go-away))
Writer Method: (setf get-debug-data) ((condition go-away))
Source

classes.lisp.

Target Slot

debug-data.

Reader Method: get-debug-data ((condition http-stream-error))
Writer Method: (setf get-debug-data) ((condition http-stream-error))
Source

classes.lisp.

Target Slot

debug-data.

Reader Method: get-debug-data ((condition peer-should-go-away))
Writer Method: (setf get-debug-data) ((condition peer-should-go-away))
Source

classes.lisp.

Target Slot

debug-data.

Generic Reader: get-decompression-context (object)
Package

http2.

Methods
Reader Method: get-decompression-context ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

decompression-context.

Generic Writer: (setf get-decompression-context) (object)
Package

http2.

Methods
Writer Method: (setf get-decompression-context) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

decompression-context.

Generic Reader: get-deleted-items (object)
Package

http2.

Methods
Reader Method: get-deleted-items ((hpack-context hpack-context))

automatically generated reader method

Source

headers.lisp.

Target Slot

deleted-items.

Generic Writer: (setf get-deleted-items) (object)
Package

http2.

Methods
Writer Method: (setf get-deleted-items) ((hpack-context hpack-context))

automatically generated writer method

Source

headers.lisp.

Target Slot

deleted-items.

Generic Reader: get-depends-on (object)
Package

http2.

Methods
Reader Method: get-depends-on ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

depends-on.

Generic Writer: (setf get-depends-on) (object)
Package

http2.

Methods
Writer Method: (setf get-depends-on) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

depends-on.

Generic Reader: get-dynamic-table (object)
Package

http2.

Methods
Reader Method: get-dynamic-table ((hpack-context hpack-context))

automatically generated reader method

Source

headers.lisp.

Target Slot

dynamic-table.

Generic Writer: (setf get-dynamic-table) (object)
Package

http2.

Methods
Writer Method: (setf get-dynamic-table) ((hpack-context hpack-context))

automatically generated writer method

Source

headers.lisp.

Target Slot

dynamic-table.

Generic Reader: get-dynamic-table-size (object)
Package

http2.

Methods
Reader Method: get-dynamic-table-size ((hpack-context hpack-context))

automatically generated reader method

Source

headers.lisp.

Target Slot

dynamic-table-size.

Generic Writer: (setf get-dynamic-table-size) (object)
Package

http2.

Methods
Writer Method: (setf get-dynamic-table-size) ((hpack-context hpack-context))

automatically generated writer method

Source

headers.lisp.

Target Slot

dynamic-table-size.

Generic Reader: get-error-code (condition)
Generic Writer: (setf get-error-code) (condition)
Package

http2.

Methods
Reader Method: get-error-code ((condition go-away))
Writer Method: (setf get-error-code) ((condition go-away))
Source

classes.lisp.

Target Slot

error-code.

Reader Method: get-error-code ((condition http-stream-error))
Writer Method: (setf get-error-code) ((condition http-stream-error))
Source

classes.lisp.

Target Slot

error-code.

Reader Method: get-error-code ((condition peer-should-go-away))
Writer Method: (setf get-error-code) ((condition peer-should-go-away))
Source

classes.lisp.

Target Slot

error-code.

Generic Reader: get-id-to-use (object)
Generic Writer: (setf get-id-to-use) (object)
Package

http2.

Methods
Reader Method: get-id-to-use ((http2-connection http2-connection))
Writer Method: (setf get-id-to-use) ((http2-connection http2-connection))

Streams are identified with an unsigned 31-bit integer.

Source

classes.lisp.

Target Slot

id-to-use.

Generic Reader: get-index (object)
Package

http2.

Methods
Reader Method: get-index ((binary-input-stream-over-data-frames binary-input-stream-over-data-frames))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

index.

Generic Writer: (setf get-index) (object)
Package

http2.

Methods
Writer Method: (setf get-index) ((binary-input-stream-over-data-frames binary-input-stream-over-data-frames))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

index.

Generic Reader: get-initial-peer-window-size (object)
Package

http2.

Methods
Reader Method: get-initial-peer-window-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

initial-peer-window-size.

Generic Writer: (setf get-initial-peer-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-initial-peer-window-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

initial-peer-window-size.

Generic Reader: get-initial-window-size (object)
Package

http2.

Methods
Reader Method: get-initial-window-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

initial-window-size.

Generic Writer: (setf get-initial-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-initial-window-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

initial-window-size.

Generic Reader: get-last-id-seen (object)
Package

http2.

Methods
Reader Method: get-last-id-seen ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

last-id-seen.

Generic Writer: (setf get-last-id-seen) (object)
Package

http2.

Methods
Writer Method: (setf get-last-id-seen) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

last-id-seen.

Generic Reader: get-last-stream-id (condition)
Generic Writer: (setf get-last-stream-id) (condition)
Package

http2.

Methods
Reader Method: get-last-stream-id ((condition go-away))
Writer Method: (setf get-last-stream-id) ((condition go-away))
Source

classes.lisp.

Target Slot

last-stream-id.

Reader Method: get-last-stream-id ((condition peer-should-go-away))
Writer Method: (setf get-last-stream-id) ((condition peer-should-go-away))
Source

classes.lisp.

Target Slot

last-stream-id.

Generic Reader: get-max-frame-size (object)
Package

http2.

Methods
Reader Method: get-max-frame-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

max-frame-size.

Generic Writer: (setf get-max-frame-size) (object)
Package

http2.

Methods
Writer Method: (setf get-max-frame-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

max-frame-size.

Generic Reader: get-max-peer-frame-size (object)
Package

http2.

Methods
Reader Method: get-max-peer-frame-size ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

max-peer-frame-size.

Generic Writer: (setf get-max-peer-frame-size) (object)
Package

http2.

Methods
Writer Method: (setf get-max-peer-frame-size) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

max-peer-frame-size.

Generic Reader: get-method (object)
Generic Writer: (setf get-method) (object)
Package

http2.

Methods
Reader Method: get-method ((server-stream server-stream))
Writer Method: (setf get-method) ((server-stream server-stream))

The HTTP method ([RFC7231], Section 4)

Source

classes.lisp.

Target Slot

method.

Generic Reader: get-network-stream (object)
Package

http2.

Methods
Reader Method: get-network-stream ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

network-stream.

Reader Method: get-network-stream ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

network-stream.

Generic Writer: (setf get-network-stream) (object)
Package

http2.

Methods
Writer Method: (setf get-network-stream) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

network-stream.

Writer Method: (setf get-network-stream) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

network-stream.

Generic Reader: get-output-buffer (object)
Package

http2.

Methods
Reader Method: get-output-buffer ((binary-output-stream-over-data-frames binary-output-stream-over-data-frames))

automatically generated reader method

Source

payload-streams.lisp.

Target Slot

output-buffer.

Generic Writer: (setf get-output-buffer) (object)
Package

http2.

Methods
Writer Method: (setf get-output-buffer) ((binary-output-stream-over-data-frames binary-output-stream-over-data-frames))

automatically generated writer method

Source

payload-streams.lisp.

Target Slot

output-buffer.

Generic Reader: get-peer-accepts-push (object)
Package

http2.

Methods
Reader Method: get-peer-accepts-push ((server-http2-connection server-http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

peer-accepts-push.

Generic Writer: (setf get-peer-accepts-push) (object)
Package

http2.

Methods
Writer Method: (setf get-peer-accepts-push) ((server-http2-connection server-http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

peer-accepts-push.

Generic Reader: get-peer-window-size (object)
Package

http2.

Methods
Reader Method: get-peer-window-size ((flow-control-mixin flow-control-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

peer-window-size.

Generic Writer: (setf get-peer-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-peer-window-size) ((flow-control-mixin flow-control-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

peer-window-size.

Generic Reader: get-reversed-history (object)
Package

http2.

Methods
Reader Method: get-reversed-history ((history-keeping-object history-keeping-object))

automatically generated reader method

Source

classes.lisp.

Target Slot

reversed-history.

Generic Writer: (setf get-reversed-history) (object)
Package

http2.

Methods
Writer Method: (setf get-reversed-history) ((history-keeping-object history-keeping-object))

automatically generated writer method

Source

classes.lisp.

Target Slot

reversed-history.

Generic Reader: get-scheme (object)
Generic Writer: (setf get-scheme) (object)
Package

http2.

Methods
Reader Method: get-scheme ((server-stream server-stream))
Writer Method: (setf get-scheme) ((server-stream server-stream))

Scheme portion of the target URI ([RFC3986], Section 3.1).

Not restricted to "http" and "https" schemed URIs.
A proxy or gateway can translate requests for non-HTTP schemes, enabling the use of HTTP to interact with non-HTTP services

Source

classes.lisp.

Target Slot

scheme.

Generic Reader: get-seen-text-header (object)
Generic Writer: (setf get-seen-text-header) (object)
Package

http2.

Methods
Reader Method: get-seen-text-header ((http2-stream http2-stream))
Writer Method: (setf get-seen-text-header) ((http2-stream http2-stream))

Set if in the header block a non-pseudo header was already seen.

Source

classes.lisp.

Target Slot

seen-text-header.

Generic Function: get-settings (connection)
Package

http2.

Source

classes.lisp.

Method Combination

append.

Options

:most-specific-first

Methods
Method: get-settings append (connection)
Method: get-settings append ((connection client-http2-connection))
Generic Reader: get-state (object)
Package

http2.

Methods
Reader Method: get-state ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

state.

Generic Function: (setf get-state) (object)
Package

http2.

Methods
Method: (setf get-state) :around ((stream logging-object))
Source

classes.lisp.

Writer Method: (setf get-state) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

state.

Generic Reader: get-status (object)
Generic Writer: (setf get-status) (object)
Package

http2.

Methods
Reader Method: get-status ((client-stream client-stream))
Writer Method: (setf get-status) ((client-stream client-stream))

HTTP status code field (see [RFC7231], Section 6)

Source

classes.lisp.

Target Slot

status.

Generic Reader: get-stream (condition)
Generic Writer: (setf get-stream) (condition)
Package

http2.

Methods
Reader Method: get-stream ((condition http-stream-error))
Writer Method: (setf get-stream) ((condition http-stream-error))
Source

classes.lisp.

Target Slot

stream.

Generic Reader: get-stream-class (object)
Generic Writer: (setf get-stream-class) (object)
Package

http2.

Methods
Reader Method: get-stream-class ((http2-connection http2-connection))
Writer Method: (setf get-stream-class) ((http2-connection http2-connection))

Class for new streams

Source

classes.lisp.

Target Slot

stream-class.

Generic Reader: get-stream-id (object)
Package

http2.

Methods
Reader Method: get-stream-id ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

stream-id.

Reader Method: get-stream-id ((http2-connection http2-connection))

automatically generated reader method

Source

classes.lisp.

Target Slot

stream-id.

Generic Writer: (setf get-stream-id) (object)
Package

http2.

Methods
Writer Method: (setf get-stream-id) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

stream-id.

Writer Method: (setf get-stream-id) ((http2-connection http2-connection))

automatically generated writer method

Source

classes.lisp.

Target Slot

stream-id.

Generic Reader: get-streams (object)
Generic Writer: (setf get-streams) (object)
Package

http2.

Methods
Reader Method: get-streams ((http2-connection http2-connection))
Writer Method: (setf get-streams) ((http2-connection http2-connection))

Sequence of HTTP2 streams

Source

classes.lisp.

Target Slot

streams.

Generic Reader: get-updates-needed (object)
Package

http2.

Methods
Reader Method: get-updates-needed ((hpack-context hpack-context))

automatically generated reader method

Source

headers.lisp.

Target Slot

updates-needed.

Generic Writer: (setf get-updates-needed) (object)
Package

http2.

Methods
Writer Method: (setf get-updates-needed) ((hpack-context hpack-context))

automatically generated writer method

Source

headers.lisp.

Target Slot

updates-needed.

Generic Reader: get-weight (object)
Package

http2.

Methods
Reader Method: get-weight ((http2-stream http2-stream))

automatically generated reader method

Source

classes.lisp.

Target Slot

weight.

Generic Writer: (setf get-weight) (object)
Package

http2.

Methods
Writer Method: (setf get-weight) ((http2-stream http2-stream))

automatically generated writer method

Source

classes.lisp.

Target Slot

weight.

Generic Reader: get-window-size (object)
Package

http2.

Methods
Reader Method: get-window-size ((flow-control-mixin flow-control-mixin))

automatically generated reader method

Source

classes.lisp.

Target Slot

window-size.

Generic Writer: (setf get-window-size) (object)
Package

http2.

Methods
Writer Method: (setf get-window-size) ((flow-control-mixin flow-control-mixin))

automatically generated writer method

Source

classes.lisp.

Target Slot

window-size.

Generic Function: handle-alt-svc (stream origin value)

An ALTSVC frame from a server to a client on a stream other than stream 0 indicates that the conveyed alternative service is associated with the origin of that stream.

An ALTSVC frame from a server to a client on stream 0 indicates that the conveyed alternative service is associated with the origin contained in the Origin field of the frame. An association with an origin that the client does not consider authoritative for the current connection MUST be ignored.

Package

http2.

Source

classes.lisp.

Methods
Method: handle-alt-svc (stream origin value)

Default method ignores alt-svc info.

Method: handle-alt-svc ((stream logging-object) origin value)
Generic Function: http2-error (connection error-code debug-code &rest args)
Package

http2.

Methods
Method: http2-error (connection error-code debug-code &rest args)
Source

classes.lisp.

Generic Function: process-end-headers (connection stream)
Package

http2.

Source

classes.lisp.

Methods
Method: process-end-headers :before (connection (stream logging-object))
Method: process-end-headers (connection stream)
Method: process-end-headers (connection (stream client-stream))
Method: process-end-headers (connection (stream server-stream))
Generic Function: send-stream-error (stream error-code note)
Package

http2.

Source

classes.lisp.

Methods
Method: send-stream-error ((stream http2-stream) error-code note)

Next: , Previous: , Up: Internals   [Contents][Index]

6.2.6 Conditions

Condition: go-away
Package

http2.

Source

classes.lisp.

Direct superclasses

serious-condition.

Direct methods
Direct slots
Slot: error-code
Initargs

:error-code

Readers

get-error-code.

Writers

(setf get-error-code).

Slot: debug-data
Initargs

:debug-data

Readers

get-debug-data.

Writers

(setf get-debug-data).

Slot: last-stream-id
Initargs

:last-stream-id

Readers

get-last-stream-id.

Writers

(setf get-last-stream-id).

Condition: http-stream-error
Package

http2.

Source

classes.lisp.

Direct superclasses

serious-condition.

Direct methods
Direct slots
Slot: error-code
Initargs

:error-code

Readers

get-error-code.

Writers

(setf get-error-code).

Slot: debug-data
Initargs

:debug-data

Readers

get-debug-data.

Writers

(setf get-debug-data).

Slot: stream
Package

common-lisp.

Initargs

:stream

Readers

get-stream.

Writers

(setf get-stream).

Condition: peer-should-go-away
Package

http2.

Source

classes.lisp.

Direct superclasses

serious-condition.

Direct methods
Direct slots
Slot: error-code
Initargs

:error-code

Readers

get-error-code.

Writers

(setf get-error-code).

Slot: debug-data
Initargs

:debug-data

Readers

get-debug-data.

Writers

(setf get-debug-data).

Slot: last-stream-id
Initargs

:last-stream-id

Readers

get-last-stream-id.

Writers

(setf get-last-stream-id).


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.7 Structures

Structure: frame-type

Description of a frame type

Package

http2.

Source

frames.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: name
Readers

frame-type-name.

Writers

(setf frame-type-name).

Slot: receive-fn
Readers

frame-type-receive-fn.

Writers

(setf frame-type-receive-fn).

Slot: documentation
Package

common-lisp.

Readers

frame-type-documentation.

Writers

(setf frame-type-documentation).


Previous: , Up: Internals   [Contents][Index]

6.2.8 Classes

Class: binary-input-stream-over-data-frames

Binary stream that reads data from the http stream.

It keeps data from last data frame in BUFFER, starting with INDEX.

Package

http2.

Source

payload-streams.lisp.

Direct superclasses
Direct methods
Direct Default Initargs
InitargValue
:index0
:data(cons nil nil)
Direct slots
Slot: index
Initargs

:index

Readers

get-index.

Writers

(setf get-index).

Slot: data

tlist that of accepted frames and cons of last frame and nil.

Initargs

:data

Readers

get-data.

Writers

(setf get-data).

Class: binary-stream
Package

http2.

Source

payload-streams.lisp.

Direct subclasses
Direct methods

stream-element-type.

Class: body-collecting-mixin

Mixin to collect all payload parts to one string.

Package

http2.

Source

classes.lisp.

Direct methods
Direct Default Initargs
InitargValue
:body
Direct slots
Slot: body
Initargs

:body

Readers

get-body.

Writers

(setf get-body).

Class: flow-control-mixin

The flow control parameters are used both for streams and connections.

Package

http2.

Source

classes.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: window-size
Initargs

:window-size

Readers

get-window-size.

Writers

(setf get-window-size).

Slot: peer-window-size
Initargs

:peer-window-size

Readers

get-peer-window-size.

Writers

(setf get-peer-window-size).

Class: history-keeping-object
Package

http2.

Source

classes.lisp.

Direct superclasses

logging-object.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:reversed-historynil
Direct slots
Slot: reversed-history
Initargs

:reversed-history

Readers

get-reversed-history.

Writers

(setf get-reversed-history).

Class: hpack-context

Dynamic tables implementation: they are stored in an adjustable array, with
[0] element storing first element initially, and (s+k)th element after k insertions.

After deletion of D elements, element s+k is stored on index D, element s+1 on index

<———- Index Address Space ———->
<– Static Table –> <– Dynamic Table –>
+—+———–+—+ +—+———–+—+
| 1 | ... | s | |s+1| ... |s+k|
+—+———–+—+ +—+———–+—+
^ |
| V
Insertion Point Dropping Point

Package

http2.

Source

headers.lisp.

Direct methods
Direct Default Initargs
InitargValue
:dynamic-table(make-array 0 fill-pointer 0 adjustable t)
:dynamic-table-size4096
:deleted-items0
:updates-needednil
Direct slots
Slot: dynamic-table
Initargs

:dynamic-table

Readers

get-dynamic-table.

Writers

(setf get-dynamic-table).

Slot: bytes-left-in-table
Initargs

:dynamic-table-size

Readers

get-bytes-left-in-table.

Writers

(setf get-bytes-left-in-table).

Slot: dynamic-table-size
Initargs

:dynamic-table-size

Readers

get-dynamic-table-size.

Writers

(setf get-dynamic-table-size).

Slot: updates-needed
Initargs

:updates-needed

Readers

get-updates-needed.

Writers

(setf get-updates-needed).

Slot: deleted-items
Initargs

:deleted-items

Readers

get-deleted-items.

Writers

(setf get-deleted-items).

Class: http2-connection

A simple connection: promise push not allowed, otherwise reasonable behaviour

Package

http2.

Source

classes.lisp.

Direct superclasses

flow-control-mixin.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:id-to-use1
:last-id-seen0
:streamsnil
:acked-settingsnil
:window-size0
:compression-context(make-instance (quote hpack-context))
:decompression-context(make-instance (quote hpack-context))
:stream-class(quote http2-stream)
:initial-peer-window-size65535
:initial-window-size65535
:max-frame-size16384
:max-peer-frame-size16384
:peer-window-size65535
Direct slots
Slot: network-stream
Initargs

:network-stream

Readers

get-network-stream.

Writers

(setf get-network-stream).

Slot: streams

Sequence of HTTP2 streams

Initargs

:streams

Readers

get-streams.

Writers

(setf get-streams).

Slot: acked-settings
Initargs

:acked-settings

Readers

get-acked-settings.

Writers

(setf get-acked-settings).

Slot: compression-context
Initargs

:compression-context

Readers

get-compression-context.

Writers

(setf get-compression-context).

Slot: decompression-context
Initargs

:decompression-context

Readers

get-decompression-context.

Writers

(setf get-decompression-context).

Slot: last-id-seen
Initargs

:last-id-seen

Readers

get-last-id-seen.

Writers

(setf get-last-id-seen).

Slot: id-to-use

Streams are identified with an unsigned 31-bit integer.

Type

(unsigned-byte 31)

Initargs

:id-to-use

Readers

get-id-to-use.

Writers

(setf get-id-to-use).

Slot: stream-class

Class for new streams

Initargs

:stream-class

Readers

get-stream-class.

Writers

(setf get-stream-class).

Slot: initial-window-size
Initargs

:initial-window-size

Readers

get-initial-window-size.

Writers

(setf get-initial-window-size).

Slot: initial-peer-window-size
Initargs

:initial-peer-window-size

Readers

get-initial-peer-window-size.

Writers

(setf get-initial-peer-window-size).

Slot: max-frame-size
Initargs

:max-frame-size

Readers

get-max-frame-size.

Writers

(setf get-max-frame-size).

Slot: max-peer-frame-size
Initargs

:max-peer-frame-size

Readers

get-max-peer-frame-size.

Writers

(setf get-max-peer-frame-size).

Slot: stream-id
Allocation

:class

Initform

0

Initargs

:stream-id

Readers

get-stream-id.

Writers

(setf get-stream-id).

Class: http2-stream

Representation of HTTP/2 stream. See RFC7540.

Package

http2.

Source

classes.lisp.

Direct superclasses

flow-control-mixin.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:state(quote idle)
:window-size0
:weight16
:depends-on(quote (non-exclusive 0))
:seen-text-headernil
Direct slots
Slot: connection
Initargs

:connection

Readers

get-connection.

Writers

(setf get-connection).

Slot: network-stream
Initargs

:network-stream

Readers

get-network-stream.

Writers

(setf get-network-stream).

Slot: stream-id
Type

(unsigned-byte 31)

Initargs

:stream-id

Readers

get-stream-id.

Writers

(setf get-stream-id).

Slot: state
Type

(member http2::idle open http2::closed http2::half-closed/local http2::half-closed/remote http2::reserved/local http2::reserved/remote)

Initargs

:state

Readers

get-state.

Writers

(setf get-state).

Slot: data
Initargs

:data

Readers

get-data.

Writers

(setf get-data).

Slot: weight
Initargs

:weight

Readers

get-weight.

Writers

(setf get-weight).

Slot: depends-on
Initargs

:depends-on

Readers

get-depends-on.

Writers

(setf get-depends-on).

Slot: seen-text-header

Set if in the header block a non-pseudo header was already seen.

Initargs

:seen-text-header

Readers

get-seen-text-header.

Writers

(setf get-seen-text-header).

Class: log-headers-mixin

Class that logs some activities and state changes.

Package

http2.

Source

classes.lisp.

Direct methods

add-header.

Class: logging-connection
Package

http2.

Source

classes.lisp.

Direct superclasses
Class: logging-stream
Package

http2.

Source

classes.lisp.

Direct superclasses
Class: server-http2-connection
Package

http2.

Source

classes.lisp.

Direct superclasses

http2-connection.

Direct methods
Direct Default Initargs
InitargValue
:id-to-use2
:peer-accepts-pusht
Direct slots
Slot: peer-accepts-push
Initargs

:peer-accepts-push

Readers

get-peer-accepts-push.

Writers

(setf get-peer-accepts-push).

Class: server-stream
Package

http2.

Source

classes.lisp.

Direct superclasses

http2-stream.

Direct methods
Direct Default Initargs
InitargValue
:methodnil
:schemenil
:authoritynil
:pathnil
Direct slots
Slot: method

The HTTP method ([RFC7231], Section 4)

Package

common-lisp.

Initargs

:method

Readers

get-method.

Writers

(setf get-method).

Slot: scheme

Scheme portion of the target URI ([RFC3986], Section 3.1).

Not restricted to "http" and "https" schemed URIs.
A proxy or gateway can translate requests for non-HTTP schemes, enabling the use of HTTP to interact with non-HTTP services

Initargs

:scheme

Readers

get-scheme.

Writers

(setf get-scheme).

Slot: authority

The authority portion of the target URI ([RFC3986], Section 3.2)

Initargs

:authority

Readers

get-authority.

Writers

(setf get-authority).

Slot: path

The path and query parts of the target URI

Initargs

:path

Readers

get-path.

Writers

(setf get-path).


Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts


Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   C   D   E   F   G   H   I   L   M   P   R   S   U   V   W  
Index Entry  Section

(
(setf frame-type-documentation): Private ordinary functions
(setf frame-type-name): Private ordinary functions
(setf frame-type-receive-fn): Private ordinary functions
(setf get-acked-settings): Private generic functions
(setf get-acked-settings): Private generic functions
(setf get-authority): Private generic functions
(setf get-authority): Private generic functions
(setf get-body): Public generic functions
(setf get-body): Public generic functions
(setf get-bytes-left-in-table): Private generic functions
(setf get-bytes-left-in-table): Private generic functions
(setf get-compression-context): Private generic functions
(setf get-compression-context): Private generic functions
(setf get-connection): Private generic functions
(setf get-connection): Private generic functions
(setf get-data): Private generic functions
(setf get-data): Private generic functions
(setf get-data): Private generic functions
(setf get-debug-data): Private generic functions
(setf get-debug-data): Private generic functions
(setf get-debug-data): Private generic functions
(setf get-debug-data): Private generic functions
(setf get-decompression-context): Private generic functions
(setf get-decompression-context): Private generic functions
(setf get-deleted-items): Private generic functions
(setf get-deleted-items): Private generic functions
(setf get-depends-on): Private generic functions
(setf get-depends-on): Private generic functions
(setf get-dynamic-table): Private generic functions
(setf get-dynamic-table): Private generic functions
(setf get-dynamic-table-size): Private generic functions
(setf get-dynamic-table-size): Private generic functions
(setf get-error-code): Private generic functions
(setf get-error-code): Private generic functions
(setf get-error-code): Private generic functions
(setf get-error-code): Private generic functions
(setf get-headers): Public generic functions
(setf get-headers): Public generic functions
(setf get-id-to-use): Private generic functions
(setf get-id-to-use): Private generic functions
(setf get-index): Private generic functions
(setf get-index): Private generic functions
(setf get-initial-peer-window-size): Private generic functions
(setf get-initial-peer-window-size): Private generic functions
(setf get-initial-window-size): Private generic functions
(setf get-initial-window-size): Private generic functions
(setf get-last-id-seen): Private generic functions
(setf get-last-id-seen): Private generic functions
(setf get-last-stream-id): Private generic functions
(setf get-last-stream-id): Private generic functions
(setf get-last-stream-id): Private generic functions
(setf get-max-frame-size): Private generic functions
(setf get-max-frame-size): Private generic functions
(setf get-max-peer-frame-size): Private generic functions
(setf get-max-peer-frame-size): Private generic functions
(setf get-method): Private generic functions
(setf get-method): Private generic functions
(setf get-network-stream): Private generic functions
(setf get-network-stream): Private generic functions
(setf get-network-stream): Private generic functions
(setf get-output-buffer): Private generic functions
(setf get-output-buffer): Private generic functions
(setf get-path): Public generic functions
(setf get-path): Public generic functions
(setf get-peer-accepts-push): Private generic functions
(setf get-peer-accepts-push): Private generic functions
(setf get-peer-window-size): Private generic functions
(setf get-peer-window-size): Private generic functions
(setf get-reversed-history): Private generic functions
(setf get-reversed-history): Private generic functions
(setf get-scheme): Private generic functions
(setf get-scheme): Private generic functions
(setf get-seen-text-header): Private generic functions
(setf get-seen-text-header): Private generic functions
(setf get-state): Private generic functions
(setf get-state): Private generic functions
(setf get-state): Private generic functions
(setf get-status): Private generic functions
(setf get-status): Private generic functions
(setf get-stream): Private generic functions
(setf get-stream): Private generic functions
(setf get-stream-class): Private generic functions
(setf get-stream-class): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-stream-id): Private generic functions
(setf get-streams): Private generic functions
(setf get-streams): Private generic functions
(setf get-updates-needed): Private generic functions
(setf get-updates-needed): Private generic functions
(setf get-weight): Private generic functions
(setf get-weight): Private generic functions
(setf get-window-size): Private generic functions
(setf get-window-size): Private generic functions

A
account-frame-window-contribution: Private ordinary functions
add-dynamic-header: Private generic functions
add-dynamic-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-header: Private generic functions
add-log: Private generic functions
add-log: Private generic functions
add-log: Private generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-data-frame: Public generic functions
apply-stream-priority: Public generic functions
apply-stream-priority: Public generic functions
apply-stream-priority: Public generic functions
apply-window-size-increment: Public generic functions
apply-window-size-increment: Public generic functions
apply-window-size-increment: Public generic functions

C
check-place-empty-and-set-it: Private macros
close: Public standalone methods
close: Public standalone methods
close-output: Private ordinary functions
copy-frame-type: Private ordinary functions
count-open-streams: Private ordinary functions
create-new-local-stream: Private ordinary functions

D
decode-huffman: Private ordinary functions
decode-huffman-to-stream: Private ordinary functions
decode-octet-fn: Private ordinary functions
define-frame-type: Private macros
do-goaway: Public generic functions
do-goaway: Public generic functions
do-goaway: Public generic functions
do-ping: Private generic functions
do-ping: Private generic functions
do-ping: Private generic functions
do-pong: Public generic functions
do-pong: Public generic functions
do-pong: Public generic functions
do-pong: Public generic functions
dynamic-table-entry-size: Private ordinary functions
dynamic-table-value: Private ordinary functions

E
empty-data-p: Private ordinary functions
encode-header: Public ordinary functions
encode-huffman: Private ordinary functions

F
find-header-in-tables: Private ordinary functions
find-in-tables: Private ordinary functions
find-pair-in-tables: Private ordinary functions
find-setting-by-id: Private ordinary functions
find-setting-code: Private ordinary functions
flags-to-code: Private ordinary functions
flags-to-vars-code: Private ordinary functions
frame-type-documentation: Private ordinary functions
frame-type-name: Private ordinary functions
frame-type-p: Private ordinary functions
frame-type-receive-fn: Private ordinary functions
Function, (setf frame-type-documentation): Private ordinary functions
Function, (setf frame-type-name): Private ordinary functions
Function, (setf frame-type-receive-fn): Private ordinary functions
Function, account-frame-window-contribution: Private ordinary functions
Function, close-output: Private ordinary functions
Function, copy-frame-type: Private ordinary functions
Function, count-open-streams: Private ordinary functions
Function, create-new-local-stream: Private ordinary functions
Function, decode-huffman: Private ordinary functions
Function, decode-huffman-to-stream: Private ordinary functions
Function, decode-octet-fn: Private ordinary functions
Function, dynamic-table-entry-size: Private ordinary functions
Function, dynamic-table-value: Private ordinary functions
Function, empty-data-p: Private ordinary functions
Function, encode-header: Public ordinary functions
Function, encode-huffman: Private ordinary functions
Function, find-header-in-tables: Private ordinary functions
Function, find-in-tables: Private ordinary functions
Function, find-pair-in-tables: Private ordinary functions
Function, find-setting-by-id: Private ordinary functions
Function, find-setting-code: Private ordinary functions
Function, flags-to-code: Private ordinary functions
Function, flags-to-vars-code: Private ordinary functions
Function, frame-type-documentation: Private ordinary functions
Function, frame-type-name: Private ordinary functions
Function, frame-type-p: Private ordinary functions
Function, frame-type-receive-fn: Private ordinary functions
Function, get-error-name: Private ordinary functions
Function, get-history: Private ordinary functions
Function, get-integer-from-octet: Private ordinary functions
Function, header-size: Private ordinary functions
Function, header-writer: Private ordinary functions
Function, huffman-coded-size: Private ordinary functions
Function, integer-to-array: Private ordinary functions
Function, logger: Private ordinary functions
Function, make-cond-branch: Private ordinary functions
Function, make-frame-type: Private ordinary functions
Function, peer-opens-http-stream-really-open: Private ordinary functions
Function, pop-frame: Private ordinary functions
Function, push-frame: Private ordinary functions
Function, read-altsvc-frame: Private ordinary functions
Function, read-and-add-headers: Private ordinary functions
Function, read-byte*: Private ordinary functions
Function, read-bytes: Private ordinary functions
Function, read-continuation-frame: Private ordinary functions
Function, read-data-frame: Private ordinary functions
Function, read-frame: Public ordinary functions
Function, read-from-tables: Private ordinary functions
Function, read-goaway-frame: Private ordinary functions
Function, read-headers-frame: Private ordinary functions
Function, read-http-header: Private ordinary functions
Function, read-huffman: Private ordinary functions
Function, read-padding: Private ordinary functions
Function, read-ping-frame: Private ordinary functions
Function, read-priority-frame: Private ordinary functions
Function, read-push-promise-frame: Private ordinary functions
Function, read-rst-stream-frame: Private ordinary functions
Function, read-settings-frame: Private ordinary functions
Function, read-string-from-stream: Private ordinary functions
Function, read-window-update-frame: Private ordinary functions
Function, request-headers: Public ordinary functions
Function, send-data: Private ordinary functions
Function, set-when-no-bytes-left-fn: Private ordinary functions
Function, store-string: Private ordinary functions
Function, update-dynamic-table-size: Public ordinary functions
Function, vector-from-hex-text: Private ordinary functions
Function, vector-index-to-hpack-index: Private ordinary functions
Function, write-31-bits: Private ordinary functions
Function, write-ack-setting-frame: Public ordinary functions
Function, write-altsvc-frame: Public ordinary functions
Function, write-bytes: Private ordinary functions
Function, write-continuation-frame: Public ordinary functions
Function, write-data-frame: Public ordinary functions
Function, write-frame-header: Public ordinary functions
Function, write-goaway-frame: Public ordinary functions
Function, write-headers-frame: Public ordinary functions
Function, write-integer-to-array: Private ordinary functions
Function, write-ping-frame: Public ordinary functions
Function, write-priority-frame: Public ordinary functions
Function, write-push-promise-frame: Public ordinary functions
Function, write-rst-stream-frame: Public ordinary functions
Function, write-settings-frame: Public ordinary functions
Function, write-window-update-frame: Public ordinary functions

G
Generic Function, (setf get-acked-settings): Private generic functions
Generic Function, (setf get-authority): Private generic functions
Generic Function, (setf get-body): Public generic functions
Generic Function, (setf get-bytes-left-in-table): Private generic functions
Generic Function, (setf get-compression-context): Private generic functions
Generic Function, (setf get-connection): Private generic functions
Generic Function, (setf get-data): Private generic functions
Generic Function, (setf get-debug-data): Private generic functions
Generic Function, (setf get-decompression-context): Private generic functions
Generic Function, (setf get-deleted-items): Private generic functions
Generic Function, (setf get-depends-on): Private generic functions
Generic Function, (setf get-dynamic-table): Private generic functions
Generic Function, (setf get-dynamic-table-size): Private generic functions
Generic Function, (setf get-error-code): Private generic functions
Generic Function, (setf get-headers): Public generic functions
Generic Function, (setf get-id-to-use): Private generic functions
Generic Function, (setf get-index): Private generic functions
Generic Function, (setf get-initial-peer-window-size): Private generic functions
Generic Function, (setf get-initial-window-size): Private generic functions
Generic Function, (setf get-last-id-seen): Private generic functions
Generic Function, (setf get-last-stream-id): Private generic functions
Generic Function, (setf get-max-frame-size): Private generic functions
Generic Function, (setf get-max-peer-frame-size): Private generic functions
Generic Function, (setf get-method): Private generic functions
Generic Function, (setf get-network-stream): Private generic functions
Generic Function, (setf get-output-buffer): Private generic functions
Generic Function, (setf get-path): Public generic functions
Generic Function, (setf get-peer-accepts-push): Private generic functions
Generic Function, (setf get-peer-window-size): Private generic functions
Generic Function, (setf get-reversed-history): Private generic functions
Generic Function, (setf get-scheme): Private generic functions
Generic Function, (setf get-seen-text-header): Private generic functions
Generic Function, (setf get-state): Private generic functions
Generic Function, (setf get-status): Private generic functions
Generic Function, (setf get-stream): Private generic functions
Generic Function, (setf get-stream-class): Private generic functions
Generic Function, (setf get-stream-id): Private generic functions
Generic Function, (setf get-streams): Private generic functions
Generic Function, (setf get-updates-needed): Private generic functions
Generic Function, (setf get-weight): Private generic functions
Generic Function, (setf get-window-size): Private generic functions
Generic Function, add-dynamic-header: Private generic functions
Generic Function, add-header: Private generic functions
Generic Function, add-log: Private generic functions
Generic Function, apply-data-frame: Public generic functions
Generic Function, apply-stream-priority: Public generic functions
Generic Function, apply-window-size-increment: Public generic functions
Generic Function, do-goaway: Public generic functions
Generic Function, do-ping: Private generic functions
Generic Function, do-pong: Public generic functions
Generic Function, get-acked-settings: Private generic functions
Generic Function, get-authority: Private generic functions
Generic Function, get-body: Public generic functions
Generic Function, get-bytes-left-in-table: Private generic functions
Generic Function, get-compression-context: Private generic functions
Generic Function, get-connection: Private generic functions
Generic Function, get-data: Private generic functions
Generic Function, get-debug-data: Private generic functions
Generic Function, get-decompression-context: Private generic functions
Generic Function, get-deleted-items: Private generic functions
Generic Function, get-depends-on: Private generic functions
Generic Function, get-dynamic-table: Private generic functions
Generic Function, get-dynamic-table-size: Private generic functions
Generic Function, get-error-code: Private generic functions
Generic Function, get-headers: Public generic functions
Generic Function, get-id-to-use: Private generic functions
Generic Function, get-index: Private generic functions
Generic Function, get-initial-peer-window-size: Private generic functions
Generic Function, get-initial-window-size: Private generic functions
Generic Function, get-last-id-seen: Private generic functions
Generic Function, get-last-stream-id: Private generic functions
Generic Function, get-max-frame-size: Private generic functions
Generic Function, get-max-peer-frame-size: Private generic functions
Generic Function, get-method: Private generic functions
Generic Function, get-network-stream: Private generic functions
Generic Function, get-output-buffer: Private generic functions
Generic Function, get-path: Public generic functions
Generic Function, get-peer-accepts-push: Private generic functions
Generic Function, get-peer-window-size: Private generic functions
Generic Function, get-reversed-history: Private generic functions
Generic Function, get-scheme: Private generic functions
Generic Function, get-seen-text-header: Private generic functions
Generic Function, get-settings: Private generic functions
Generic Function, get-state: Private generic functions
Generic Function, get-status: Private generic functions
Generic Function, get-stream: Private generic functions
Generic Function, get-stream-class: Private generic functions
Generic Function, get-stream-id: Private generic functions
Generic Function, get-streams: Private generic functions
Generic Function, get-updates-needed: Private generic functions
Generic Function, get-weight: Private generic functions
Generic Function, get-window-size: Private generic functions
Generic Function, handle-alt-svc: Private generic functions
Generic Function, handle-undefined-frame: Public generic functions
Generic Function, http2-error: Private generic functions
Generic Function, peer-acks-settings: Public generic functions
Generic Function, peer-ends-http-stream: Public generic functions
Generic Function, peer-expects-settings-ack: Public generic functions
Generic Function, peer-opens-http-stream: Public generic functions
Generic Function, peer-resets-stream: Public generic functions
Generic Function, peer-sends-push-promise: Public generic functions
Generic Function, process-end-headers: Private generic functions
Generic Function, send-headers: Public generic functions
Generic Function, send-ping: Public generic functions
Generic Function, send-stream-error: Private generic functions
Generic Function, set-peer-setting: Public generic functions
get-acked-settings: Private generic functions
get-acked-settings: Private generic functions
get-authority: Private generic functions
get-authority: Private generic functions
get-body: Public generic functions
get-body: Public generic functions
get-bytes-left-in-table: Private generic functions
get-bytes-left-in-table: Private generic functions
get-compression-context: Private generic functions
get-compression-context: Private generic functions
get-connection: Private generic functions
get-connection: Private generic functions
get-data: Private generic functions
get-data: Private generic functions
get-data: Private generic functions
get-debug-data: Private generic functions
get-debug-data: Private generic functions
get-debug-data: Private generic functions
get-debug-data: Private generic functions
get-decompression-context: Private generic functions
get-decompression-context: Private generic functions
get-deleted-items: Private generic functions
get-deleted-items: Private generic functions
get-depends-on: Private generic functions
get-depends-on: Private generic functions
get-dynamic-table: Private generic functions
get-dynamic-table: Private generic functions
get-dynamic-table-size: Private generic functions
get-dynamic-table-size: Private generic functions
get-error-code: Private generic functions
get-error-code: Private generic functions
get-error-code: Private generic functions
get-error-code: Private generic functions
get-error-name: Private ordinary functions
get-headers: Public generic functions
get-headers: Public generic functions
get-history: Private ordinary functions
get-id-to-use: Private generic functions
get-id-to-use: Private generic functions
get-index: Private generic functions
get-index: Private generic functions
get-initial-peer-window-size: Private generic functions
get-initial-peer-window-size: Private generic functions
get-initial-window-size: Private generic functions
get-initial-window-size: Private generic functions
get-integer-from-octet: Private ordinary functions
get-last-id-seen: Private generic functions
get-last-id-seen: Private generic functions
get-last-stream-id: Private generic functions
get-last-stream-id: Private generic functions
get-last-stream-id: Private generic functions
get-max-frame-size: Private generic functions
get-max-frame-size: Private generic functions
get-max-peer-frame-size: Private generic functions
get-max-peer-frame-size: Private generic functions
get-method: Private generic functions
get-method: Private generic functions
get-network-stream: Private generic functions
get-network-stream: Private generic functions
get-network-stream: Private generic functions
get-output-buffer: Private generic functions
get-output-buffer: Private generic functions
get-path: Public generic functions
get-path: Public generic functions
get-peer-accepts-push: Private generic functions
get-peer-accepts-push: Private generic functions
get-peer-window-size: Private generic functions
get-peer-window-size: Private generic functions
get-reversed-history: Private generic functions
get-reversed-history: Private generic functions
get-scheme: Private generic functions
get-scheme: Private generic functions
get-seen-text-header: Private generic functions
get-seen-text-header: Private generic functions
get-settings: Private generic functions
get-settings: Private generic functions
get-settings: Private generic functions
get-state: Private generic functions
get-state: Private generic functions
get-status: Private generic functions
get-status: Private generic functions
get-stream: Private generic functions
get-stream: Private generic functions
get-stream-class: Private generic functions
get-stream-class: Private generic functions
get-stream-id: Private generic functions
get-stream-id: Private generic functions
get-stream-id: Private generic functions
get-streams: Private generic functions
get-streams: Private generic functions
get-updates-needed: Private generic functions
get-updates-needed: Private generic functions
get-weight: Private generic functions
get-weight: Private generic functions
get-window-size: Private generic functions
get-window-size: Private generic functions

H
handle-alt-svc: Private generic functions
handle-alt-svc: Private generic functions
handle-alt-svc: Private generic functions
handle-undefined-frame: Public generic functions
handle-undefined-frame: Public generic functions
header-size: Private ordinary functions
header-writer: Private ordinary functions
http2-error: Private generic functions
http2-error: Private generic functions
huffman-coded-size: Private ordinary functions

I
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
integer-to-array: Private ordinary functions

L
logger: Private ordinary functions

M
Macro, check-place-empty-and-set-it: Private macros
Macro, define-frame-type: Private macros
make-cond-branch: Private ordinary functions
make-frame-type: Private ordinary functions
Method, (setf get-acked-settings): Private generic functions
Method, (setf get-authority): Private generic functions
Method, (setf get-body): Public generic functions
Method, (setf get-bytes-left-in-table): Private generic functions
Method, (setf get-compression-context): Private generic functions
Method, (setf get-connection): Private generic functions
Method, (setf get-data): Private generic functions
Method, (setf get-data): Private generic functions
Method, (setf get-debug-data): Private generic functions
Method, (setf get-debug-data): Private generic functions
Method, (setf get-debug-data): Private generic functions
Method, (setf get-decompression-context): Private generic functions
Method, (setf get-deleted-items): Private generic functions
Method, (setf get-depends-on): Private generic functions
Method, (setf get-dynamic-table): Private generic functions
Method, (setf get-dynamic-table-size): Private generic functions
Method, (setf get-error-code): Private generic functions
Method, (setf get-error-code): Private generic functions
Method, (setf get-error-code): Private generic functions
Method, (setf get-headers): Public generic functions
Method, (setf get-id-to-use): Private generic functions
Method, (setf get-index): Private generic functions
Method, (setf get-initial-peer-window-size): Private generic functions
Method, (setf get-initial-window-size): Private generic functions
Method, (setf get-last-id-seen): Private generic functions
Method, (setf get-last-stream-id): Private generic functions
Method, (setf get-last-stream-id): Private generic functions
Method, (setf get-max-frame-size): Private generic functions
Method, (setf get-max-peer-frame-size): Private generic functions
Method, (setf get-method): Private generic functions
Method, (setf get-network-stream): Private generic functions
Method, (setf get-network-stream): Private generic functions
Method, (setf get-output-buffer): Private generic functions
Method, (setf get-path): Public generic functions
Method, (setf get-peer-accepts-push): Private generic functions
Method, (setf get-peer-window-size): Private generic functions
Method, (setf get-reversed-history): Private generic functions
Method, (setf get-scheme): Private generic functions
Method, (setf get-seen-text-header): Private generic functions
Method, (setf get-state): Private generic functions
Method, (setf get-state): Private generic functions
Method, (setf get-status): Private generic functions
Method, (setf get-stream): Private generic functions
Method, (setf get-stream-class): Private generic functions
Method, (setf get-stream-id): Private generic functions
Method, (setf get-stream-id): Private generic functions
Method, (setf get-streams): Private generic functions
Method, (setf get-updates-needed): Private generic functions
Method, (setf get-weight): Private generic functions
Method, (setf get-window-size): Private generic functions
Method, add-dynamic-header: Private generic functions
Method, add-header: Private generic functions
Method, add-header: Private generic functions
Method, add-header: Private generic functions
Method, add-header: Private generic functions
Method, add-header: Private generic functions
Method, add-header: Private generic functions
Method, add-header: Private generic functions
Method, add-log: Private generic functions
Method, add-log: Private generic functions
Method, apply-data-frame: Public generic functions
Method, apply-data-frame: Public generic functions
Method, apply-data-frame: Public generic functions
Method, apply-data-frame: Public generic functions
Method, apply-stream-priority: Public generic functions
Method, apply-stream-priority: Public generic functions
Method, apply-window-size-increment: Public generic functions
Method, apply-window-size-increment: Public generic functions
Method, close: Public standalone methods
Method, close: Public standalone methods
Method, do-goaway: Public generic functions
Method, do-goaway: Public generic functions
Method, do-ping: Private generic functions
Method, do-ping: Private generic functions
Method, do-pong: Public generic functions
Method, do-pong: Public generic functions
Method, do-pong: Public generic functions
Method, get-acked-settings: Private generic functions
Method, get-authority: Private generic functions
Method, get-body: Public generic functions
Method, get-bytes-left-in-table: Private generic functions
Method, get-compression-context: Private generic functions
Method, get-connection: Private generic functions
Method, get-data: Private generic functions
Method, get-data: Private generic functions
Method, get-debug-data: Private generic functions
Method, get-debug-data: Private generic functions
Method, get-debug-data: Private generic functions
Method, get-decompression-context: Private generic functions
Method, get-deleted-items: Private generic functions
Method, get-depends-on: Private generic functions
Method, get-dynamic-table: Private generic functions
Method, get-dynamic-table-size: Private generic functions
Method, get-error-code: Private generic functions
Method, get-error-code: Private generic functions
Method, get-error-code: Private generic functions
Method, get-headers: Public generic functions
Method, get-id-to-use: Private generic functions
Method, get-index: Private generic functions
Method, get-initial-peer-window-size: Private generic functions
Method, get-initial-window-size: Private generic functions
Method, get-last-id-seen: Private generic functions
Method, get-last-stream-id: Private generic functions
Method, get-last-stream-id: Private generic functions
Method, get-max-frame-size: Private generic functions
Method, get-max-peer-frame-size: Private generic functions
Method, get-method: Private generic functions
Method, get-network-stream: Private generic functions
Method, get-network-stream: Private generic functions
Method, get-output-buffer: Private generic functions
Method, get-path: Public generic functions
Method, get-peer-accepts-push: Private generic functions
Method, get-peer-window-size: Private generic functions
Method, get-reversed-history: Private generic functions
Method, get-scheme: Private generic functions
Method, get-seen-text-header: Private generic functions
Method, get-settings: Private generic functions
Method, get-settings: Private generic functions
Method, get-state: Private generic functions
Method, get-status: Private generic functions
Method, get-stream: Private generic functions
Method, get-stream-class: Private generic functions
Method, get-stream-id: Private generic functions
Method, get-stream-id: Private generic functions
Method, get-streams: Private generic functions
Method, get-updates-needed: Private generic functions
Method, get-weight: Private generic functions
Method, get-window-size: Private generic functions
Method, handle-alt-svc: Private generic functions
Method, handle-alt-svc: Private generic functions
Method, handle-undefined-frame: Public generic functions
Method, http2-error: Private generic functions
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, peer-acks-settings: Public generic functions
Method, peer-acks-settings: Public generic functions
Method, peer-ends-http-stream: Public generic functions
Method, peer-ends-http-stream: Public generic functions
Method, peer-expects-settings-ack: Public generic functions
Method, peer-expects-settings-ack: Public generic functions
Method, peer-opens-http-stream: Public generic functions
Method, peer-opens-http-stream: Public generic functions
Method, peer-opens-http-stream: Public generic functions
Method, peer-opens-http-stream: Public generic functions
Method, peer-opens-http-stream: Public generic functions
Method, peer-opens-http-stream: Public generic functions
Method, peer-resets-stream: Public generic functions
Method, peer-resets-stream: Public generic functions
Method, peer-sends-push-promise: Public generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, process-end-headers: Private generic functions
Method, process-end-headers: Private generic functions
Method, process-end-headers: Private generic functions
Method, process-end-headers: Private generic functions
Method, send-headers: Public generic functions
Method, send-headers: Public generic functions
Method, send-headers: Public generic functions
Method, send-ping: Public generic functions
Method, send-ping: Public generic functions
Method, send-stream-error: Private generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, set-peer-setting: Public generic functions
Method, stream-element-type: Public standalone methods
Method, stream-force-output: Public standalone methods
Method, stream-listen: Public standalone methods
Method, stream-read-byte: Public standalone methods
Method, stream-write-byte: Public standalone methods
Method, stream-write-sequence: Public standalone methods

P
peer-acks-settings: Public generic functions
peer-acks-settings: Public generic functions
peer-acks-settings: Public generic functions
peer-ends-http-stream: Public generic functions
peer-ends-http-stream: Public generic functions
peer-ends-http-stream: Public generic functions
peer-expects-settings-ack: Public generic functions
peer-expects-settings-ack: Public generic functions
peer-expects-settings-ack: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream: Public generic functions
peer-opens-http-stream-really-open: Private ordinary functions
peer-resets-stream: Public generic functions
peer-resets-stream: Public generic functions
peer-resets-stream: Public generic functions
peer-sends-push-promise: Public generic functions
peer-sends-push-promise: Public generic functions
pop-frame: Private ordinary functions
print-object: Public standalone methods
print-object: Public standalone methods
process-end-headers: Private generic functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
process-end-headers: Private generic functions
push-frame: Private ordinary functions

R
read-altsvc-frame: Private ordinary functions
read-and-add-headers: Private ordinary functions
read-byte*: Private ordinary functions
read-bytes: Private ordinary functions
read-continuation-frame: Private ordinary functions
read-data-frame: Private ordinary functions
read-frame: Public ordinary functions
read-from-tables: Private ordinary functions
read-goaway-frame: Private ordinary functions
read-headers-frame: Private ordinary functions
read-http-header: Private ordinary functions
read-huffman: Private ordinary functions
read-padding: Private ordinary functions
read-ping-frame: Private ordinary functions
read-priority-frame: Private ordinary functions
read-push-promise-frame: Private ordinary functions
read-rst-stream-frame: Private ordinary functions
read-settings-frame: Private ordinary functions
read-string-from-stream: Private ordinary functions
read-window-update-frame: Private ordinary functions
request-headers: Public ordinary functions

S
send-data: Private ordinary functions
send-headers: Public generic functions
send-headers: Public generic functions
send-headers: Public generic functions
send-headers: Public generic functions
send-ping: Public generic functions
send-ping: Public generic functions
send-ping: Public generic functions
send-stream-error: Private generic functions
send-stream-error: Private generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-peer-setting: Public generic functions
set-when-no-bytes-left-fn: Private ordinary functions
store-string: Private ordinary functions
stream-element-type: Public standalone methods
stream-force-output: Public standalone methods
stream-listen: Public standalone methods
stream-read-byte: Public standalone methods
stream-write-byte: Public standalone methods
stream-write-sequence: Public standalone methods

U
update-dynamic-table-size: Public ordinary functions

V
vector-from-hex-text: Private ordinary functions
vector-index-to-hpack-index: Private ordinary functions

W
write-31-bits: Private ordinary functions
write-ack-setting-frame: Public ordinary functions
write-altsvc-frame: Public ordinary functions
write-bytes: Private ordinary functions
write-continuation-frame: Public ordinary functions
write-data-frame: Public ordinary functions
write-frame-header: Public ordinary functions
write-goaway-frame: Public ordinary functions
write-headers-frame: Public ordinary functions
write-integer-to-array: Private ordinary functions
write-ping-frame: Public ordinary functions
write-priority-frame: Public ordinary functions
write-push-promise-frame: Public ordinary functions
write-rst-stream-frame: Public ordinary functions
write-settings-frame: Public ordinary functions
write-window-update-frame: Public ordinary functions

Jump to:   (  
A   C   D   E   F   G   H   I   L   M   P   R   S   U   V   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   +  
A   B   C   D   E   H   I   L   M   N   O   P   R   S   U   W  
Index Entry  Section

*
*bytes-left*: Private special variables
*bytes-to-possibly-reuse*: Private special variables
*bytes-to-reuse*: Private special variables
*do-print-log*: Public special variables
*error-codes*: Private special variables
*flag-codes*: Private special variables
*frame-types*: Private special variables
*huffman-code*: Private special variables
*log-stream*: Private special variables
*settings-alist*: Private special variables
*use-huffman-coding-by-default*: Public special variables
*when-no-bytes-left-fn*: Private special variables

+
+altsvc-frame+: Private constants
+cancel+: Private constants
+client-preface-start+: Private special variables
+compression-error+: Private constants
+connect-error+: Private constants
+continuation-frame+: Private constants
+data-frame+: Private constants
+enhance-your-calm+: Private constants
+flow-control-error+: Private constants
+frame-size-error+: Private constants
+goaway-frame+: Private constants
+headers-frame+: Private constants
+http-1-1-required+: Private constants
+inadequate-security+: Private constants
+internal-error+: Private constants
+known-frame-types-count+: Private constants
+no-error+: Public constants
+ping-frame+: Private constants
+priority-frame+: Private constants
+protocol-error+: Private constants
+push-promise-frame+: Private constants
+refused-stream+: Private constants
+rst-stream-frame+: Private constants
+settings-frame+: Private constants
+settings-timeout+: Private constants
+stream-closed+: Private constants
+window-update-frame+: Private constants

A
acked-settings: Private classes
authority: Private classes

B
body: Private classes
bytes-left-in-table: Private classes

C
compression-context: Private classes
connection: Private classes
Constant, +altsvc-frame+: Private constants
Constant, +cancel+: Private constants
Constant, +compression-error+: Private constants
Constant, +connect-error+: Private constants
Constant, +continuation-frame+: Private constants
Constant, +data-frame+: Private constants
Constant, +enhance-your-calm+: Private constants
Constant, +flow-control-error+: Private constants
Constant, +frame-size-error+: Private constants
Constant, +goaway-frame+: Private constants
Constant, +headers-frame+: Private constants
Constant, +http-1-1-required+: Private constants
Constant, +inadequate-security+: Private constants
Constant, +internal-error+: Private constants
Constant, +known-frame-types-count+: Private constants
Constant, +no-error+: Public constants
Constant, +ping-frame+: Private constants
Constant, +priority-frame+: Private constants
Constant, +protocol-error+: Private constants
Constant, +push-promise-frame+: Private constants
Constant, +refused-stream+: Private constants
Constant, +rst-stream-frame+: Private constants
Constant, +settings-frame+: Private constants
Constant, +settings-timeout+: Private constants
Constant, +stream-closed+: Private constants
Constant, +window-update-frame+: Private constants

D
data: Private classes
data: Private classes
debug-data: Private conditions
debug-data: Private conditions
debug-data: Private conditions
decompression-context: Private classes
deleted-items: Private classes
depends-on: Private classes
documentation: Private structures
dynamic-table: Private classes
dynamic-table-size: Private classes

E
error-code: Private conditions
error-code: Private conditions
error-code: Private conditions

H
headers: Public classes

I
id-to-use: Private classes
index: Private classes
initial-peer-window-size: Private classes
initial-window-size: Private classes

L
last-id-seen: Private classes
last-stream-id: Private conditions
last-stream-id: Private conditions

M
max-frame-size: Private classes
max-peer-frame-size: Private classes
method: Private classes

N
name: Private structures
network-stream: Private classes
network-stream: Private classes

O
output-buffer: Public classes

P
path: Private classes
peer-accepts-push: Private classes
peer-window-size: Private classes

R
receive-fn: Private structures
reversed-history: Private classes

S
scheme: Private classes
seen-text-header: Private classes
Slot, acked-settings: Private classes
Slot, authority: Private classes
Slot, body: Private classes
Slot, bytes-left-in-table: Private classes
Slot, compression-context: Private classes
Slot, connection: Private classes
Slot, data: Private classes
Slot, data: Private classes
Slot, debug-data: Private conditions
Slot, debug-data: Private conditions
Slot, debug-data: Private conditions
Slot, decompression-context: Private classes
Slot, deleted-items: Private classes
Slot, depends-on: Private classes
Slot, documentation: Private structures
Slot, dynamic-table: Private classes
Slot, dynamic-table-size: Private classes
Slot, error-code: Private conditions
Slot, error-code: Private conditions
Slot, error-code: Private conditions
Slot, headers: Public classes
Slot, id-to-use: Private classes
Slot, index: Private classes
Slot, initial-peer-window-size: Private classes
Slot, initial-window-size: Private classes
Slot, last-id-seen: Private classes
Slot, last-stream-id: Private conditions
Slot, last-stream-id: Private conditions
Slot, max-frame-size: Private classes
Slot, max-peer-frame-size: Private classes
Slot, method: Private classes
Slot, name: Private structures
Slot, network-stream: Private classes
Slot, network-stream: Private classes
Slot, output-buffer: Public classes
Slot, path: Private classes
Slot, peer-accepts-push: Private classes
Slot, peer-window-size: Private classes
Slot, receive-fn: Private structures
Slot, reversed-history: Private classes
Slot, scheme: Private classes
Slot, seen-text-header: Private classes
Slot, state: Private classes
Slot, status: Public classes
Slot, stream: Private conditions
Slot, stream-class: Private classes
Slot, stream-id: Private classes
Slot, stream-id: Private classes
Slot, streams: Private classes
Slot, updates-needed: Private classes
Slot, weight: Private classes
Slot, window-size: Private classes
Special Variable, *bytes-left*: Private special variables
Special Variable, *bytes-to-possibly-reuse*: Private special variables
Special Variable, *bytes-to-reuse*: Private special variables
Special Variable, *do-print-log*: Public special variables
Special Variable, *error-codes*: Private special variables
Special Variable, *flag-codes*: Private special variables
Special Variable, *frame-types*: Private special variables
Special Variable, *huffman-code*: Private special variables
Special Variable, *log-stream*: Private special variables
Special Variable, *settings-alist*: Private special variables
Special Variable, *use-huffman-coding-by-default*: Public special variables
Special Variable, *when-no-bytes-left-fn*: Private special variables
Special Variable, +client-preface-start+: Private special variables
Special Variable, static-headers-table: Private special variables
state: Private classes
static-headers-table: Private special variables
status: Public classes
stream: Private conditions
stream-class: Private classes
stream-id: Private classes
stream-id: Private classes
streams: Private classes

U
updates-needed: Private classes

W
weight: Private classes
window-size: Private classes

Jump to:   *   +  
A   B   C   D   E   H   I   L   M   N   O   P   R   S   U   W  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   B   C   F   G   H   L   M   P   S   T   U  
Index Entry  Section

B
binary-input-stream-over-data-frames: Private classes
binary-output-stream-over-data-frames: Public classes
binary-stream: Private classes
body-collecting-mixin: Private classes

C
Class, binary-input-stream-over-data-frames: Private classes
Class, binary-output-stream-over-data-frames: Public classes
Class, binary-stream: Private classes
Class, body-collecting-mixin: Private classes
Class, client-http2-connection: Public classes
Class, client-stream: Public classes
Class, flow-control-mixin: Private classes
Class, header-collecting-mixin: Public classes
Class, history-keeping-object: Private classes
Class, history-printing-object: Public classes
Class, hpack-context: Private classes
Class, http2-connection: Private classes
Class, http2-stream: Private classes
Class, log-headers-mixin: Private classes
Class, logging-connection: Private classes
Class, logging-object: Public classes
Class, logging-stream: Private classes
Class, server-http2-connection: Private classes
Class, server-stream: Private classes
Class, timeshift-pinging-connection: Public classes
classes.lisp: The http2/core/classes․lisp file
client-http2-connection: Public classes
client-stream: Public classes
Condition, go-away: Private conditions
Condition, http-stream-error: Private conditions
Condition, peer-should-go-away: Private conditions
core: The http2/core module

F
File, classes.lisp: The http2/core/classes․lisp file
File, frames.lisp: The http2/core/frames․lisp file
File, headers.lisp: The http2/core/headers․lisp file
File, http2.asd: The http2/http2․asd file
File, package.lisp: The http2/package․lisp file
File, payload-streams.lisp: The http2/core/payload-streams․lisp file
File, utils.lisp: The http2/core/utils․lisp file
flow-control-mixin: Private classes
frame-type: Private structures
frames.lisp: The http2/core/frames․lisp file

G
go-away: Private conditions

H
header-collecting-mixin: Public classes
headers.lisp: The http2/core/headers․lisp file
history-keeping-object: Private classes
history-printing-object: Public classes
hpack-context: Private classes
http-stream-error: Private conditions
http2: The http2 system
http2: The http2 package
http2-connection: Private classes
http2-stream: Private classes
http2.asd: The http2/http2․asd file

L
log-headers-mixin: Private classes
logging-connection: Private classes
logging-object: Public classes
logging-stream: Private classes

M
Module, core: The http2/core module

P
Package, http2: The http2 package
package.lisp: The http2/package․lisp file
payload-streams.lisp: The http2/core/payload-streams․lisp file
peer-should-go-away: Private conditions

S
server-http2-connection: Private classes
server-stream: Private classes
Structure, frame-type: Private structures
System, http2: The http2 system

T
timeshift-pinging-connection: Public classes

U
utils.lisp: The http2/core/utils․lisp file

Jump to:   B   C   F   G   H   L   M   P   S   T   U