grpc/Cargo.toml
# The nordisk-native gRPC front over skade-katalog's RedbCatalog (tonic). The
# gRPC mode of the tri-modal catalog: the SAME catalog served over binary
# protobuf / HTTP-2 — the fast wire no mainstream Iceberg catalog ships. Own
# workspace (detached, like `bench/` and `rest/`) so it neither perturbs the
# foundational `skade-katalog` crate's lockfile nor drags tonic into a publish
# of the core library.
[package]
name = "skade-katalog-grpc"
readme = "README.md"
version = "0.1.1"
edition = "2024"
rust-version = "1.85"
description = "Native gRPC (tonic) front over skade-katalog's embedded RedbCatalog — the fast wire for the nordisk Rust mesh."
license = "Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/skade"
[dependencies]
skade-katalog = { path = ".." , version = "0.2.0" }
# arrow-58 Iceberg — the SAME vendored fork skade-katalog links (see rest/).
iceberg = { package = "iceberg-arrow59", version = "0.11.0", path = "../vendor/iceberg-arrow59" }
tonic = "0.14"
prost = "0.14"
# tonic 0.14 moved prost codegen support out of tonic into `tonic-prost` (the
# generated stubs name `tonic_prost::ProstCodec`) and `tonic-prost-build`.
tonic-prost = "0.14"
tokio = { version = "1", features = ["net", "rt", "fs"] }
# TcpListenerStream → serve on an already-bound (ephemeral) port for `spawn`.
tokio-stream = { version = "0.1", features = ["net"] }
anyhow = "1"
# `client::GrpcCatalog` implements `iceberg::Catalog`, an `#[async_trait]` trait.
async-trait = "0.1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Test-matrix emit, optional (same shape as the core crate). Off → no-op.
nornir-testmatrix = { version = "0.2", optional = true, default-features = false }
[build-dependencies]
tonic-prost-build = "0.14"
# Pure-Rust protobuf compiler — no system `protoc` needed (L9).
protox = "0.9"
[dev-dependencies]
tokio = { version = "1", features = ["full"] }
tempfile = "3"
iceberg = { package = "iceberg-arrow59", path = "../vendor/iceberg-arrow59" }
uuid = { version = "1", features = ["v4"] }
# the test PKI for tests/tls_roundtrip.rs
rcgen = { version = "0.14", default-features = false, features = ["ring", "pem"] }
[features]
# `tls`: TLS and mutual TLS on both ends — `serve_with`/`spawn_with` + `ServerTls`
# (a client CA makes it mutual) and `GrpcCatalog::{lazy,connect}_with` +
# `GrpcTls` for `https://`. rustls with ring; webpki roots or a private CA.
tls = ["tonic/tls-ring", "tonic/tls-webpki-roots"]
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]
# Detached workspace: keep the core crate's lock/build pristine (L2 no-regression).
[workspace]