Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/edda

crates/nornir-flight/Cargo.toml

[package]
name = "nornir-flight"
version = "0.2.0"
edition = "2021"
description = "Generic, use-case-agnostic Apache Arrow Flight transport seam for the nordisk constellation — raw do_put/do_get/do_exchange over RecordBatch, schema-agnostic FlightSink/FlightSource traits, composing the shared nornir-service bearer-auth interceptor. The ONE Flight transport (LAW: reuse); each use (build-info stream, skade-flight, …) is an independent consumer on top."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["arrow", "flight", "grpc", "transport", "recordbatch"]
categories = ["network-programming", "data-structures"]
exclude = ["/.nornir/"]

[features]
default = []
# `tls` — enable the TLS-terminating serve/connect path
# (`FlightServer::serve_with_tls[_and_auth]` + `FlightConn::connect_tls`). It
# turns on tonic's ring TLS stack AND `nornir-service`'s own `tls` feature so the
# transport CONSUMES the shared `nornir_service::serve_with_tls` loop (LAW #5 —
# the TLS serve tail lives once, in nornir-service, exactly as holger-server uses
# it). OFF by default: plaintext consumers never pull in tonic's TLS stack.
tls = ["nornir-service/tls", "tonic/tls-ring"]
# `testmatrix` — emit each functional surface's health (serve / do_put / do_get /
# do_exchange) into the nornir test-matrix via `functional_status`. OFF BY
# DEFAULT: a compiled-out no-op with no nornir dep. Turn on with
# `--features testmatrix` (pulls nornir-testmatrix's own `testmatrix` mode).
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]
# `bench` — register the put/get throughput bencher with the shared nornir-bench
# harness (host cores + peak memory stamped by the harness). OFF by default: a
# release/library build carries no bench dependency.
bench = ["dep:nornir-bench", "dep:serde_json", "dep:anyhow"]

[dependencies]
# The shared tonic serve loop + bearer-auth interceptor. REUSE (LAW #5): the
# transport composes nornir-service's auth, it does NOT re-roll it.
nornir-service = { path = "../nornir-service", version = "0.1" }

# Introspection-marker emitter — only compiled with `testmatrix`. Path+version
# (like the other edda leaves) so the workspace resolves the local sibling.
nornir-testmatrix = { version = "0.2.7", path = "../nornir-testmatrix", default-features = false, optional = true }

# Apache Arrow Flight (56.x → tonic 0.13, matching nornir-service). Only the
# transport is shared; the schema is the caller's.
arrow-array = "59"
arrow-schema = "59"
arrow-flight = "59"

# tonic pinned to match nornir-service exactly so the Request/Status/Interceptor
# types unify to one tonic — the auth interceptor drops straight onto the Flight
# server.
tonic = { version = "0.14", default-features = false, features = ["router", "transport", "codegen"] }

futures = "0.3"
async-trait = "0.1"
thiserror = "2"
# `door` — the Flight SQL door's Basic payload decoder (padding optional).
base64 = "0.23"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "net", "time"] }

# Bench MODE (feature `bench`): the shared nornir-bench harness + the JSON row
# builder. Path+version like the other edda leaves.
nornir-bench = { version = "0.2.0", path = "../nornir-bench", optional = true }
serde_json = { version = "1", optional = true }
anyhow = { version = "1", optional = true }

[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "net", "time"] }
futures = "0.3"
arrow-array = "59"
arrow-schema = "59"

# Pure-Rust self-signed cert generation for the `tls` round-trip acceptance test
# (LAW #9 — zero-shell: no `openssl` subprocess). Only the `--features tls` test
# compiles it in; a plain `cargo test` build never touches TLS.
rcgen = "0.14"

# The nornir-bench harness entrypoint (prints one JSON BenchRun on stdout, with
# host cores + memory telemetry stamped by the harness). Only with `bench`.
[[example]]
name = "nornir-bench"
required-features = ["bench"]