# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
name = "epics-ca-rs"
version = "0.13.5"
authors = ["Sang Woo Kim <sngwkim915@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "EPICS Channel Access protocol client and server"
readme = "README.md"
license-file = "LICENSE"
repository = "https://github.com/epics-rs/epics-rs"

[features]
cap-tokens = [
    "dep:ed25519-dalek",
    "dep:rand_core",
    "dep:base64",
    "dep:serde",
    "dep:serde_json",
    "dep:thiserror",
]
default = []
discovery = [
    "dep:mdns-sd",
    "dep:hickory-resolver",
]
discovery-dns-update = [
    "discovery",
    "dep:hickory-client",
    "dep:hickory-proto",
    "dep:base64",
]
experimental-rust-tls = [
    "dep:tokio-rustls",
    "dep:rustls-pemfile",
    "dep:rustls-pki-types",
    "dep:x509-parser",
    "dep:sha2",
]
observability = [
    "dep:metrics-exporter-prometheus",
    "dep:tracing-subscriber",
]
otlp = [
    "observability",
    "dep:opentelemetry",
    "dep:opentelemetry_sdk",
    "dep:opentelemetry-otlp",
    "dep:tracing-opentelemetry",
]

[lib]
name = "epics_ca_rs"
path = "src/lib.rs"

[[bin]]
name = "ca-admin-rs"
path = "src/bin/ca-admin-rs.rs"

[[bin]]
name = "ca-lint-rs"
path = "src/bin/ca-lint-rs.rs"

[[bin]]
name = "ca-repeater-rs"
path = "src/bin/ca-repeater-rs.rs"

[[bin]]
name = "ca-replay-rs"
path = "src/bin/ca-replay-rs.rs"

[[bin]]
name = "ca-soak"
path = "src/bin/ca-soak.rs"

[[bin]]
name = "ca-soak-observed"
path = "src/bin/ca-soak-observed.rs"
required-features = ["observability"]

[[bin]]
name = "caget-rs"
path = "src/bin/caget-rs.rs"

[[bin]]
name = "cainfo-rs"
path = "src/bin/cainfo-rs.rs"

[[bin]]
name = "camonitor-rs"
path = "src/bin/camonitor-rs.rs"

[[bin]]
name = "caput-rs"
path = "src/bin/caput-rs.rs"

[[bin]]
name = "softioc-rs"
path = "src/bin/softioc-rs.rs"

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

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

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

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

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

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

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

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

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

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

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

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

[[bench]]
name = "end_to_end_bench"
path = "benches/end_to_end_bench.rs"
harness = false

[[bench]]
name = "protocol_bench"
path = "benches/protocol_bench.rs"
harness = false

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

[dependencies.base64]
version = "0.22"
optional = true

[dependencies.chrono]
version = "0.4"

[dependencies.clap]
version = "4"
features = ["derive"]

[dependencies.ed25519-dalek]
version = "2"
features = ["rand_core"]
optional = true

[dependencies.epics-base-rs]
version = "0.13.5"

[dependencies.futures-util]
version = "0.3"

[dependencies.hickory-client]
version = "0.24"
features = ["dnssec-ring"]
optional = true
default-features = false

[dependencies.hickory-proto]
version = "0.24"
features = [
    "dnssec-ring",
    "tokio-runtime",
]
optional = true
default-features = false

[dependencies.hickory-resolver]
version = "0.24"
features = [
    "tokio-runtime",
    "system-config",
]
optional = true
default-features = false

[dependencies.if-addrs]
version = "0.13"

[dependencies.mdns-sd]
version = "0.13"
features = ["async"]
optional = true
default-features = false

[dependencies.metrics]
version = "0.23"

[dependencies.metrics-exporter-prometheus]
version = "0.15"
features = ["http-listener"]
optional = true
default-features = false

[dependencies.opentelemetry]
version = "0.24"
optional = true

[dependencies.opentelemetry-otlp]
version = "0.17"
features = [
    "grpc-tonic",
    "trace",
]
optional = true
default-features = false

[dependencies.opentelemetry_sdk]
version = "0.24"
features = [
    "trace",
    "rt-tokio",
]
optional = true
default-features = false

[dependencies.rand_core]
version = "0.6"
features = ["getrandom"]
optional = true

[dependencies.rustls-pemfile]
version = "2"
optional = true

[dependencies.rustls-pki-types]
version = "1"
optional = true

[dependencies.serde]
version = "1"
features = ["derive"]
optional = true

[dependencies.serde_json]
version = "1"
optional = true

[dependencies.sha2]
version = "0.10"
optional = true

[dependencies.socket2]
version = "0.5"
features = ["all"]

[dependencies.thiserror]
version = "1"
optional = true

[dependencies.tokio]
version = "1"
features = ["full"]

[dependencies.tokio-rustls]
version = "0.26"
features = ["ring"]
optional = true
default-features = false

[dependencies.tracing]
version = "0.1"

[dependencies.tracing-opentelemetry]
version = "0.25"
optional = true

[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
optional = true

[dependencies.x509-parser]
version = "0.16"
optional = true

[dev-dependencies.criterion]
version = "0.5"
features = [
    "html_reports",
    "async_tokio",
]

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

[dev-dependencies.rcgen]
version = "0.13"

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

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.tokio]
version = "1"
features = ["test-util"]
