Skip to main content

Crate shiguredo_http3

Crate shiguredo_http3 

Source
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)