Expand description
shiguredo_http3 - Sans I/O HTTP/3 ライブラリ
QUIC 非依存の HTTP/3 実装。任意の QUIC 実装と組み合わせて使用可能。
§機能
- Sans I/O 設計: QUIC トランスポートに依存しない
- HTTP/3 フレームのエンコード/デコード
- QPACK ヘッダー圧縮 (静的テーブル + 動的テーブル)
- クライアント/サーバー接続管理
- WebTransport サポート
§使用例
ⓘ
use shiguredo_http3::{ClientConnection, Header, Event, Settings};
// クライアント接続を作成
let mut conn = ClientConnection::new(Settings::default());
// 制御ストリーム ID を設定
conn.set_control_stream_id(2).unwrap();
// リクエストを送信
let stream_id = conn.send_request(&[
Header::new(b":method", b"GET"),
Header::new(b":path", b"/"),
Header::new(b":scheme", b"https"),
Header::new(b":authority", b"example.com"),
], true).unwrap();
// QUIC からデータを受信
conn.feed_stream(stream_id, &response_data, fin).unwrap();
// イベントを処理
while let Some(event) = conn.poll_event() {
match event {
Event::HeadersEnd { stream_id } => println!("Headers received"),
Event::Data { stream_id, data } => println!("Data: {:?}", data),
_ => {}
}
}Re-exports§
pub use connection::ClientConnection;pub use connection::Connection;pub use connection::H3InitData;pub use connection::Role;pub use connection::ServerConnection;pub use error::Error;pub use error::ErrorCode;pub use error::FrameDecodeError;pub use error::QpackError;pub use event::Event;pub use frame::DataPayload;pub use frame::Frame;pub use frame::FrameHeader;pub use frame::FrameType;pub use frame::GoawayPayload;pub use frame::HeadersPayload;pub use frame::SettingsPayload;pub use limits::Limits;pub use qpack::DecodedHeader;pub use qpack::Decoder as QpackDecoder;pub use qpack::DecoderInstruction;pub use qpack::DecoderStream;pub use qpack::DecoderStreamReceiver;pub use qpack::DynamicDecoder;pub use qpack::DynamicEncoder;pub use qpack::DynamicEntry;pub use qpack::DynamicTable;pub use qpack::Encoder as QpackEncoder;pub use qpack::EncoderInstruction;pub use qpack::EncoderStream;pub use qpack::EncoderStreamReceiver;pub use qpack::Header;pub use settings::Settings;pub use settings::SettingsId;pub use stream::RequestStream;pub use stream::StreamKind;pub use stream::StreamState;pub use stream::UniStreamType;pub use validation::HeaderField;
Modules§
- connection
- HTTP/3 接続 (RFC 9114)
- error
- HTTP/3 エラー型
- event
- HTTP/3 イベント
- frame
- HTTP/3 フレーム (RFC 9114 Section 7.2)
- limits
- HTTP/3 制限設定
- qpack
- QPACK ヘッダー圧縮 (RFC 9204)
- settings
- HTTP/3 Settings (RFC 9114 Section 7.2.4)
- stream
- HTTP/3 ストリーム (RFC 9114 Section 6)
- validation
- HTTP/3 メッセージ検証 (RFC 9114 Section 4.1.2)
- varint
- QUIC 可変長整数エンコーディング QUIC 可変長整数 (RFC 9000 Section 16)
- webtransport
- WebTransport over HTTP/3 (draft-ietf-webtrans-http3-15)