class twisted.web._http2.H2Stream: (source)
Implements interfaces: twisted.internet.interfaces.IConsumer, twisted.internet.interfaces.IPushProducer, twisted.internet.interfaces.ITransport
A class representing a single HTTP/2 stream.
This class works hand-in-hand with H2Connection
. It acts to provide an implementation of ITransport
, IConsumer
, and IProducer
that work for a single HTTP/2 connection, while tightly cleaving to the interface provided by those interfaces. It does this by having a tight coupling to H2Connection
, which allows associating many of the functions of ITransport
, IConsumer
, and IProducer
to objects on a stream-specific level.
Instance Variable | streamID | The numerical stream ID that this object corresponds to. |
Instance Variable | producing | Whether this stream is currently allowed to produce data to its consumer. |
Instance Variable | command | The HTTP verb used on the request. |
Instance Variable | path | The HTTP path used on the request. |
Instance Variable | producer | The object producing the response, if any. |
Instance Variable | site | The twisted.web.server.Site object this stream belongs to, if any. |
Instance Variable | factory | The twisted.web.http.HTTPFactory object that constructed this stream's parent connection. |
Class Variable | transport | Undocumented |
Method | __init__ | Initialize this HTTP/2 stream. |
Method | receiveDataChunk | No summary |
Method | requestComplete | No summary |
Method | connectionLost | Called by the H2Connection when a connection is lost or a stream is reset. |
Method | windowUpdated | Called by the H2Connection when this stream's flow control window has been opened. |
Method | flowControlBlocked | Called by the H2Connection when this stream's flow control window has been exhausted. |
Method | writeHeaders | Called by the consumer to write headers to the stream. |
Method | requestDone | Called by a consumer to clean up whatever permanent state is in use. |
Method | write | Write a single chunk of data into a data frame. |
Method | writeSequence | Write a sequence of chunks of data into data frames. |
Method | loseConnection | Close the connection after writing all pending data. |
Method | abortConnection | Forcefully abort the connection by sending a RstStream frame. |
Method | getPeer | Get information about the peer. |
Method | getHost | Similar to getPeer, but for this side of the connection. |
Method | isSecure | Returns True if this channel is using a secure transport. |
Method | registerProducer | Register to receive data from a producer. |
Instance Variable | hasStreamingProducer | Undocumented |
Method | unregisterProducer | |
Method | stopProducing | |
Method | pauseProducing | |
Method | resumeProducing | |
Instance Variable | _producerProducing | Whether the producer stored in producer is currently producing data. |
Instance Variable | _inboundDataBuffer | Any data that has been received from the network but has not yet been received by the consumer. |
Instance Variable | _conn | A reference to the connection this stream belongs to. |
Instance Variable | _request | A request object that this stream corresponds to. |
Instance Variable | _buffer | A buffer containing data produced by the producer that could not be sent on the network at this time. |
Instance Variable | _hasStreamingProducer | Undocumented |
Method | _convertHeaders | This method converts the HTTP/2 header set into something that looks like HTTP/1.1. In particular, it strips the 'special' headers and adds a Host: header. |
Method | _send100Continue | Sends a 100 Continue response, used to signal to clients that further processing will be performed. |
Method | _respondToBadRequestAndDisconnect | This is a quick and dirty way of responding to bad requests. |
bool
)
twisted.web.server.Site
object this stream belongs to, if any.twisted.web.server.Site
)
twisted.web.http.HTTPFactory
object that constructed this stream's parent connection.twisted.web.http.HTTPFactory
)
bool
)
collections.deque
containing bytes
)
twisted.web.iweb.IRequest
)
io.BytesIO
)
Initialize this HTTP/2 stream.
Parameters | streamID | The numerical stream ID that this object corresponds to. (type: int ) |
connection | The HTTP/2 connection this stream belongs to. (type: H2Connection ) | |
headers | The HTTP/2 request headers. (type: A list of tuple s of header name and header value, both as bytes .) | |
requestFactory | A function that builds appropriate request request objects. (type: A callable that returns a twisted.web.iweb.IRequest .) | |
site | The twisted.web.server.Site object this stream belongs to, if any. (type: twisted.web.server.Site ) | |
factory | The twisted.web.http.HTTPFactory object that constructed this stream's parent connection. (type: twisted.web.http.HTTPFactory ) |
Called when the connection has received a chunk of data from the underlying transport. If the stream has been registered with a consumer, and is currently able to push data, immediately passes it through. Otherwise, buffers the chunk until we can start producing.
Parameters | data | The chunk of data that was received. (type: bytes ) |
flowControlledLength | The total flow controlled length of this chunk, which is used when we want to re-open the window. May be different to len(data) . (type: int ) |
Called by the H2Connection
when the all data for a request has been received. Currently, with the legacy twisted.web.http.Request
object, just calls requestReceived unless the producer wants us to be quiet.
Called by the H2Connection
when a connection is lost or a stream is reset.
Parameters | reason | The reason the connection was lost. (type: str ) |
Called by the H2Connection
when this stream's flow control window has been opened.
Called by the H2Connection
when this stream's flow control window has been exhausted.
Called by the consumer to write headers to the stream.
Parameters | version | The HTTP version. (type: bytes ) |
code | The status code. (type: int ) | |
reason | The reason phrase. Ignored in HTTP/2. (type: bytes ) | |
headers | The HTTP response headers. (type: Any iterable of two-tuples of bytes , representing header names and header values.) |
Called by a consumer to clean up whatever permanent state is in use.
Parameters | request | The request calling the method. (type: twisted.web.iweb.IRequest ) |
Sends a 100 Continue response, used to signal to clients that further processing will be performed.
This is a quick and dirty way of responding to bad requests.
As described by HTTP standard we should be patient and accept the whole request from the client before sending a polite bad request response, even in the case when clients send tons of data.
Unlike in the HTTP/1.1 case, this does not actually disconnect the underlying transport: there's no need. This instead just sends a 400 response and terminates the stream.
Write a single chunk of data into a data frame.
Parameters | data | The data chunk to send. (type: bytes ) |
Write a sequence of chunks of data into data frames.
Parameters | iovec | A sequence of chunks to send. (type: An iterable of bytes chunks.) |
Register to receive data from a producer.
This sets self to be a consumer for a producer. When this object runs out of data (as when a send(2) call on a socket succeeds in moving the last data from a userspace buffer into a kernelspace buffer), it will ask the producer to resumeProducing().
For IPullProducer
providers, resumeProducing
will be called once each time data is required.
For IPushProducer
providers, pauseProducing
will be called whenever the write buffer fills up and resumeProducing
will only be called when it empties.
Parameters | producer | The producer to register. (type: IProducer provider) |
streaming | True if producer provides IPushProducer , False if producer provides IPullProducer . (type: bool ) | |
Returns | None | |
Raises | RuntimeError | If a producer is already registered. |