wireframe 0.1.0

Simplify building servers and clients for custom binary protocols.
Documentation
[[bin]]
name = "wireframe"
path = "src/main.rs"

[dependencies.async-trait]
version = "0.1.89"

[dependencies.bincode]
version = "2.0.1"

[dependencies.bytes]
version = "1.10.1"

[dependencies.dashmap]
version = "6.1.0"

[dependencies.derive_more]
features = ["display", "from"]
version = "2.0.1"

[dependencies.futures]
version = "0.3.31"

[dependencies.leaky-bucket]
version = "1.1.2"

[dependencies.log]
version = "0.4.28"

[dependencies.metrics]
optional = true
version = "0.24.2"

[dependencies.serde]
features = ["derive"]
version = "1.0.219"

[dependencies.static_assertions]
version = "1"

[dependencies.thiserror]
version = "2.0.16"

[dependencies.tokio]
default-features = false
features = ["net", "signal", "rt-multi-thread", "macros", "sync", "time", "io-util"]
version = "1.47.1"

[dependencies.tokio-stream]
version = "0.1.17"

[dependencies.tokio-util]
features = ["rt", "codec"]
version = "0.7.16"

[dependencies.tracing]
features = ["log", "log-always"]
version = "0.1.41"

[dependencies.tracing-subscriber]
version = "0.3"

[dev-dependencies.async-stream]
version = "0.3.6"

[dev-dependencies.cucumber]
version = "0.21.1"

[dev-dependencies.logtest]
version = "2.0.0"

[dev-dependencies.loom]
version = "0.7.2"

[dev-dependencies.metrics-util]
version = "0.20.0"

[dev-dependencies.mockall]
version = "0.13.1"

[dev-dependencies.proptest]
version = "1.7.0"

[dev-dependencies.rstest]
version = "0.26.1"

[dev-dependencies.serial_test]
version = "3.2.0"

[dev-dependencies.tokio]
default-features = false
features = ["macros", "rt-multi-thread", "sync", "time", "io-util", "net", "test-util"]
version = "1.47.1"

[dev-dependencies.tracing-test]
version = "0.2.5"

[[example]]
name = "async_stream"
path = "examples/async_stream.rs"

[[example]]
name = "echo"
path = "examples/echo.rs"
required-features = ["examples"]

[[example]]
name = "metadata_routing"
path = "examples/metadata_routing.rs"

[[example]]
name = "multi_packet"
path = "examples/multi_packet.rs"

[[example]]
name = "packet_enum"
path = "examples/packet_enum.rs"
required-features = ["examples"]

[[example]]
name = "ping_pong"
path = "examples/ping_pong.rs"
required-features = ["examples"]

[features]
advanced-tests = []
cucumber-tests = []
default = ["metrics", "serializer-bincode"]
examples = []
metrics = ["dep:metrics", "dep:metrics-exporter-prometheus"]
serializer-bincode = []
test-support = []

[lib]
doctest = false
name = "wireframe"
path = "src/lib.rs"

[lints.clippy]
pedantic = "warn"

[lints.rust.unexpected_cfgs]
check-cfg = ["cfg(loom)"]
level = "warn"
priority = 0

[package]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["network-programming", "asynchronous"]
description = "Simplify building servers and clients for custom binary protocols."
documentation = "https://docs.rs/wireframe"
edition = "2024"
keywords = ["async", "networking", "binary-protocol", "protocol", "tokio"]
license = "ISC"
name = "wireframe"
readme = "README.md"
repository = "https://github.com/leynos/wireframe"
version = "0.1.0"

[package.metadata.docs.rs]
features = ["metrics"]

[target."cfg(loom)".dependencies.loom]
version = "0.7.2"

[target."cfg(not(loom))".dependencies.metrics-exporter-prometheus]
features = ["http-listener"]
optional = true
version = "0.17.2"

[[test]]
name = "app_data"
path = "tests/app_data.rs"

[[test]]
name = "async_stream"
path = "tests/async_stream.rs"

[[test]]
name = "concurrency_loom"
path = "tests/advanced/concurrency_loom.rs"
required-features = ["advanced-tests"]

[[test]]
name = "connection"
path = "tests/connection.rs"

[[test]]
name = "connection_actor_errors"
path = "tests/connection_actor_errors.rs"

[[test]]
name = "connection_actor_fairness"
path = "tests/connection_actor_fairness.rs"

[[test]]
name = "connection_actor_shutdown"
path = "tests/connection_actor_shutdown.rs"

[[test]]
name = "connection_fragmentation"
path = "tests/connection_fragmentation.rs"

[[test]]
name = "correlation_id"
path = "tests/correlation_id.rs"

[[test]]
harness = false
name = "cucumber"
path = "tests/cucumber.rs"
required-features = ["advanced-tests", "cucumber-tests"]

[[test]]
name = "error_display"
path = "tests/error_display.rs"

[[test]]
name = "extractor"
path = "tests/extractor.rs"

[[test]]
name = "fragment_transport"
path = "tests/fragment_transport.rs"

[[test]]
name = "lifecycle"
path = "tests/lifecycle.rs"

[[test]]
name = "metadata"
path = "tests/metadata.rs"

[[test]]
name = "metrics"
path = "tests/metrics.rs"

[[test]]
name = "middleware"
path = "tests/middleware.rs"

[[test]]
name = "middleware_order"
path = "tests/middleware_order.rs"

[[test]]
name = "multi_packet"
path = "tests/multi_packet.rs"

[[test]]
name = "multi_packet_streaming"
path = "tests/multi_packet_streaming.rs"

[[test]]
name = "packet_parts"
path = "tests/packet_parts.rs"

[[test]]
name = "preamble"
path = "tests/preamble.rs"

[[test]]
name = "push"
path = "tests/push.rs"

[[test]]
name = "push_policies"
path = "tests/push_policies.rs"

[[test]]
name = "rate_limiter_regression"
path = "tests/rate_limiter_regression.rs"

[[test]]
name = "response"
path = "tests/response.rs"

[[test]]
name = "routes"
path = "tests/routes.rs"

[[test]]
name = "server"
path = "tests/server.rs"

[[test]]
name = "session_registry"
path = "tests/session_registry.rs"

[[test]]
name = "stream_end"
path = "tests/stream_end.rs"

[[test]]
name = "support"
path = "tests/support.rs"

[[test]]
name = "wireframe_protocol"
path = "tests/wireframe_protocol.rs"

[[test]]
name = "world"
path = "tests/world.rs"