[package]
edition = "2024"
name = "wireframe"
version = "0.3.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Simplify building servers and clients for custom binary protocols."
documentation = "https://docs.rs/wireframe"
readme = "README.md"
keywords = [
"async",
"networking",
"binary-protocol",
"protocol",
"tokio",
]
categories = [
"network-programming",
"asynchronous",
]
license = "ISC"
repository = "https://github.com/leynos/wireframe"
[package.metadata.docs.rs]
features = [
"metrics",
"pool",
"testkit",
]
[features]
advanced-tests = []
default = [
"metrics",
"serializer-bincode",
]
examples = []
metrics = [
"dep:metrics",
"dep:metrics-exporter-prometheus",
]
pool = ["dep:bb8"]
serializer-bincode = []
serializer-serde = []
test-support = []
testkit = []
[lib]
name = "wireframe"
path = "src/lib.rs"
doctest = true
[[example]]
name = "async_stream"
path = "examples/async_stream.rs"
required-features = ["examples"]
[[example]]
name = "client_echo_login"
path = "examples/client_echo_login.rs"
required-features = ["examples"]
[[example]]
name = "echo"
path = "examples/echo.rs"
required-features = ["examples"]
[[example]]
name = "hotline_codec"
path = "examples/hotline_codec.rs"
required-features = ["examples"]
[[example]]
name = "metadata_routing"
path = "examples/metadata_routing.rs"
required-features = ["examples"]
[[example]]
name = "multi_packet"
path = "examples/multi_packet.rs"
required-features = ["examples"]
[[example]]
name = "mysql_codec"
path = "examples/mysql_codec.rs"
required-features = ["examples"]
[[example]]
name = "packet_enum"
path = "examples/packet_enum.rs"
required-features = ["examples"]
[[example]]
name = "ping_pong"
path = "examples/ping_pong.rs"
required-features = ["examples"]
[[example]]
name = "resp_codec"
path = "examples/resp_codec.rs"
required-features = ["examples"]
[[test]]
name = "app_data"
path = "tests/app_data.rs"
[[test]]
name = "async_stream"
path = "tests/async_stream.rs"
[[test]]
name = "bdd"
path = "tests/bdd/mod.rs"
required-features = ["advanced-tests"]
[[test]]
name = "bdd_pool"
path = "tests/bdd_pool/mod.rs"
required-features = [
"advanced-tests",
"pool",
]
[[test]]
name = "client_lifecycle"
path = "tests/client_lifecycle.rs"
[[test]]
name = "client_pair_harness"
path = "tests/client_pair_harness.rs"
[[test]]
name = "client_preamble"
path = "tests/client_preamble.rs"
[[test]]
name = "client_runtime"
path = "tests/client_runtime.rs"
[[test]]
name = "codec_error"
path = "tests/codec_error.rs"
[[test]]
name = "codec_fixtures"
path = "tests/codec_fixtures.rs"
[[test]]
name = "codec_performance_benchmark_helpers"
path = "tests/codec_performance_benchmark_helpers.rs"
[[test]]
name = "codec_test_harness"
path = "tests/codec_test_harness.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]]
name = "error_display"
path = "tests/error_display.rs"
[[test]]
name = "example_codecs"
path = "tests/example_codecs.rs"
[[test]]
name = "extractor"
path = "tests/extractor.rs"
[[test]]
name = "fragment_transport"
path = "tests/fragment_transport.rs"
[[test]]
name = "frame_codec"
path = "tests/frame_codec.rs"
[[test]]
name = "interleaved_push_queues"
path = "tests/interleaved_push_queues.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 = "partial_frame_feeding"
path = "tests/partial_frame_feeding.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 = "reassembly_assertion_helpers"
path = "tests/reassembly_assertion_helpers.rs"
[[test]]
name = "request_parts"
path = "tests/request_parts.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 = "slow_io_backpressure"
path = "tests/slow_io_backpressure.rs"
[[test]]
name = "stream_end"
path = "tests/stream_end.rs"
[[test]]
name = "streaming_request"
path = "tests/streaming_request.rs"
[[test]]
name = "support"
path = "tests/support.rs"
[[test]]
name = "test_codec_error_regressions"
path = "tests/test_codec_error_regressions.rs"
[[test]]
name = "test_observability_harness"
path = "tests/test_observability_harness.rs"
[[test]]
name = "testkit_exports"
path = "tests/testkit_exports.rs"
[[test]]
name = "unified_codec"
path = "tests/unified_codec.rs"
[[test]]
name = "wireframe_protocol"
path = "tests/wireframe_protocol.rs"
[[bench]]
name = "codec_performance"
path = "benches/codec_performance.rs"
harness = false
[[bench]]
name = "codec_performance_alloc"
path = "benches/codec_performance_alloc.rs"
harness = false
[dependencies.async-trait]
version = "0.1.89"
[dependencies.bb8]
version = "0.9.1"
optional = true
[dependencies.bincode]
version = "2.0.1"
features = ["serde"]
[dependencies.bytes]
version = "1.10.1"
[dependencies.dashmap]
version = "6.1.0"
[dependencies.derive_more]
version = "2.0.1"
features = [
"display",
"from",
]
[dependencies.futures]
version = "0.3.31"
[dependencies.itoa]
version = "1.0"
[dependencies.leaky-bucket]
version = "1.1.2"
[dependencies.log]
version = "0.4.28"
[dependencies.metrics]
version = "0.24.2"
optional = true
[dependencies.serde]
version = "1.0.219"
features = ["derive"]
[dependencies.socket2]
version = "0.6.0"
[dependencies.static_assertions]
version = "1.1.0"
[dependencies.thiserror]
version = "2.0.16"
[dependencies.tokio]
version = "1.47.1"
features = [
"net",
"signal",
"rt-multi-thread",
"macros",
"sync",
"time",
"io-util",
]
default-features = false
[dependencies.tokio-stream]
version = "0.1.17"
[dependencies.tokio-util]
version = "0.7.16"
features = [
"rt",
"codec",
]
[dependencies.tracing]
version = "0.1.41"
features = [
"log",
"log-always",
]
[dependencies.tracing-subscriber]
version = "0.3.18"
[dev-dependencies.async-stream]
version = "0.3.6"
[dev-dependencies.criterion]
version = "0.5.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.rstest-bdd]
version = "0.5.0"
[dev-dependencies.rstest-bdd-macros]
version = "0.5.0"
features = ["strict-compile-time-validation"]
[dev-dependencies.serial_test]
version = "3.2.0"
[dev-dependencies.tokio]
version = "1.47.1"
features = [
"macros",
"rt-multi-thread",
"sync",
"time",
"io-util",
"net",
"test-util",
]
default-features = false
[dev-dependencies.tracing-test]
version = "0.2.5"
[target."cfg(loom)".dependencies.loom]
version = "0.7.2"
[target."cfg(not(loom))".dependencies.metrics-exporter-prometheus]
version = "0.17.2"
features = ["http-listener"]
optional = true
[lints.clippy]
allow_attributes = "deny"
allow_attributes_without_reason = "deny"
big_endian_bytes = "deny"
blanket_clippy_restriction_lints = "deny"
cognitive_complexity = "deny"
dbg_macro = "deny"
expect_used = "deny"
host_endian_bytes = "deny"
implicit_hasher = "deny"
indexing_slicing = "deny"
integer_division = "deny"
integer_division_remainder_used = "deny"
little_endian_bytes = "deny"
needless_pass_by_value = "deny"
panic_in_result_fn = "deny"
print_stderr = "deny"
print_stdout = "deny"
string_slice = "deny"
unreachable = "deny"
unwrap_used = "deny"
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.rust]
missing_docs = "deny"
renamed_and_removed_lints = "deny"
unknown_lints = "deny"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(loom)"]
[lints.rustdoc]
bare_urls = "deny"
broken_intra_doc_links = "deny"
invalid_codeblock_attributes = "deny"
invalid_html_tags = "deny"
missing_crate_level_docs = "deny"
private_intra_doc_links = "deny"
unescaped_backticks = "deny"