From f6a895e1605b275044dbcf8519b5fe7fbbd46cd8 Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Fri, 7 May 2021 22:42:08 +0200 Subject: [PATCH] Update to librespot 0.2.0 and Tokio v1 This also brings some much need async/.await rewrites --- Cargo.lock | 1277 +++++++++++++++++++---------------------- Cargo.toml | 12 +- src/main.rs | 15 +- src/queue.rs | 6 +- src/spotify.rs | 130 ++--- src/spotify_worker.rs | 157 +++-- 6 files changed, 736 insertions(+), 861 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a0492d..d6d2249 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,9 +2,9 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.14.1" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" dependencies = [ "gimli", ] @@ -17,47 +17,45 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.3.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" dependencies = [ "aes-soft", "aesni", - "block-cipher-trait", + "cipher", ] [[package]] name = "aes-ctr" -version = "0.3.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" +checksum = "7729c3cde54d67063be556aeac75a81330d802f0259500ca40cb52967f975763" dependencies = [ "aes-soft", "aesni", + "cipher", "ctr", - "stream-cipher", ] [[package]] name = "aes-soft" -version = "0.3.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" dependencies = [ - "block-cipher-trait", - "byteorder", + "cipher", "opaque-debug", ] [[package]] name = "aesni" -version = "0.6.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" dependencies = [ - "block-cipher-trait", + "cipher", "opaque-debug", - "stream-cipher", ] [[package]] @@ -80,34 +78,23 @@ dependencies = [ "memchr", ] -[[package]] -name = "alga" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2" -dependencies = [ - "approx", - "num-complex 0.2.4", - "num-traits", -] - [[package]] name = "alsa" -version = "0.2.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a0d4ebc8b23041c5de9bc9aee13b4bad844a589479701f31a5934cfe4aeb32" +checksum = "75c4da790adcb2ce5e758c064b4f3ec17a30349f9961d3e5e6c9688b052a9e18" dependencies = [ "alsa-sys", - "bitflags 0.9.1", + "bitflags 1.2.1", "libc", - "nix 0.9.0", + "nix 0.20.0", ] [[package]] name = "alsa-sys" -version = "0.1.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0edcbbf9ef68f15ae1b620f722180b82a98b6f0628d30baa6b8d2a5abc87d58" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" dependencies = [ "libc", "pkg-config", @@ -122,15 +109,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "approx" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3" -dependencies = [ - "num-traits", -] - [[package]] name = "array-macro" version = "1.0.5" @@ -159,16 +137,27 @@ dependencies = [ "fastrand", "futures-lite", "libc", - "log 0.4.14", + "log", "once_cell", "parking", "polling", - "slab 0.4.3", + "slab", "socket2 0.4.0", "waker-fn", "winapi 0.3.9", ] +[[package]] +name = "async-trait" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +dependencies = [ + "proc-macro2 1.0.26", + "quote 1.0.9", + "syn 1.0.72", +] + [[package]] name = "atty" version = "0.2.14" @@ -194,9 +183,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.58" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fb5a785d6b44fd9d6700935608639af1b8356de1e55d5f7c2740f4faa15d82" +checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744" dependencies = [ "addr2line", "cc", @@ -207,16 +196,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -dependencies = [ - "byteorder", - "safemem", -] - [[package]] name = "base64" version = "0.10.1" @@ -251,21 +230,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "bit-set" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bitflags" version = "0.9.1" @@ -297,46 +261,19 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-buffer" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array", -] - -[[package]] -name = "block-cipher-trait" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "generic-array", ] -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - [[package]] name = "bumpalo" version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - [[package]] name = "byteorder" version = "1.4.3" @@ -377,6 +314,15 @@ name = "cc" version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cexpr" @@ -414,6 +360,15 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + [[package]] name = "clang-sys" version = "1.2.0" @@ -471,6 +426,16 @@ dependencies = [ "bitflags 1.2.1", ] +[[package]] +name = "combine" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc4369b5e4c0cddf64ad8981c0111e7df4f7078f4d6ba98fb31f2e17c4c57b7e" +dependencies = [ + "bytes 1.0.1", + "memchr", +] + [[package]] name = "concurrent-queue" version = "1.2.2" @@ -505,7 +470,7 @@ dependencies = [ "cookie", "failure", "idna 0.1.5", - "log 0.4.14", + "log", "publicsuffix", "serde", "serde_json", @@ -526,12 +491,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" -dependencies = [ - "libc", -] +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "core-foundation-sys" @@ -541,9 +503,9 @@ checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" [[package]] name = "coreaudio-rs" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f229761965dad3e9b11081668a6ea00f1def7aa46062321b5ec245b834f6e491" +checksum = "11894b20ebfe1ff903cbdc52259693389eea03b94918a2def2c30c3bf227ad88" dependencies = [ "bitflags 1.2.1", "coreaudio-sys", @@ -560,19 +522,38 @@ dependencies = [ [[package]] name = "cpal" -version = "0.8.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58ae1ed6536b1b233f5e3aeb6997a046ddb4d05e3f61701b58a92eb254a829e" +checksum = "8351ddf2aaa3c583fa388029f8b3d26f3c7035a20911fdd5f2e2ed7ab57dad25" dependencies = [ - "alsa-sys", - "core-foundation-sys 0.5.1", + "alsa", + "core-foundation-sys 0.6.2", "coreaudio-rs", + "jni", + "js-sys", "lazy_static", "libc", + "mach", + "ndk", + "ndk-glue", + "nix 0.20.0", + "oboe", + "parking_lot 0.11.1", "stdweb", + "thiserror", + "web-sys", "winapi 0.3.9", ] +[[package]] +name = "cpufeatures" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec1028182c380cc45a2e2c5ec841134f2dfd0f8f5f0a5bcd68004f81b5efdf4" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.2.1" @@ -653,9 +634,9 @@ dependencies = [ [[package]] name = "crypto-mac" -version = "0.7.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" dependencies = [ "generic-array", "subtle", @@ -663,12 +644,11 @@ dependencies = [ [[package]] name = "ctr" -version = "0.3.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" dependencies = [ - "block-cipher-trait", - "stream-cipher", + "cipher", ] [[package]] @@ -683,7 +663,7 @@ dependencies = [ "cursive_core", "lazy_static", "libc", - "log 0.4.14", + "log", "maplit", "pancurses", "signal-hook", @@ -706,10 +686,10 @@ dependencies = [ "enum-map", "lazy_static", "libc", - "log 0.4.14", + "log", "num", "owning_ref", - "syn 1.0.71", + "syn 1.0.72", "unicode-segmentation", "unicode-width", "wasmer_enumset", @@ -761,7 +741,7 @@ dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", "strsim 0.9.3", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -783,7 +763,7 @@ checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ "darling_core 0.10.2", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -813,7 +793,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -843,9 +823,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ "generic-array", ] @@ -932,7 +912,7 @@ checksum = "e5c450cf304c9e18d45db562025a14fb1ca0f5c769b6f609309f81d4c31de455" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -953,7 +933,7 @@ checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -964,20 +944,11 @@ checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" dependencies = [ "atty", "humantime", - "log 0.4.14", + "log", "regex", "termcolor", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", -] - [[package]] name = "failure" version = "0.1.8" @@ -996,16 +967,10 @@ checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", "synstructure", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fastrand" version = "1.4.1" @@ -1021,7 +986,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c9a4820f0ccc8a7afd67c39a0f1a0f4b07ca1725164271a64939d7aeb9af065" dependencies = [ - "log 0.4.14", + "log", ] [[package]] @@ -1177,7 +1142,7 @@ dependencies = [ "proc-macro-hack", "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -1210,16 +1175,17 @@ dependencies = [ "pin-utils", "proc-macro-hack", "proc-macro-nested", - "slab 0.4.3", + "slab", ] [[package]] name = "generic-array" -version = "0.12.4" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ "typenum", + "version_check", ] [[package]] @@ -1246,9 +1212,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" [[package]] name = "glob" @@ -1268,8 +1234,8 @@ dependencies = [ "futures 0.1.31", "http 0.1.21", "indexmap", - "log 0.4.14", - "slab 0.4.3", + "log", + "slab", "string", "tokio-io", ] @@ -1287,9 +1253,9 @@ dependencies = [ "futures-util", "http 0.2.4", "indexmap", - "slab 0.4.3", + "slab", "tokio 0.2.25", - "tokio-util", + "tokio-util 0.3.1", "tracing", "tracing-futures", ] @@ -1326,9 +1292,9 @@ dependencies = [ [[package]] name = "hmac" -version = "0.7.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ "crypto-mac", "digest", @@ -1399,33 +1365,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "hyper" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7" -dependencies = [ - "base64 0.9.3", - "bytes 0.4.12", - "futures 0.1.31", - "futures-cpupool", - "httparse", - "iovec", - "language-tags", - "log 0.4.14", - "mime", - "net2", - "percent-encoding 1.0.1", - "relay", - "time", - "tokio-core", - "tokio-io", - "tokio-proto", - "tokio-service", - "unicase", - "want 0.0.4", -] - [[package]] name = "hyper" version = "0.12.36" @@ -1441,7 +1380,7 @@ dependencies = [ "httparse", "iovec", "itoa", - "log 0.4.14", + "log", "net2", "rustc_version 0.2.3", "time", @@ -1480,19 +1419,6 @@ dependencies = [ "want 0.3.0", ] -[[package]] -name = "hyper-proxy" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f0925de2747e481e6e477dd212c25e8f745567f02f6182e04d27b97c3fbece" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "hyper 0.11.27", - "tokio-core", - "tokio-io", -] - [[package]] name = "hyper-tls" version = "0.3.2" @@ -1605,6 +1531,35 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +[[package]] +name = "jni" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24967112a1e4301ca5342ea339763613a37592b8a6ce6cf2e4494537c7a42faf" +dependencies = [ + "cesu8", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.50" @@ -1624,12 +1579,6 @@ dependencies = [ "winapi-build", ] -[[package]] -name = "language-tags" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" - [[package]] name = "lazy_static" version = "1.4.0" @@ -1644,13 +1593,13 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lewton" -version = "0.9.4" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" dependencies = [ "byteorder", "ogg", - "smallvec 0.6.14", + "tinyvec", ] [[package]] @@ -1679,118 +1628,156 @@ dependencies = [ ] [[package]] -name = "libm" -version = "0.2.1" +name = "libpulse-binding" +version = "2.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" +checksum = "db951f37898e19a6785208e3a290261e0f1a8e086716be596aaad684882ca8e3" +dependencies = [ + "bitflags 1.2.1", + "libc", + "libpulse-sys", + "num-derive", + "num-traits", + "winapi 0.3.9", +] + +[[package]] +name = "libpulse-simple-binding" +version = "2.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a574975292db859087c3957b9182f7d53278553f06bddaa2099c90e4ac3a0ee0" +dependencies = [ + "libpulse-binding", + "libpulse-simple-sys", + "libpulse-sys", +] + +[[package]] +name = "libpulse-simple-sys" +version = "1.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468cf582b7b022c0d1b266fefc7fc8fa7b1ddcb61214224f2f105c95a9c2d5c1" +dependencies = [ + "libpulse-sys", + "pkg-config", +] [[package]] name = "libpulse-sys" -version = "0.0.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb11b06faf883500c1b625cf4453e6c7737e9df9c7ba01df3f84b22b083e4ac" +checksum = "cf17e9832643c4f320c42b7d78b2c0510f45aa5e823af094413b94e45076ba82" dependencies = [ "libc", + "num-derive", + "num-traits", + "pkg-config", + "winapi 0.3.9", ] [[package]] name = "librespot-audio" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94641641158cd8dcfeadaebf71246d39a84b2658c2054870310baa63ea40f3ce" +checksum = "fa0e89d3e106d80600537eba02c17ea6dd8b3de3f46c99952b813b6f6d6445c0" dependencies = [ "aes-ctr", - "bit-set", "byteorder", - "bytes 0.4.12", - "futures 0.1.31", + "bytes 1.0.1", + "cfg-if 1.0.0", + "futures-util", "lewton", "librespot-core", - "log 0.4.14", - "num-bigint", - "num-traits", + "log", + "ogg", "tempfile", + "tokio 1.5.0", + "zerocopy", ] [[package]] name = "librespot-core" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271eaff0f61152c3c2b1383c783df387215df2f216ffe5dc5e2480decd81bf0a" +checksum = "df3e70dce131f5531c982ca133f04fd1d1dd4208de27291dcd9ab6841c963248" dependencies = [ "aes", - "base64 0.10.1", + "base64 0.13.0", "byteorder", - "bytes 0.4.12", - "error-chain", - "futures 0.1.31", + "bytes 1.0.1", + "form_urlencoded", + "futures-core", + "futures-util", "hmac", + "http 0.2.4", "httparse", - "hyper 0.11.27", - "hyper-proxy", - "lazy_static", "librespot-protocol", - "log 0.4.14", + "log", "num-bigint", "num-integer", "num-traits", + "once_cell", "pbkdf2", + "priority-queue", "protobuf", - "rand 0.7.3", + "rand 0.8.3", "serde", - "serde_derive", "serde_json", "sha-1", "shannon", - "tokio-codec", - "tokio-core", - "tokio-io", - "url 1.7.2", - "uuid", + "thiserror", + "tokio 1.5.0", + "tokio-stream", + "tokio-util 0.6.6", + "url 2.2.2", + "uuid 0.8.2", "vergen", ] [[package]] name = "librespot-metadata" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7643d10e46b22c1cee0be11c431f9179ec6b1d3348cebe7363cc2b75e1e5ba8d" +checksum = "84157ce5d901dbdcaef17ed305deba5d87171725347673a1b632a334d910af47" dependencies = [ + "async-trait", "byteorder", - "futures 0.1.31", "librespot-core", "librespot-protocol", - "linear-map", - "log 0.4.14", + "log", "protobuf", ] [[package]] name = "librespot-playback" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1249ca618becf5152c694c185b1bf654ac94c757984a9675289b1f93e4fcecd6" +checksum = "59ca3df986a7e1a43008717660803e159177e86a589d484a0fc01fccd7967ad6" dependencies = [ "alsa", "byteorder", "cpal", - "futures 0.1.31", - "libc", - "libpulse-sys", + "futures-executor", + "futures-util", + "libpulse-binding", + "libpulse-simple-binding", "librespot-audio", "librespot-core", "librespot-metadata", - "log 0.4.14", + "log", "portaudio-rs", "rodio", "shell-words", + "thiserror", + "tokio 1.5.0", + "zerocopy", ] [[package]] name = "librespot-protocol" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d42302b49ef369d44a0dfe4fb9e8803e7500f0dda7ea95413457664f1eca0fd9" +checksum = "1c753be4c3bd0f02b30c00d5d8547f16d557654cb737e70505aec6aa9990435d" dependencies = [ "glob", "protobuf", @@ -1798,12 +1785,6 @@ dependencies = [ "protobuf-codegen-pure", ] -[[package]] -name = "linear-map" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" - [[package]] name = "lock_api" version = "0.3.4" @@ -1814,12 +1795,12 @@ dependencies = [ ] [[package]] -name = "log" -version = "0.3.9" +name = "lock_api" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" dependencies = [ - "log 0.4.14", + "scopeguard", ] [[package]] @@ -1843,6 +1824,15 @@ dependencies = [ "objc-foundation", ] +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + [[package]] name = "malloc_buf" version = "0.0.6" @@ -1864,15 +1854,6 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -[[package]] -name = "matrixmultiply" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1" -dependencies = [ - "rawpointer", -] - [[package]] name = "maybe-uninit" version = "2.0.0" @@ -1932,22 +1913,24 @@ dependencies = [ "iovec", "kernel32-sys", "libc", - "log 0.4.14", - "miow", + "log", + "miow 0.2.2", "net2", - "slab 0.4.3", + "slab", "winapi 0.2.8", ] [[package]] -name = "mio-uds" -version = "0.6.8" +name = "mio" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" dependencies = [ - "iovec", "libc", - "mio", + "log", + "miow 0.3.7", + "ntapi", + "winapi 0.3.9", ] [[package]] @@ -1963,20 +1946,12 @@ dependencies = [ ] [[package]] -name = "nalgebra" -version = "0.18.1" +name = "miow" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "alga", - "approx", - "generic-array", - "matrixmultiply", - "num-complex 0.2.4", - "num-rational 0.2.4", - "num-traits", - "rand 0.6.5", - "typenum", + "winapi 0.3.9", ] [[package]] @@ -1987,7 +1962,7 @@ checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" dependencies = [ "lazy_static", "libc", - "log 0.4.14", + "log", "openssl", "openssl-probe", "openssl-sys", @@ -2027,7 +2002,7 @@ dependencies = [ "librespot-core", "librespot-playback", "librespot-protocol", - "log 0.4.14", + "log", "notify-rust", "platform-dirs", "rand 0.8.3", @@ -2039,11 +2014,11 @@ dependencies = [ "serde_json", "strum 0.20.0", "strum_macros 0.20.1", - "tokio-core", - "tokio-timer", + "tokio 1.5.0", + "tokio-stream", "toml", "unicode-width", - "url 1.7.2", + "url 2.2.2", "webbrowser", ] @@ -2058,6 +2033,51 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "ndk" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab" +dependencies = [ + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-glue" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5caf0c24d51ac1c905c27d4eda4fa0635bbe0de596b8f79235e0b17a4d29385" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" +dependencies = [ + "darling 0.10.2", + "proc-macro-crate", + "proc-macro2 1.0.26", + "quote 1.0.9", + "syn 1.0.72", +] + +[[package]] +name = "ndk-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" + [[package]] name = "net2" version = "0.2.37" @@ -2069,18 +2089,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "nix" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2c5afeb0198ec7be8569d666644b574345aad2e95a53baf3a532da3e0f3fb32" -dependencies = [ - "bitflags 0.9.1", - "cfg-if 0.1.10", - "libc", - "void", -] - [[package]] name = "nix" version = "0.17.0" @@ -2094,6 +2102,18 @@ dependencies = [ "void", ] +[[package]] +name = "nix" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +dependencies = [ + "bitflags 1.2.1", + "cc", + "cfg-if 1.0.0", + "libc", +] + [[package]] name = "nom" version = "5.1.2" @@ -2106,9 +2126,9 @@ dependencies = [ [[package]] name = "notify-rust" -version = "4.4.1" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec68da15a9508696cd0d38cc81c6a00a465daff743f05d9f4fd7c8f7c11f4e5" +checksum = "224fc7e85673ef81a74c42ddb35aef3f4326877ac63a08273b398c9efeac6720" dependencies = [ "mac-notification-sys", "serde", @@ -2118,38 +2138,38 @@ dependencies = [ "zvariant_derive", ] +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "num" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f" dependencies = [ - "num-complex 0.3.1", + "num-complex", "num-integer", "num-iter", - "num-rational 0.3.2", + "num-rational", "num-traits", ] [[package]] name = "num-bigint" -version = "0.2.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512" dependencies = [ "autocfg 1.0.1", "num-integer", "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" -dependencies = [ - "autocfg 1.0.1", - "num-traits", + "rand 0.8.3", ] [[package]] @@ -2161,6 +2181,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.26", + "quote 1.0.9", + "syn 1.0.72", +] + [[package]] name = "num-integer" version = "0.1.44" @@ -2182,17 +2213,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg 1.0.1", - "num-integer", - "num-traits", -] - [[package]] name = "num-rational" version = "0.3.2" @@ -2211,7 +2231,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg 1.0.1", - "libm", ] [[package]] @@ -2224,6 +2243,28 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066" +dependencies = [ + "derivative", + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.26", + "quote 1.0.9", + "syn 1.0.72", +] + [[package]] name = "numtoa" version = "0.1.0" @@ -2261,15 +2302,38 @@ dependencies = [ [[package]] name = "object" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" +checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" + +[[package]] +name = "oboe" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfb2390bddb9546c0f7448fd1d2abdd39e6075206f960991eb28c7fa7f126c4" +dependencies = [ + "jni", + "ndk", + "ndk-glue", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe069264d082fc820dfa172f79be3f2e088ecfece9b1c47b0c9fd838d2bef103" +dependencies = [ + "cc", +] [[package]] name = "ogg" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e571c3517af9e1729d4c63571a27edd660ade0667973bfc74a67c660c2b651" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" dependencies = [ "byteorder", ] @@ -2282,9 +2346,9 @@ checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" [[package]] name = "opaque-debug" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" @@ -2308,9 +2372,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.62" +version = "0.9.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52160d45fa2e7608d504b7c3a3355afed615e6d8b627a74458634ba21b69bd" +checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" dependencies = [ "autocfg 1.0.1", "cc", @@ -2335,7 +2399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3058bc37c433096b2ac7afef1c5cdfae49ede0a4ffec3dfc1df1df0959d0ff0" dependencies = [ "libc", - "log 0.4.14", + "log", "ncurses", "pdcurses-sys", "winreg 0.5.1", @@ -2353,11 +2417,22 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "lock_api", - "parking_lot_core", + "lock_api 0.3.4", + "parking_lot_core 0.6.2", "rustc_version 0.2.3", ] +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api 0.4.4", + "parking_lot_core 0.8.3", +] + [[package]] name = "parking_lot_core" version = "0.6.2" @@ -2374,18 +2449,27 @@ dependencies = [ ] [[package]] -name = "pbkdf2" -version = "0.3.0" +name = "parking_lot_core" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" +checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.8", + "smallvec 1.6.1", + "winapi 0.3.9", +] + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "base64 0.9.3", - "byteorder", "crypto-mac", "hmac", - "rand 0.5.6", - "sha2", - "subtle", ] [[package]] @@ -2442,7 +2526,7 @@ checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -2486,7 +2570,7 @@ checksum = "4fc12d774e799ee9ebae13f4076ca003b40d18a11ac0f3641e6f899618580b7b" dependencies = [ "cfg-if 1.0.0", "libc", - "log 0.4.14", + "log", "wepoll-sys", "winapi 0.3.9", ] @@ -2518,6 +2602,16 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +[[package]] +name = "priority-queue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1340009a04e81f656a4e45e295f0b1191c81de424bf940c865e33577a8e223" +dependencies = [ + "autocfg 1.0.1", + "indexmap", +] + [[package]] name = "proc-macro-crate" version = "0.1.5" @@ -2589,7 +2683,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95b4ce31ff0a27d93c8de1849cf58162283752f065a90d508f1105fa6c9a213f" dependencies = [ "idna 0.2.3", - "url 2.2.1", + "url 2.2.2", ] [[package]] @@ -2622,42 +2716,6 @@ dependencies = [ "proc-macro2 1.0.26", ] -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "winapi 0.3.9", -] - [[package]] name = "rand" version = "0.6.5" @@ -2677,19 +2735,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", -] - [[package]] name = "rand" version = "0.8.3" @@ -2712,16 +2757,6 @@ dependencies = [ "rand_core 0.3.1", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.3.0" @@ -2747,15 +2782,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - [[package]] name = "rand_core" version = "0.6.2" @@ -2774,15 +2800,6 @@ dependencies = [ "rand_core 0.3.1", ] -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "rand_hc" version = "0.3.0" @@ -2851,12 +2868,6 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d13a3485349981c90c79112a11222c3e6e75de1d52b87a7525b3bf5361420f" -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - [[package]] name = "rdrand" version = "0.4.0" @@ -2874,9 +2885,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" dependencies = [ "bitflags 1.2.1", ] @@ -2887,7 +2898,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f" dependencies = [ - "redox_syscall 0.2.7", + "redox_syscall 0.2.8", ] [[package]] @@ -2908,14 +2919,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ "getrandom 0.2.2", - "redox_syscall 0.2.7", + "redox_syscall 0.2.8", ] [[package]] name = "regex" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "aho-corasick", "memchr", @@ -2928,15 +2939,6 @@ version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" -[[package]] -name = "relay" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a" -dependencies = [ - "futures 0.1.31", -] - [[package]] name = "remove_dir_all" version = "0.5.3" @@ -2962,7 +2964,7 @@ dependencies = [ "http 0.1.21", "hyper 0.12.36", "hyper-tls 0.3.2", - "log 0.4.14", + "log", "mime", "mime_guess", "native-tls", @@ -2976,7 +2978,7 @@ dependencies = [ "tokio-threadpool", "tokio-timer", "url 1.7.2", - "uuid", + "uuid 0.7.4", "winreg 0.6.2", ] @@ -2998,7 +3000,7 @@ dependencies = [ "ipnet", "js-sys", "lazy_static", - "log 0.4.14", + "log", "mime", "mime_guess", "native-tls", @@ -3010,7 +3012,7 @@ dependencies = [ "tokio 0.2.25", "tokio-socks", "tokio-tls", - "url 2.2.1", + "url 2.2.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -3019,13 +3021,11 @@ dependencies = [ [[package]] name = "rodio" -version = "0.9.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0f961b254e66d147a7b550c78b01308934c97d807a34b417fd0f5a0a0f3a2d" +checksum = "b65c2eda643191f6d1bb12ea323a9db8d9ba95374e9be3780b5a9fb5cfb8520f" dependencies = [ "cpal", - "lazy_static", - "nalgebra", ] [[package]] @@ -3042,7 +3042,7 @@ dependencies = [ "failure", "itertools", "lazy_static", - "log 0.4.14", + "log", "percent-encoding 1.0.1", "rand 0.6.5", "random", @@ -3068,9 +3068,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" +checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" [[package]] name = "rustc-hash" @@ -3109,10 +3109,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] -name = "safemem" -version = "0.3.3" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] [[package]] name = "schannel" @@ -3124,12 +3127,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "scoped-tls" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" - [[package]] name = "scoped-tls" version = "1.0.0" @@ -3225,7 +3222,7 @@ checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -3247,7 +3244,7 @@ checksum = "2dc6b7951b17b051f3210b063f12cc17320e2fe30ae05b0fe2a3abb068551c76" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -3276,25 +3273,14 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.8.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +checksum = "b659df5fc3ce22274daac600ffb845300bd2125bcfaec047823075afdab81c00" dependencies = [ "block-buffer", + "cfg-if 1.0.0", + "cpufeatures", "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", "opaque-debug", ] @@ -3309,9 +3295,9 @@ dependencies = [ [[package]] name = "shell-words" -version = "0.1.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a" +checksum = "b6fa3938c99da4914afedd13bf3d79bcb6c277d1b2c398d23257a304d9e1b074" [[package]] name = "shlex" @@ -3338,24 +3324,12 @@ dependencies = [ "libc", ] -[[package]] -name = "slab" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" - [[package]] name = "slab" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" -[[package]] -name = "smallvec" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013" - [[package]] name = "smallvec" version = "0.6.14" @@ -3365,6 +3339,12 @@ dependencies = [ "maybe-uninit", ] +[[package]] +name = "smallvec" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" + [[package]] name = "socket2" version = "0.3.19" @@ -3398,15 +3378,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" -[[package]] -name = "stream-cipher" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" -dependencies = [ - "generic-array", -] - [[package]] name = "string" version = "0.2.1" @@ -3465,14 +3436,14 @@ dependencies = [ "heck", "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] name = "subtle" -version = "1.0.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" [[package]] name = "syn" @@ -3498,9 +3469,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.71" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", @@ -3524,16 +3495,10 @@ checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", "unicode-xid 0.2.2", ] -[[package]] -name = "take" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" - [[package]] name = "tempfile" version = "3.2.0" @@ -3543,7 +3508,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.3", - "redox_syscall 0.2.7", + "redox_syscall 0.2.8", "remove_dir_all", "winapi 0.3.9", ] @@ -3575,7 +3540,7 @@ checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e" dependencies = [ "libc", "numtoa", - "redox_syscall 0.2.7", + "redox_syscall 0.2.8", "redox_termios", ] @@ -3605,7 +3570,7 @@ checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -3641,20 +3606,15 @@ checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ "bytes 0.4.12", "futures 0.1.31", - "mio", + "mio 0.6.23", "num_cpus", - "tokio-codec", "tokio-current-thread", "tokio-executor", - "tokio-fs", "tokio-io", "tokio-reactor", - "tokio-sync", "tokio-tcp", "tokio-threadpool", "tokio-timer", - "tokio-udp", - "tokio-uds", ] [[package]] @@ -3669,10 +3629,26 @@ dependencies = [ "iovec", "lazy_static", "memchr", - "mio", + "mio 0.6.23", "num_cpus", "pin-project-lite 0.1.12", - "slab 0.4.3", + "slab", +] + +[[package]] +name = "tokio" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" +dependencies = [ + "autocfg 1.0.1", + "bytes 1.0.1", + "libc", + "memchr", + "mio 0.7.11", + "num_cpus", + "pin-project-lite 0.2.6", + "tokio-macros", ] [[package]] @@ -3686,36 +3662,6 @@ dependencies = [ "futures 0.1.31", ] -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] - -[[package]] -name = "tokio-core" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87b1395334443abca552f63d4f61d0486f12377c2ba8b368e523f89e828cffd4" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "log 0.4.14", - "mio", - "scoped-tls 0.1.2", - "tokio 0.1.22", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-timer", -] - [[package]] name = "tokio-current-thread" version = "0.1.7" @@ -3736,17 +3682,6 @@ dependencies = [ "futures 0.1.31", ] -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", -] - [[package]] name = "tokio-io" version = "0.1.13" @@ -3755,25 +3690,18 @@ checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ "bytes 0.4.12", "futures 0.1.31", - "log 0.4.14", + "log", ] [[package]] -name = "tokio-proto" -version = "0.1.1" +name = "tokio-macros" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389" +checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57" dependencies = [ - "futures 0.1.31", - "log 0.3.9", - "net2", - "rand 0.3.23", - "slab 0.3.0", - "smallvec 0.2.1", - "take", - "tokio-core", - "tokio-io", - "tokio-service", + "proc-macro2 1.0.26", + "quote 1.0.9", + "syn 1.0.72", ] [[package]] @@ -3785,25 +3713,16 @@ dependencies = [ "crossbeam-utils 0.7.2", "futures 0.1.31", "lazy_static", - "log 0.4.14", - "mio", + "log", + "mio 0.6.23", "num_cpus", - "parking_lot", - "slab 0.4.3", + "parking_lot 0.9.0", + "slab", "tokio-executor", "tokio-io", "tokio-sync", ] -[[package]] -name = "tokio-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -dependencies = [ - "futures 0.1.31", -] - [[package]] name = "tokio-socks" version = "0.3.0" @@ -3817,6 +3736,17 @@ dependencies = [ "tokio 0.2.25", ] +[[package]] +name = "tokio-stream" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e177a5d8c3bf36de9ebe6d58537d8879e964332f93fb3339e43f618c81361af0" +dependencies = [ + "futures-core", + "pin-project-lite 0.2.6", + "tokio 1.5.0", +] + [[package]] name = "tokio-sync" version = "0.1.8" @@ -3836,7 +3766,7 @@ dependencies = [ "bytes 0.4.12", "futures 0.1.31", "iovec", - "mio", + "mio 0.6.23", "tokio-io", "tokio-reactor", ] @@ -3852,9 +3782,9 @@ dependencies = [ "crossbeam-utils 0.7.2", "futures 0.1.31", "lazy_static", - "log 0.4.14", + "log", "num_cpus", - "slab 0.4.3", + "slab", "tokio-executor", ] @@ -3866,7 +3796,7 @@ checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" dependencies = [ "crossbeam-utils 0.7.2", "futures 0.1.31", - "slab 0.4.3", + "slab", "tokio-executor", ] @@ -3880,39 +3810,6 @@ dependencies = [ "tokio 0.2.25", ] -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.14", - "mio", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log 0.4.14", - "mio", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - [[package]] name = "tokio-util" version = "0.3.1" @@ -3922,11 +3819,25 @@ dependencies = [ "bytes 0.5.6", "futures-core", "futures-sink", - "log 0.4.14", + "log", "pin-project-lite 0.1.12", "tokio 0.2.25", ] +[[package]] +name = "tokio-util" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940a12c99365c31ea8dd9ba04ec1be183ffe4920102bb7122c2f515437601e8e" +dependencies = [ + "bytes 1.0.1", + "futures-core", + "futures-sink", + "log", + "pin-project-lite 0.2.6", + "tokio 1.5.0", +] + [[package]] name = "toml" version = "0.5.8" @@ -3949,7 +3860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ "cfg-if 1.0.0", - "log 0.4.14", + "log", "pin-project-lite 0.2.6", "tracing-core", ] @@ -3973,12 +3884,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "try-lock" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2" - [[package]] name = "try-lock" version = "0.2.3" @@ -4076,9 +3981,9 @@ dependencies = [ [[package]] name = "url" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ "form_urlencoded", "idna 0.2.3", @@ -4095,6 +4000,15 @@ dependencies = [ "rand 0.6.5", ] +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.2", +] + [[package]] name = "vcpkg" version = "0.2.12" @@ -4137,14 +4051,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] -name = "want" -version = "0.0.4" +name = "walkdir" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ - "futures 0.1.31", - "log 0.4.14", - "try-lock 0.1.0", + "same-file", + "winapi 0.3.9", + "winapi-util", ] [[package]] @@ -4154,8 +4068,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ "futures 0.1.31", - "log 0.4.14", - "try-lock 0.2.3", + "log", + "try-lock", ] [[package]] @@ -4164,8 +4078,8 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" dependencies = [ - "log 0.4.14", - "try-lock 0.2.3", + "log", + "try-lock", ] [[package]] @@ -4200,10 +4114,10 @@ checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" dependencies = [ "bumpalo", "lazy_static", - "log 0.4.14", + "log", "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", "wasm-bindgen-shared", ] @@ -4237,7 +4151,7 @@ checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4267,7 +4181,7 @@ dependencies = [ "darling 0.10.2", "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] [[package]] @@ -4424,7 +4338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e917a3f24142e9ff8be2414e36c649d47d6cc2ba81f16201cdef96e533e02de" dependencies = [ "libc", - "log 0.4.14", + "log", ] [[package]] @@ -4458,7 +4372,7 @@ dependencies = [ "nix 0.17.0", "once_cell", "polling", - "scoped-tls 1.0.0", + "scoped-tls", "serde", "serde_repr", "zbus_macros", @@ -4474,7 +4388,28 @@ dependencies = [ "proc-macro-crate", "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", +] + +[[package]] +name = "zerocopy" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6580539ad917b7c026220c4b3f2c08d52ce54d6ce0dc491e66002e35388fab46" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d498dbd1fd7beb83c86709ae1c33ca50942889473473d287d56ce4770a18edfb" +dependencies = [ + "proc-macro2 1.0.26", + "syn 1.0.72", + "synstructure", ] [[package]] @@ -4498,5 +4433,5 @@ dependencies = [ "proc-macro-crate", "proc-macro2 1.0.26", "quote 1.0.9", - "syn 1.0.71", + "syn 1.0.72", ] diff --git a/Cargo.toml b/Cargo.toml index 045ef90..4c5fa7d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,24 +24,24 @@ fern = "0.6" futures = { version = "0.3", features = ["compat"] } futures_01 = { version = "0.1", package = "futures" } lazy_static = "1.3.0" -librespot-core = "0.1.6" -librespot-playback = "0.1.6" -librespot-protocol = "0.1.6" +librespot-core = "0.2.0" +librespot-playback = "0.2.0" +librespot-protocol = "0.2.0" log = "0.4.13" notify-rust = { version = "4", optional = true } rspotify = { version = "0.10.0", features = ["blocking"] } serde = "1.0" serde_json = "1.0" +tokio = { version = "1", features = ["rt-multi-thread", "sync", "time"] } +tokio-stream = "0.1.5" toml = "0.5" -tokio-core = "0.1" -tokio-timer = "0.2" unicode-width = "0.1.8" dbus = { version = "0.9.2", optional = true } dbus-tree = { version = "0.9.0", optional = true } rand = "0.8" webbrowser = "0.5" clipboard = { version = "0.5", optional = true } -url = "1.7" +url = "2.2" strum = "0.20.0" strum_macros = "0.20.1" regex = "1" diff --git a/src/main.rs b/src/main.rs index 0666fa8..b637a6e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -95,7 +95,8 @@ struct UserDataInner { pub cmd: CommandManager, } -fn main() { +#[tokio::main] +async fn main() { let backends = { let backends: Vec<&str> = audio_backend::BACKENDS.iter().map(|b| b.0).collect(); format!("Audio backends: {}", backends.join(", ")) @@ -139,7 +140,12 @@ fn main() { // otherwise the error message will not be seen by a user let cfg: Arc = Arc::new(Config::new()); - let cache = Cache::new(config::cache_path("librespot"), true); + let cache = Cache::new( + Some(config::cache_path("librespot")), + Some(config::cache_path("librespot").join("files")), + None, + ) + .expect("Could not create librespot cache"); let mut credentials = { let cached_credentials = cache.credentials(); match cached_credentials { @@ -152,10 +158,7 @@ fn main() { }; while let Err(error) = spotify::Spotify::test_credentials(credentials.clone()) { - let error_msg = match error.get_ref() { - Some(inner) => inner.to_string(), - None => error.to_string(), - }; + let error_msg = format!("{}", error); credentials = credentials_prompt(Some(error_msg)); } diff --git a/src/queue.rs b/src/queue.rs index bec13b0..867eb34 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -103,10 +103,8 @@ impl Queue { } pub fn get_current(&self) -> Option { - match self.get_current_index() { - Some(index) => Some(self.queue.read().unwrap()[index].clone()), - None => None, - } + self.get_current_index() + .map(|index| self.queue.read().unwrap()[index].clone()) } pub fn get_current_index(&self) -> Option { diff --git a/src/spotify.rs b/src/spotify.rs index c279dd5..051ad52 100644 --- a/src/spotify.rs +++ b/src/spotify.rs @@ -1,9 +1,8 @@ use librespot_core::authentication::Credentials; use librespot_core::cache::Cache; use librespot_core::config::SessionConfig; -use librespot_core::keymaster::Token; -use librespot_core::mercury::MercuryError; use librespot_core::session::Session; +use librespot_core::session::SessionError; use librespot_playback::config::PlayerConfig; use log::{debug, error, info}; @@ -26,22 +25,16 @@ use serde_json::{json, Map}; use failure::Error; -use futures_01::future::Future as v01_Future; - -use futures::channel::mpsc; use futures::channel::oneshot; -use futures::compat::Future01CompatExt; -use futures::Future; +use tokio::sync::mpsc; -use tokio_core::reactor::Core; use url::Url; -use std::pin::Pin; +use std::env; use std::str::FromStr; use std::sync::{Arc, RwLock}; use std::thread; use std::time::{Duration, SystemTime}; -use std::{env, io}; use crate::artist::Artist; use crate::config; @@ -117,7 +110,7 @@ impl Spotify { } pub fn start_worker(&self, user_tx: Option>) { - let (tx, rx) = mpsc::unbounded(); + let (tx, rx) = mpsc::unbounded_channel(); *self .channel .write() @@ -127,15 +120,9 @@ impl Spotify { let events = self.events.clone(); let volume = self.volume(); let credentials = self.credentials.clone(); - thread::spawn(move || { - Self::worker( - events, - Box::pin(rx), - cfg.clone(), - credentials, - user_tx, - volume, - ) + let handle = tokio::runtime::Handle::current(); + handle.spawn(async move { + Self::worker(events, rx, cfg.clone(), credentials, user_tx, volume).await }); } @@ -155,72 +142,37 @@ impl Spotify { session_config } - pub fn test_credentials(credentials: Credentials) -> Result { - let jh = thread::spawn(move || { - let mut core = Core::new().unwrap(); - let config = Self::session_config(); - let handle = core.handle(); - - core.run(Session::connect(config, credentials, None, handle)) - }); - match jh.join() { - Ok(session) => session, - Err(e) => Err(io::Error::new( - io::ErrorKind::Other, - e.downcast_ref::() - .unwrap_or(&"N/A".to_string()) - .to_string(), - )), - } + pub fn test_credentials(credentials: Credentials) -> Result { + let config = Self::session_config(); + // let rt = Runtime::new().unwrap(); + let handle = tokio::runtime::Handle::current(); + let jh = handle.spawn(async { Session::connect(config, credentials, None).await }); + futures::executor::block_on(jh).unwrap() } - fn create_session(core: &mut Core, cfg: &config::Config, credentials: Credentials) -> Session { + async fn create_session( + cfg: &config::Config, + credentials: Credentials, + ) -> Result { let session_config = Self::session_config(); + let audio_cache_path = match cfg.values().audio_cache.unwrap_or(true) { + true => Some(config::cache_path("librespot").join("files")), + false => None, + }; let cache = Cache::new( - config::cache_path("librespot"), - cfg.values().audio_cache.unwrap_or(true), - ); - let handle = core.handle(); + Some(config::cache_path("librespot")), + audio_cache_path, + None, + ) + .expect("Could not create cache"); debug!("opening spotify session"); println!("Connecting to Spotify.."); - core.run(Session::connect( - session_config, - credentials, - Some(cache), - handle, - )) - .expect("could not open spotify session") + Session::connect(session_config, credentials, Some(cache)).await } - pub(crate) fn get_token( - session: &Session, - sender: oneshot::Sender, - ) -> Pin>>> { - let client_id = config::CLIENT_ID; - let scopes = "user-read-private,playlist-read-private,playlist-read-collaborative,playlist-modify-public,playlist-modify-private,user-follow-modify,user-follow-read,user-library-read,user-library-modify,user-top-read,user-read-recently-played"; - let url = format!( - "hm://keymaster/token/authenticated?client_id={}&scope={}", - client_id, scopes - ); - Box::pin( - session - .mercury() - .get(url) - .map(move |response| { - let data = response.payload.first().expect("Empty payload"); - let data = String::from_utf8(data.clone()).unwrap(); - let token: Token = serde_json::from_str(&data).unwrap(); - info!("new token received: {:?}", token); - token - }) - .map(|token| sender.send(token).unwrap()) - .compat(), - ) - } - - fn worker( + async fn worker( events: EventManager, - commands: Pin>>, + commands: mpsc::UnboundedReceiver, cfg: Arc, credentials: Credentials, user_tx: Option>, @@ -237,11 +189,12 @@ impl Spotify { bitrate: bitrate.unwrap_or(Bitrate::Bitrate320), normalisation: cfg.values().volnorm.unwrap_or(false), normalisation_pregain: cfg.values().volnorm_pregain.unwrap_or(0.0), + ..Default::default() }; - let mut core = Core::new().unwrap(); - - let session = Self::create_session(&mut core, &cfg, credentials); + let session = Self::create_session(&cfg, credentials) + .await + .expect("Could not create session"); user_tx.map(|tx| tx.send(session.username())); let create_mixer = librespot_playback::mixer::find(Some("softvol".to_owned())) @@ -250,14 +203,15 @@ impl Spotify { mixer.set_volume(volume); let backend = audio_backend::find(cfg.values().backend.clone()).unwrap(); + let audio_format: librespot_playback::config::AudioFormat = Default::default(); let (player, player_events) = Player::new( player_config, session.clone(), mixer.get_audio_filter(), - move || (backend)(cfg.values().backend_device.clone()), + move || (backend)(cfg.values().backend_device.clone(), audio_format), ); - let worker = Worker::new( + let mut worker = Worker::new( events.clone(), player_events, commands, @@ -266,10 +220,10 @@ impl Spotify { mixer, ); debug!("worker thread ready."); - if core.run(futures::compat::Compat::new(worker)).is_err() { - error!("worker thread died, requesting restart"); - events.send(Event::SessionDied) - } + worker.run_loop().await; + + error!("worker thread died, requesting restart"); + events.send(Event::SessionDied) } pub fn get_current_status(&self) -> PlayerEvent { @@ -789,9 +743,7 @@ impl Spotify { fn send_worker(&self, cmd: WorkerCommand) { let channel = self.channel.read().expect("can't readlock worker channel"); match channel.as_ref() { - Some(channel) => channel - .unbounded_send(cmd) - .expect("can't send message to worker"), + Some(channel) => channel.send(cmd).expect("can't send message to worker"), None => error!("no channel to worker available"), } } diff --git a/src/spotify_worker.rs b/src/spotify_worker.rs index e6c8021..80cd2a5 100644 --- a/src/spotify_worker.rs +++ b/src/spotify_worker.rs @@ -1,16 +1,11 @@ +use crate::config; use crate::events::{Event, EventManager}; use crate::playable::Playable; use crate::queue::QueueEvent; -use crate::spotify::{PlayerEvent, Spotify}; -use futures::channel::{mpsc, oneshot}; -use futures::compat::Stream01CompatExt; -use futures::task::{Context, Poll}; -use futures::{Future, Stream}; -use futures_01::stream::Stream as v01_Stream; -use futures_01::sync::mpsc::UnboundedReceiver; -use futures_01::Async as v01_Async; +use crate::spotify::PlayerEvent; +use futures::channel::oneshot; +use futures::{Future, FutureExt}; use librespot_core::keymaster::Token; -use librespot_core::mercury::MercuryError; use librespot_core::session::Session; use librespot_core::spotify_id::{SpotifyAudioType, SpotifyId}; use librespot_playback::mixer::Mixer; @@ -18,7 +13,12 @@ use librespot_playback::player::{Player, PlayerEvent as LibrespotPlayerEvent}; use log::{debug, error, info, warn}; use std::time::Duration; use std::{pin::Pin, time::SystemTime}; +use tokio::sync::mpsc; +use tokio::time; +use tokio_stream::wrappers::UnboundedReceiverStream; +use tokio_stream::StreamExt; +#[derive(Debug)] pub(crate) enum WorkerCommand { Load(Playable, bool, u32), Play, @@ -33,12 +33,11 @@ pub(crate) enum WorkerCommand { pub struct Worker { events: EventManager, - player_events: UnboundedReceiver, - commands: Pin>>, + player_events: UnboundedReceiverStream, + commands: UnboundedReceiverStream, session: Session, player: Player, - refresh_task: Pin>>>, - token_task: Pin>>>, + token_task: Pin + Send>>, active: bool, mixer: Box, } @@ -46,19 +45,18 @@ pub struct Worker { impl Worker { pub(crate) fn new( events: EventManager, - player_events: UnboundedReceiver, - commands: Pin>>, + player_events: mpsc::UnboundedReceiver, + commands: mpsc::UnboundedReceiver, session: Session, player: Player, mixer: Box, ) -> Worker { Worker { events, - player_events, - commands, + player_events: UnboundedReceiverStream::new(player_events), + commands: UnboundedReceiverStream::new(commands), player, session, - refresh_task: Box::pin(futures::stream::empty()), token_task: Box::pin(futures::future::pending()), active: false, mixer, @@ -67,33 +65,43 @@ impl Worker { } impl Worker { - fn create_refresh(&self) -> Pin>>> { - let ev = self.events.clone(); - let future = - tokio_timer::Interval::new_interval(Duration::from_millis(400)).map(move |_| { - ev.trigger(); - }); - Box::pin(future.compat()) + fn get_token( + &self, + sender: oneshot::Sender, + ) -> Pin + Send>> { + let client_id = config::CLIENT_ID; + let scopes = "user-read-private,playlist-read-private,playlist-read-collaborative,playlist-modify-public,playlist-modify-private,user-follow-modify,user-follow-read,user-library-read,user-library-modify,user-top-read,user-read-recently-played"; + let url = format!( + "hm://keymaster/token/authenticated?client_id={}&scope={}", + client_id, scopes + ); + Box::pin( + self.session + .mercury() + .get(url) + .map(move |response| { + let payload = response + .as_ref() + .unwrap() + .payload + .first() + .expect("Empty payload"); + let data = String::from_utf8(payload.clone()).unwrap(); + let token: Token = serde_json::from_str(&data).unwrap(); + info!("new token received: {:?}", token); + token + }) + .map(|token| sender.send(token).unwrap()), + ) } -} -impl futures::Future for Worker { - type Output = Result<(), ()>; + pub async fn run_loop(&mut self) { + let mut ui_refresh = time::interval(Duration::from_millis(400)); - fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> futures::task::Poll { loop { - let mut progress = false; - - if self.session.is_invalid() { - self.events.send(Event::Player(PlayerEvent::Stopped)); - return Poll::Ready(Result::Err(())); - } - - if let Poll::Ready(Some(cmd)) = self.commands.as_mut().poll_next(cx) { - progress = true; - debug!("message received!"); - match cmd { - WorkerCommand::Load(playable, start_playing, position_ms) => { + tokio::select! { + cmd = self.commands.next() => match cmd { + Some(WorkerCommand::Load(playable, start_playing, position_ms)) => { match SpotifyId::from_uri(&playable.uri()) { Ok(id) => { info!("player loading track: {:?}", id); @@ -110,46 +118,37 @@ impl futures::Future for Worker { } } } - WorkerCommand::Play => { + Some(WorkerCommand::Play) => { self.player.play(); } - WorkerCommand::Pause => { + Some(WorkerCommand::Pause) => { self.player.pause(); } - WorkerCommand::Stop => { + Some(WorkerCommand::Stop) => { self.player.stop(); } - WorkerCommand::Seek(pos) => { + Some(WorkerCommand::Seek(pos)) => { self.player.seek(pos); } - WorkerCommand::SetVolume(volume) => { + Some(WorkerCommand::SetVolume(volume)) => { self.mixer.set_volume(volume); } - WorkerCommand::RequestToken(sender) => { - self.token_task = Spotify::get_token(&self.session, sender); - progress = true; + Some(WorkerCommand::RequestToken(sender)) => { + self.token_task = self.get_token(sender); } - WorkerCommand::Preload(playable) => { + Some(WorkerCommand::Preload(playable)) => { if let Ok(id) = SpotifyId::from_uri(&playable.uri()) { debug!("Preloading {:?}", id); self.player.preload(id); } } - WorkerCommand::Shutdown => { + Some(WorkerCommand::Shutdown) => { self.player.stop(); self.session.shutdown(); } - } - } - - if let Ok(v01_Async::Ready(Some(event))) = self.player_events.poll() { - debug!("librespot player event: {:?}", event); - match event { - LibrespotPlayerEvent::Started { .. } - | LibrespotPlayerEvent::Loading { .. } - | LibrespotPlayerEvent::Changed { .. } => { - progress = true; - } + None => info!("empty stream") + }, + event = self.player_events.next() => match event.unwrap() { LibrespotPlayerEvent::Playing { play_request_id: _, track_id: _, @@ -160,7 +159,6 @@ impl futures::Future for Worker { let playback_start = SystemTime::now() - position; self.events .send(Event::Player(PlayerEvent::Playing(playback_start))); - self.refresh_task = self.create_refresh(); self.active = true; } LibrespotPlayerEvent::Paused { @@ -180,38 +178,27 @@ impl futures::Future for Worker { } LibrespotPlayerEvent::EndOfTrack { .. } => { self.events.send(Event::Player(PlayerEvent::FinishedTrack)); - progress = true; } LibrespotPlayerEvent::TimeToPreloadNextTrack { .. } => { self.events .send(Event::Queue(QueueEvent::PreloadTrackRequest)); } _ => {} - } - } - - if let Poll::Ready(Some(Ok(_))) = self.refresh_task.as_mut().poll_next(cx) { - self.refresh_task = if self.active { - progress = true; - self.create_refresh() - } else { - Box::pin(futures::stream::empty()) - }; - } - - match self.token_task.as_mut().poll(cx) { - Poll::Ready(Ok(_)) => { + }, + _ = ui_refresh.tick() => { + if self.active { + self.events.trigger(); + } + }, + _ = self.token_task.as_mut() => { info!("token updated!"); - self.token_task = Box::pin(futures::future::pending()) + self.token_task = Box::pin(futures::future::pending()); } - Poll::Ready(Err(e)) => { - error!("could not generate token: {:?}", e); - } - _ => (), } - if !progress { - return Poll::Pending; + if self.session.is_invalid() { + self.events.send(Event::Player(PlayerEvent::Stopped)); + break; } } }