[package]
name = "pgwire-replication"
version = "0.2.0"
edition = "2021"
rust-version = "1.88"
resolver = "2"
license = "Apache-2.0 OR MIT"
authors = ["Vahid Negahdari <vahid.negahdari@gmail.com>"]
description = "Tokio-based Postgres wire-protocol logical replication client (pgoutput) with TLS and SCRAM."
keywords = [
"postgres",
"pgoutput",
"replication",
"wal",
"pgwire",
]
categories = ["database", "network-programming", "asynchronous"]
repository = "https://github.com/vnvo/pgwire-replication"
homepage = "https://github.com/vnvo/pgwire-replication"
documentation = "https://docs.rs/pgwire-replication"
readme = "README.md"
exclude = ["Cargo.lock"]
[features]
default = ["tls-rustls", "scram"]
tls-rustls = [
"dep:rustls",
"dep:tokio-rustls",
"dep:webpki-roots",
"dep:rustls-pemfile",
]
scram = ["dep:base64", "dep:hmac", "dep:sha2", "dep:rand"]
md5 = ["dep:md5"]
integration-tests = [
"dep:testcontainers",
"dep:tokio-postgres",
"dep:tracing-subscriber",
]
[dependencies]
bytes = "1"
tokio = { version = "1", features = [
"net",
"io-util",
"time",
"macros",
"rt-multi-thread",
"sync",
] }
tokio-util = "0.7"
thiserror = "1"
anyhow = "1"
tracing = "0.1"
rustls = { version = "0.23", features = ["ring"], optional = true }
tokio-rustls = { version = "0.26", optional = true }
webpki-roots = { version = "0.26", optional = true }
rustls-pemfile = { version = "2", optional = true }
base64 = { version = "0.22", optional = true }
hmac = { version = "0.12", optional = true }
sha2 = { version = "0.10", optional = true }
rand = { version = "0.9", optional = true }
md5 = { version = "0.7", optional = true }
testcontainers = { version = "0.25", optional = true }
tokio-postgres = { version = "0.7", optional = true }
tracing-subscriber = { version = "0.3", optional = true, features = [
"env-filter",
] }
[dev-dependencies]
hex = "0.4"
proptest = "1"
tempfile = "3"
tokio-postgres = "0.7"
criterion = { version = "0.5", features = ["html_reports"] }
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[[bench]]
name = "protocol_bench"
harness = false
[[example]]
name = "with_tls"
path = "examples/with_tls.rs"
required-features = ["tls-rustls"]
[[example]]
name = "with_mtls"
path = "examples/with_mtls.rs"
required-features = ["tls-rustls"]