Linux/Unix requires that processes be waited, which is unfortunate as Windows lets us abandon them to the murderous whims of the OS. This PR adds Unix-specific behaviour to send a SIGINT before waiting on the process, and adds an additional thread per call for asset disposal on all platforms. Closes #38. --- * Close processes by SIGINT and wait on Unix This seems to remedy the Linux-specific zombie processes. Addition of nix as a dependency *should* be fine on Windows, since I believe it compiles to an empty crate. * Dispose of Tracks on auxiliary thread This adds a mechanism for the mixer threads to perform potentially expensive deallocation/cleanup outside of the main loop, preventing deadline misses etc. This should make misbehaving `wait`s a bit more friendly.
188 lines
3.6 KiB
TOML
188 lines
3.6 KiB
TOML
[package]
|
|
authors = ["Kyle Simpson <kyleandrew.simpson@gmail.com>"]
|
|
description = "An async Rust library for the Discord voice API."
|
|
documentation = "https://docs.rs/songbird"
|
|
edition = "2018"
|
|
homepage = "https://github.com/serenity-rs/songbird"
|
|
include = ["src/**/*.rs", "Cargo.toml", "build.rs"]
|
|
keywords = ["discord", "api", "rtp", "audio"]
|
|
license = "ISC"
|
|
name = "songbird"
|
|
readme = "README.md"
|
|
repository = "https://github.com/serenity-rs/songbird.git"
|
|
version = "0.1.1"
|
|
|
|
[dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
tracing = "0.1"
|
|
tracing-futures = "0.2"
|
|
|
|
[dependencies.async-trait]
|
|
optional = true
|
|
version = "0.1"
|
|
|
|
[dependencies.async-tungstenite]
|
|
default-features = false
|
|
features = ["tokio-runtime"]
|
|
optional = true
|
|
version = "0.11"
|
|
|
|
[dependencies.audiopus]
|
|
optional = true
|
|
version = "0.2"
|
|
|
|
[dependencies.byteorder]
|
|
optional = true
|
|
version = "1"
|
|
|
|
[dependencies.dashmap]
|
|
optional = true
|
|
version = "4"
|
|
|
|
[dependencies.discortp]
|
|
features = ["discord-full"]
|
|
optional = true
|
|
version = "0.2"
|
|
|
|
[dependencies.flume]
|
|
optional = true
|
|
version = "0.10"
|
|
|
|
[dependencies.futures]
|
|
version = "0.3"
|
|
|
|
[dependencies.nix]
|
|
version = "0.19"
|
|
optional = true
|
|
|
|
[dependencies.parking_lot]
|
|
optional = true
|
|
version = "0.11"
|
|
|
|
[dependencies.rand]
|
|
optional = true
|
|
version = "0.8"
|
|
|
|
[dependencies.serenity]
|
|
optional = true
|
|
version = "0.10"
|
|
default-features = false
|
|
features = ["voice", "gateway"]
|
|
|
|
[dependencies.serenity-voice-model]
|
|
optional = true
|
|
version = "0.1"
|
|
|
|
[dependencies.spin_sleep]
|
|
optional = true
|
|
version = "1"
|
|
|
|
[dependencies.streamcatcher]
|
|
optional = true
|
|
version = "0.1"
|
|
|
|
[dependencies.tokio]
|
|
optional = true
|
|
version = "1.0"
|
|
default-features = false
|
|
|
|
[dependencies.twilight-gateway]
|
|
optional = true
|
|
version = "0.3"
|
|
default-features = false
|
|
|
|
[dependencies.twilight-model]
|
|
optional = true
|
|
version = "0.3"
|
|
default-features = false
|
|
|
|
[dependencies.typemap_rev]
|
|
optional = true
|
|
version = "0.1"
|
|
|
|
[dependencies.url]
|
|
optional = true
|
|
version = "2"
|
|
|
|
[dependencies.uuid]
|
|
optional = true
|
|
version = "0.8"
|
|
features = ["v4"]
|
|
|
|
[dependencies.xsalsa20poly1305]
|
|
optional = true
|
|
version = "0.6"
|
|
|
|
[dev-dependencies]
|
|
criterion = "0.3"
|
|
utils = { path = "utils" }
|
|
|
|
[features]
|
|
default = [
|
|
"serenity-rustls",
|
|
"driver",
|
|
"gateway",
|
|
]
|
|
gateway = [
|
|
"dashmap",
|
|
"flume",
|
|
"parking_lot",
|
|
"tokio/sync",
|
|
]
|
|
driver = [
|
|
"async-trait",
|
|
"async-tungstenite",
|
|
"audiopus",
|
|
"byteorder",
|
|
"discortp",
|
|
"flume",
|
|
"nix",
|
|
"parking_lot",
|
|
"rand",
|
|
"serenity-voice-model",
|
|
"spin_sleep",
|
|
"streamcatcher",
|
|
"tokio/fs",
|
|
"tokio/io-util",
|
|
"tokio/macros",
|
|
"tokio/net",
|
|
"tokio/process",
|
|
"tokio/rt",
|
|
"tokio/sync",
|
|
"tokio/time",
|
|
"typemap_rev",
|
|
"url",
|
|
"uuid",
|
|
"xsalsa20poly1305",
|
|
]
|
|
rustls = ["async-tungstenite/tokio-rustls"]
|
|
native = ["async-tungstenite/tokio-native-tls"]
|
|
serenity-rustls = ["serenity/rustls_backend", "rustls", "gateway", "serenity-deps"]
|
|
serenity-native = ["serenity/native_tls_backend", "native", "gateway", "serenity-deps"]
|
|
twilight-rustls = ["twilight", "twilight-gateway/rustls", "rustls", "gateway"]
|
|
twilight-native = ["twilight", "twilight-gateway/native", "native", "gateway"]
|
|
twilight = ["twilight-model"]
|
|
simd-zlib = ["twilight-gateway/simd-zlib"]
|
|
stock-zlib = ["twilight-gateway/stock-zlib"]
|
|
serenity-deps = ["async-trait"]
|
|
|
|
youtube-dlc = []
|
|
builtin-queue = []
|
|
|
|
internals = []
|
|
|
|
[[bench]]
|
|
name = "base-mixing"
|
|
path = "benches/base-mixing.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "mixing-task"
|
|
path = "benches/mixing-task.rs"
|
|
required-features = ["internals"]
|
|
harness = false
|
|
|
|
[package.metadata.docs.rs]
|
|
features = ["default", "twilight-rustls", "builtin-queue", "stock-zlib"]
|