enum HTTP2::Stream::State

Overview

https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-http2-14#section-5.1

The possible states of a stream are illustrated below. The State enum captures each of these possible states.

                      +--------+
                PP    |        |    PP
             ,--------|  idle  |--------.
            /         |        |         \
           v          +--------+          v
    +----------+          |           +----------+
    |          |          | H         |          |
,---| reserved |          |           | reserved |---.
|   | (local)  |          v           | (remote) |   |
|   +----------+      +--------+      +----------+   |
|      |          ES  |        |  ES          |      |
|      | H    ,-------|  open  |-------.      | H    |
|      |     /        |        |        \     |      |
|      v    v         +--------+         v    v      |
|   +----------+          |           +----------+   |
|   |   half   |          |           |   half   |   |
|   |  closed  |          | R         |  closed  |   |
|   | (remote) |          |           | (local)  |   |
|   +----------+          |           +----------+   |
|        |                v                 |        |
|        |  ES / R    +--------+  ES / R    |        |
|        `----------->|        |<-----------'        |
|  R                  | closed |                  R  |
`-------------------->|        |<--------------------'
                      +--------+

H:  HEADERS frame (with implied CONTINUATIONs)
PP: PUSH_PROMISE frame (with implied CONTINUATIONs)
ES: END_STREAM flag
R:  RST_STREAM frame

Defined in:

stream.cr

Enum Members

Idle = 0
ReservedLocal = 1
ReservedRemote = 2
Open = 3
HalfClosedLocal = 4
HalfClosedRemote = 5
Closed = 6

Instance Method Summary

Instance Method Detail

def closed? #

[View source]
def half_closed_local? #

[View source]
def half_closed_remote? #

[View source]
def idle? #

[View source]
def open? #

[View source]
def reserved_local? #

[View source]
def reserved_remote? #

[View source]