Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

crate 構成

リポジトリは crates/ 配下の Cargo workspace です。ユーザーに見える文字列は locales/、サンプルは templates/、ドキュメントは docs/、E2E テストは e2e/ と、いずれも crates/ と同じ階層に置かれます。

クレート一覧

クレート役割wasm32
wpg-coreプロトコル定義 IR、パケットの合成・解析、フィールドジェネレータ、lint 診断 (diag::keys)。OS 非依存○
wpg-protocols組み込みプロトコル定義 (Ethernet 〜 IS-IS / CLNP)。Rust マクロで wpg-core の IR にコンパイルされる○
wpg-i18nFluent ベースの i18n (ja / en / zh-CN / zh-TW / ko / de / fr / es)。locales/<lang>/main.ftl を include_str! で埋め込む○
wpg-templateテンプレートファイル形式 (.wpg.yaml / JSON)、スキーマのバージョン管理と (デ)シリアライズ
wpg-tx送信バックエンド (null、pcap、AF_PACKET、AF_XDP、DPDK) を TxBackend トレイトの裏に置く
wpg-rx受信側カウンタと簡易検証 (v1 は最小限)
wpg-sysOS の情報: ネットワークインタフェース、権限、カーネル、hugepages、Npcap / libpcap 検出、doctor チェック
wpg-logロギング設定: tracing サブスクライバ (pretty / JSON)、ローテーションログ、ライブ配信用のブロードキャストシンク
wpg-serverWeb UI を組み込んだ axum の HTTP / WebSocket サーバ
wpg-cliコマンドライン本体 (serve、send、render、import、template、doctor など)。成果物は wpg バイナリ
wpg-webLeptos (CSR) の Web UI。Trunk で WASM にコンパイルする○
dpdk-sysDPDK (24.11 / 23.11 LTS) の生の FFI。bindgen で生成し、インラインの高速パス (rte_eth_tx_burst、rte_pktmbuf_alloc など) と rte_errno は C の shim (wpg_ 接頭辞) で包む。link feature を付けたときだけ中身が入る (wpg-tx の dpdk から有効化)。ADR-0004
wpg-testutilテスト補助: pcap / pcapng の読み書き、16 進ヘルパー、golden ファイルの突合 (非公開)

さらに wpg-golden-tests が golden pcap のバイト突合と tshark 突合を担います (cargo test -p wpg-golden-tests)。

wasm32 制約

wpg-core・wpg-protocols・wpg-i18n・wpg-web は Web UI のためにブラウザ (wasm32-unknown-unknown) でもビルドできる必要があります。この 4 クレートではファイル I/O やスレッド、OS 依存のクレートを使わないでください。CI と just check-wasm が次を実行して保証します。

cargo check -p wpg-core -p wpg-protocols -p wpg-i18n --target wasm32-unknown-unknown

送信や OS の情報取得 (wpg-tx、wpg-sys) はネイティブ専用です。合成・解析ロジックを足すときは、OS 非依存の wpg-core に置けないか先に検討してください。