| 220 | |
| 221 | |
| 222 | class Http3Server(Http3Connection): |
| 223 | ReceiveData = RequestData |
| 224 | ReceiveEndOfMessage = RequestEndOfMessage |
| 225 | ReceiveProtocolError = RequestProtocolError |
| 226 | ReceiveTrailers = RequestTrailers |
| 227 | |
| 228 | def __init__(self, context: context.Context): |
| 229 | super().__init__(context, context.client) |
| 230 | |
| 231 | def parse_headers(self, event: HeadersReceived) -> RequestHeaders | ResponseHeaders: |
| 232 | # same as HTTP/2 |
| 233 | ( |
| 234 | host, |
| 235 | port, |
| 236 | method, |
| 237 | scheme, |
| 238 | authority, |
| 239 | path, |
| 240 | headers, |
| 241 | ) = parse_h2_request_headers(event.headers) |
| 242 | request = http.Request( |
| 243 | host=host, |
| 244 | port=port, |
| 245 | method=method, |
| 246 | scheme=scheme, |
| 247 | authority=authority, |
| 248 | path=path, |
| 249 | http_version=b"HTTP/3", |
| 250 | headers=headers, |
| 251 | content=None, |
| 252 | trailers=None, |
| 253 | timestamp_start=time.time(), |
| 254 | timestamp_end=None, |
| 255 | ) |
| 256 | return RequestHeaders(event.stream_id, request, end_stream=event.stream_ended) |
| 257 | |
| 258 | |
| 259 | class Http3Client(Http3Connection): |
no outgoing calls
no test coverage detected
searching dependent graphs…