Skip to main content

shiguredo_http3/
lib.rs

1//! shiguredo_http3 - Sans I/O HTTP/3 ライブラリ
2//!
3//! QUIC 非依存の HTTP/3 実装。任意の QUIC 実装と組み合わせて使用可能。
4//!
5//! ## 機能
6//!
7//! - Sans I/O 設計: QUIC トランスポートに依存しない
8//! - HTTP/3 フレームのエンコード/デコード
9//! - QPACK ヘッダー圧縮 (静的テーブル + 動的テーブル)
10//! - クライアント/サーバー接続管理
11//! - WebTransport サポート
12//!
13//! ## 使用例
14//!
15//! ```rust,ignore
16//! use shiguredo_http3::{ClientConnection, Header, Event, Settings};
17//!
18//! // クライアント接続を作成
19//! let mut conn = ClientConnection::new(Settings::default());
20//!
21//! // 制御ストリーム ID を設定
22//! conn.set_control_stream_id(2).unwrap();
23//!
24//! // リクエストを送信
25//! let stream_id = conn.send_request(&[
26//!     Header::new(b":method", b"GET"),
27//!     Header::new(b":path", b"/"),
28//!     Header::new(b":scheme", b"https"),
29//!     Header::new(b":authority", b"example.com"),
30//! ], true).unwrap();
31//!
32//! // QUIC からデータを受信
33//! conn.feed_stream(stream_id, &response_data, fin).unwrap();
34//!
35//! // イベントを処理
36//! while let Some(event) = conn.poll_event() {
37//!     match event {
38//!         Event::HeadersEnd { stream_id } => println!("Headers received"),
39//!         Event::Data { stream_id, data } => println!("Data: {:?}", data),
40//!         _ => {}
41//!     }
42//! }
43//! ```
44
45pub mod connection;
46pub mod error;
47pub mod event;
48pub mod frame;
49pub mod limits;
50pub mod qpack;
51pub mod settings;
52pub mod stream;
53pub mod validation;
54/// QUIC 可変長整数エンコーディング
55pub mod varint;
56pub mod webtransport;
57
58// 公開 API
59pub use connection::{ClientConnection, Connection, H3InitData, Role, ServerConnection};
60pub use error::{Error, ErrorCode, FrameDecodeError, QpackError};
61pub use event::Event;
62pub use frame::{
63    DataPayload, Frame, FrameHeader, FrameType, GoawayPayload, HeadersPayload, SettingsPayload,
64};
65pub use limits::Limits;
66pub use qpack::{
67    DecodedHeader, Decoder as QpackDecoder, DecoderInstruction, DecoderStream,
68    DecoderStreamReceiver, DynamicDecoder, DynamicEncoder, DynamicEntry, DynamicTable,
69    Encoder as QpackEncoder, EncoderInstruction, EncoderStream, EncoderStreamReceiver, Header,
70};
71pub use settings::{Settings, SettingsId};
72pub use stream::{RequestStream, StreamKind, StreamState, UniStreamType};
73pub use validation::HeaderField;