From 2abfdbeb799e1dc649907e73357bd75c5f181d63 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Tue, 22 Oct 2024 15:04:09 +0200 Subject: [PATCH 01/14] fix: clippy --- .gitignore | 1 + Cargo.lock | 18 ++++++++++++++---- examples/hello-world-rabbitmq/Cargo.lock | 21 ++++++--------------- paladin-core/src/channel/mod.rs | 2 +- paladin-core/src/queue/in_memory.rs | 2 ++ paladin-core/src/runtime/mod.rs | 1 - 6 files changed, 24 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index ea8c4bf..c403c34 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +.idea/ diff --git a/Cargo.lock b/Cargo.lock index 7f759cb..d35c03a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -1250,7 +1250,7 @@ dependencies = [ [[package]] name = "paladin-core" -version = "0.4.2" +version = "0.4.3" dependencies = [ "anyhow", "async-trait", @@ -1266,7 +1266,7 @@ dependencies = [ "lapin", "linkme", "num-traits", - "paladin-opkind-derive", + "paladin-opkind-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project", "postcard", "rand", @@ -1282,7 +1282,17 @@ dependencies = [ [[package]] name = "paladin-opkind-derive" -version = "0.4.1" +version = "0.4.2" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "paladin-opkind-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bde85d55c108d4eef3404b4c88d1982a270dc11146a085f4f45c1548b4d2b4c" dependencies = [ "quote", "syn", diff --git a/examples/hello-world-rabbitmq/Cargo.lock b/examples/hello-world-rabbitmq/Cargo.lock index 52d3707..1d692de 100644 --- a/examples/hello-world-rabbitmq/Cargo.lock +++ b/examples/hello-world-rabbitmq/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -1195,7 +1195,7 @@ dependencies = [ [[package]] name = "paladin-core" -version = "0.4.2" +version = "0.4.3" dependencies = [ "anyhow", "async-trait", @@ -1213,6 +1213,7 @@ dependencies = [ "paladin-opkind-derive", "pin-project", "postcard", + "rand", "serde", "thiserror", "tokio", @@ -1221,12 +1222,13 @@ dependencies = [ "tokio-util", "tracing", "tracing-subscriber", - "uuid", ] [[package]] name = "paladin-opkind-derive" -version = "0.4.1" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bde85d55c108d4eef3404b4c88d1982a270dc11146a085f4f45c1548b4d2b4c" dependencies = [ "quote", "syn", @@ -2023,17 +2025,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" -[[package]] -name = "uuid" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" -dependencies = [ - "getrandom", - "rand", - "serde", -] - [[package]] name = "valuable" version = "0.1.0" diff --git a/paladin-core/src/channel/mod.rs b/paladin-core/src/channel/mod.rs index 569a106..ab503d4 100644 --- a/paladin-core/src/channel/mod.rs +++ b/paladin-core/src/channel/mod.rs @@ -76,9 +76,9 @@ pub trait ChannelFactory { } /// Guard a channel and embed a particular pipe in the lease guard. +/// /// A single pipe is embedded, as the guard is meant to be held by a single end /// of the channel. The lease guard will release the channel when it is dropped. -/// /// [`LeaseGuard`] implements [`Stream`] where the pipe is a [`Stream`], and can /// be used as a [`Stream`] directly. #[pin_project(PinnedDrop)] diff --git a/paladin-core/src/queue/in_memory.rs b/paladin-core/src/queue/in_memory.rs index 6a9f9cd..5023b79 100644 --- a/paladin-core/src/queue/in_memory.rs +++ b/paladin-core/src/queue/in_memory.rs @@ -691,6 +691,7 @@ mod helpers { } #[cfg(test)] +#[allow(clippy::needless_return)] mod exactly_once { use tokio::{join, try_join}; @@ -798,6 +799,7 @@ mod exactly_once { } #[cfg(test)] +#[allow(clippy::needless_return)] mod broadcast { use tokio::{join, try_join}; diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index 13b5860..e7b4568 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -113,7 +113,6 @@ type CoordinatedTaskChannel<'a, Op, Metadata> = ( /// /// See the [runtime module documentation](crate::runtime) for more information /// on runtime semantics. - pub struct Runtime { channel_factory: DynamicChannelFactory, task_channel: DynamicChannel, From 01b1fbd791e448be4a485e15eaa32b0ac211b5e7 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Tue, 22 Oct 2024 17:19:08 +0200 Subject: [PATCH 02/14] chore: update dependencies --- Cargo.lock | 1118 ++++++++++------ examples/hello-world-rabbitmq/Cargo.lock | 1482 ++++++++++++++-------- paladin-core/Cargo.toml | 2 +- 3 files changed, 1723 insertions(+), 879 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d35c03a..57183b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,29 @@ version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aes" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] [[package]] name = "aho-corasick" @@ -28,9 +39,9 @@ dependencies = [ [[package]] name = "amq-protocol" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d40d8b2465c7959dd40cee32ba6ac334b5de57e9fca0cc756759894a4152a5d" +checksum = "e3a41c091e49edfcc098b4f90d4d7706a8cf9158034e84ebfee7ff346092f67c" dependencies = [ "amq-protocol-tcp", "amq-protocol-types", @@ -42,9 +53,9 @@ dependencies = [ [[package]] name = "amq-protocol-tcp" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cb2100adae7da61953a2c3a01935d86caae13329fadce3333f524d6d6ce12e2" +checksum = "3ed7a4a662472f88823ed2fc81babb0b00562f2c54284e3e7bffc02b6df649bf" dependencies = [ "amq-protocol-uri", "tcp-stream", @@ -53,9 +64,9 @@ dependencies = [ [[package]] name = "amq-protocol-types" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156ff13c8a3ced600b4e54ed826a2ae6242b6069d00dd98466827cef07d3daff" +checksum = "bd6484fdc918c1b6e2ae8eda2914d19a5873e1975f93ad8d33d6a24d1d98df05" dependencies = [ "cookie-factory", "nom", @@ -65,9 +76,9 @@ dependencies = [ [[package]] name = "amq-protocol-uri" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "751bbd7d440576066233e740576f1b31fdc6ab86cfabfbd48c548de77eca73e4" +checksum = "7f7f2da69e0e1182765bf33407cd8a843f20791b5af2b57a2645818c4776c56c" dependencies = [ "amq-protocol-types", "percent-encoding", @@ -76,47 +87,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -124,35 +136,73 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" dependencies = [ "backtrace", ] +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.0.2", + "fastrand 2.1.1", "futures-lite 2.3.0", "slab", ] @@ -165,8 +215,8 @@ checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel", "async-executor", - "async-io 2.3.2", - "async-lock 3.3.0", + "async-io 2.3.4", + "async-lock 3.4.0", "blocking", "futures-lite 2.3.0", "once_cell", @@ -174,9 +224,9 @@ dependencies = [ [[package]] name = "async-global-executor-trait" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33dd14c5a15affd2abcff50d84efd4009ada28a860f01c14f9d654f3e81b3f75" +checksum = "80f19936c1a84fb48ceb8899b642d2a72572587d1021cc561bfb24de9f33ee89" dependencies = [ "async-global-executor", "async-trait", @@ -205,21 +255,21 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.0", - "rustix 0.38.34", + "polling 3.7.3", + "rustix 0.38.37", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -233,12 +283,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener 5.3.1", + "event-listener-strategy", "pin-project-lite", ] @@ -256,15 +306,15 @@ dependencies = [ [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -288,9 +338,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backoff" @@ -308,24 +358,24 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] -name = "base64" -version = "0.21.7" +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bitflags" @@ -335,9 +385,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -359,18 +409,15 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock 3.3.0", "async-task", - "fastrand 2.0.2", "futures-io", "futures-lite 2.3.0", "piper", - "tracing", ] [[package]] @@ -381,9 +428,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -399,9 +446,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.95" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -448,9 +498,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -458,9 +508,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -470,9 +520,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", @@ -482,9 +532,21 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "cms" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b77c319abfd5219629c45c34c89ba945ed3c5e49fcde9d16b6c3885f118a730" +dependencies = [ + "const-oid", + "der", + "spki", + "x509-cert", +] [[package]] name = "cobs" @@ -494,27 +556,30 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "cookie-factory" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" -dependencies = [ - "futures", -] [[package]] name = "core-foundation" @@ -528,24 +593,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] [[package]] name = "critical-section" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam" @@ -562,9 +627,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -609,9 +674,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -642,6 +707,59 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "der_derive", + "flagset", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "des" version = "0.8.1" @@ -662,6 +780,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -680,11 +809,17 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -698,20 +833,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -720,29 +844,19 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener 5.3.1", "pin-project-lite", ] [[package]] name = "executor-trait" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a1052dd43212a7777ec6a69b117da52f5e52f07aec47d00c1a2b33b85d06b08" +checksum = "13c39dff9342e4e0e16ce96be751eb21a94e94a87bb2f6e63ad1961c2ce109bf" dependencies = [ "async-trait", ] @@ -758,28 +872,24 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] -name = "flume" -version = "0.10.14" +name = "flagset" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" -dependencies = [ - "futures-core", - "futures-sink", - "pin-project", - "spin", -] +checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" [[package]] name = "flume" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ + "futures-core", + "futures-sink", "spin", ] @@ -794,9 +904,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -809,9 +919,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -819,15 +929,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -836,9 +946,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -861,7 +971,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.2", + "fastrand 2.1.1", "futures-core", "futures-io", "parking", @@ -870,9 +980,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -881,21 +991,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -921,9 +1031,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -932,9 +1042,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "half" @@ -957,9 +1067,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heapless" @@ -987,6 +1097,18 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hmac" version = "0.12.1" @@ -1018,9 +1140,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -1031,11 +1153,17 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itoa" version = "1.0.11" @@ -1044,16 +1172,16 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "lapin" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f3067a1fcfbc3fc46455809c023e69b8f6602463201010f4ae5a3b572adb9dc" +checksum = "209b09a06f4bd4952a0fd0594f90d53cf4496b062f59acc838a2823e1bb7d95c" dependencies = [ "amq-protocol", "async-global-executor-trait", "async-reactor-trait", "async-trait", "executor-trait", - "flume 0.10.14", + "flume", "futures-core", "futures-io", "parking_lot", @@ -1066,30 +1194,30 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "linkme" -version = "0.3.25" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2cfee0de9bd869589fb9a015e155946d1be5ff415cb844c2caccc6cc4b5db9" +checksum = "70fe496a7af8c406f877635cbf3cd6a9fac9d6f443f58691cd8afe6ce0971af4" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.25" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf157a4dc5a29b7b464aa8fe7edeff30076e07e13646a1c3874f58477dc99f8" +checksum = "b01f197a15988fb5b2ec0a5a9800c97e70771499c456ad757d63b3c5e9b96e75" dependencies = [ "proc-macro2", "quote", @@ -1104,15 +1232,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1120,9 +1248,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matchers" @@ -1135,9 +1263,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -1147,22 +1275,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1186,38 +1315,62 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.2.18" +name = "num-bigint" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", + "num-integer", + "num-traits", ] [[package]] -name = "num_cpus" -version = "1.16.0" +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "hermit-abi", - "libc", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", ] [[package]] name = "object" -version = "0.32.2" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] +[[package]] +name = "oid-registry" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +dependencies = [ + "asn1-rs", +] + [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl-probe" @@ -1232,20 +1385,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] -name = "p12" -version = "0.6.3" +name = "p12-keystore" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4873306de53fe82e7e484df31e1e947d61514b6ea2ed6cd7b45d63006fd9224" +checksum = "df7b60d0b2dcace322e6e8c4499c4c8bdf331c1bae046a54be5e4191c3610286" dependencies = [ "cbc", - "cipher", + "cms", + "der", "des", - "getrandom", + "hex", "hmac", - "lazy_static", + "pkcs12", + "pkcs5", + "rand", "rc2", "sha1", - "yasna", + "sha2", + "thiserror", + "x509-parser", ] [[package]] @@ -1266,7 +1424,7 @@ dependencies = [ "lapin", "linkme", "num-traits", - "paladin-opkind-derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "paladin-opkind-derive", "pin-project", "postcard", "rand", @@ -1288,27 +1446,17 @@ dependencies = [ "syn", ] -[[package]] -name = "paladin-opkind-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bde85d55c108d4eef3404b4c88d1982a270dc11146a085f4f45c1548b4d2b4c" -dependencies = [ - "quote", - "syn", -] - [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1316,15 +1464,34 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", ] [[package]] @@ -1335,18 +1502,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", @@ -1372,22 +1539,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cfae3ead413ca051a681152bd266438d3bfa301c9bdf836939a14c721bb2a21" dependencies = [ "doc-comment", - "flume 0.11.0", + "flume", "parking_lot", "tracing", ] [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.2", + "fastrand 2.1.1", "futures-io", ] +[[package]] +name = "pkcs12" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "695b3df3d3cc1015f12d70235e35b6b79befc5fa7a9b95b951eab1dd07c9efc2" +dependencies = [ + "cms", + "const-oid", + "der", + "digest", + "spki", + "x509-cert", + "zeroize", +] + +[[package]] +name = "pkcs5" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6" +dependencies = [ + "aes", + "cbc", + "der", + "pbkdf2", + "scrypt", + "sha2", + "spki", +] + [[package]] name = "polling" version = "2.8.0" @@ -1406,51 +1603,61 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.0" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.34", + "rustix 0.38.37", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "postcard" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" dependencies = [ "cobs", - "embedded-io", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless", "serde", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1507,23 +1714,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -1537,13 +1744,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.5", ] [[package]] @@ -1554,9 +1761,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "ring" @@ -1575,19 +1782,28 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" version = "0.37.27" @@ -1604,85 +1820,105 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.11" +version = "0.23.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ - "log", + "once_cell", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] name = "rustls-connector" -version = "0.18.5" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25da151615461c7347114b1ad1a7458b4cdebc69cb220cd140cd5cb324b1dd37" +checksum = "2a980454b497c439c274f2feae2523ed8138bbd3d323684e1435fec62f800481" dependencies = [ "log", "rustls", "rustls-native-certs", + "rustls-pki-types", "rustls-webpki", ] [[package]] name = "rustls-native-certs" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", "rustls-pemfile", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1692,22 +1928,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "sct" -version = "0.7.1" +name = "scrypt" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" dependencies = [ - "ring", - "untrusted", + "pbkdf2", + "salsa20", + "sha2", ] [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -1716,9 +1953,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -1726,24 +1963,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.211" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.211" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff" dependencies = [ "proc-macro2", "quote", @@ -1752,11 +1989,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1772,6 +2010,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -1781,6 +2030,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -1817,9 +2072,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1834,6 +2089,16 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1848,47 +2113,58 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.60" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tcp-stream" -version = "0.26.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da30af7998f51ee1aa48ab24276fe303a697b004e31ff542b192c088d5630a5" +checksum = "495b0abdce3dc1f8fd27240651c9e68890c14e9d9c61527b1ce44d8a5a7bd3d5" dependencies = [ "cfg-if", - "p12", + "p12-keystore", "rustls-connector", "rustls-pemfile", ] [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -1905,11 +2181,42 @@ dependencies = [ "once_cell", ] +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1922,28 +2229,27 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2 0.5.7", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-executor-trait" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "802ccf58e108fe16561f35348fabe15ff38218968f033d587e399a84937533cc" +checksum = "96a1593beae7759f592e1100c5997fe9e9ebf4b5968062f1fbcd807989cd1b79" dependencies = [ "async-trait", "executor-trait", @@ -1952,9 +2258,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", @@ -1977,9 +2283,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -1988,9 +2294,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -2068,21 +2374,21 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] @@ -2095,9 +2401,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -2106,9 +2412,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -2118,15 +2424,15 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "wasi" @@ -2171,7 +2477,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -2191,18 +2506,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2213,9 +2528,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2225,9 +2540,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2237,15 +2552,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2255,9 +2570,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2267,9 +2582,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2279,9 +2594,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2291,12 +2606,61 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "yasna" -version = "0.5.2" +name = "x509-cert" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "spki", +] + +[[package]] +name = "x509-parser" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/examples/hello-world-rabbitmq/Cargo.lock b/examples/hello-world-rabbitmq/Cargo.lock index 1d692de..13323fa 100644 --- a/examples/hello-world-rabbitmq/Cargo.lock +++ b/examples/hello-world-rabbitmq/Cargo.lock @@ -4,33 +4,44 @@ version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aes" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "amq-protocol" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d40d8b2465c7959dd40cee32ba6ac334b5de57e9fca0cc756759894a4152a5d" +checksum = "e3a41c091e49edfcc098b4f90d4d7706a8cf9158034e84ebfee7ff346092f67c" dependencies = [ "amq-protocol-tcp", "amq-protocol-types", @@ -42,9 +53,9 @@ dependencies = [ [[package]] name = "amq-protocol-tcp" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cb2100adae7da61953a2c3a01935d86caae13329fadce3333f524d6d6ce12e2" +checksum = "3ed7a4a662472f88823ed2fc81babb0b00562f2c54284e3e7bffc02b6df649bf" dependencies = [ "amq-protocol-uri", "tcp-stream", @@ -53,9 +64,9 @@ dependencies = [ [[package]] name = "amq-protocol-types" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "156ff13c8a3ced600b4e54ed826a2ae6242b6069d00dd98466827cef07d3daff" +checksum = "bd6484fdc918c1b6e2ae8eda2914d19a5873e1975f93ad8d33d6a24d1d98df05" dependencies = [ "cookie-factory", "nom", @@ -65,9 +76,9 @@ dependencies = [ [[package]] name = "amq-protocol-uri" -version = "7.1.2" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "751bbd7d440576066233e740576f1b31fdc6ab86cfabfbd48c548de77eca73e4" +checksum = "7f7f2da69e0e1182765bf33407cd8a843f20791b5af2b57a2645818c4776c56c" dependencies = [ "amq-protocol-types", "percent-encoding", @@ -76,106 +87,146 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" dependencies = [ "backtrace", ] +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "async-channel" -version = "1.9.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.5.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1da3ae8dabd9c00f453a329dfe1fb28da3c0a72e2478cdcd93171740c20499" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ - "async-lock", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite", + "fastrand 2.1.1", + "futures-lite 2.3.0", "slab", ] [[package]] name = "async-global-executor" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel", "async-executor", - "async-io", - "async-lock", + "async-io 2.3.4", + "async-lock 3.4.0", "blocking", - "futures-lite", + "futures-lite 2.3.0", "once_cell", ] [[package]] name = "async-global-executor-trait" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33dd14c5a15affd2abcff50d84efd4009ada28a860f01c14f9d654f3e81b3f75" +checksum = "80f19936c1a84fb48ceb8899b642d2a72572587d1021cc561bfb24de9f33ee89" dependencies = [ "async-global-executor", "async-trait", @@ -188,27 +239,57 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ - "async-lock", + "async-lock 2.8.0", "autocfg", "cfg-if", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "log", "parking", - "polling", - "rustix", + "polling 2.8.0", + "rustix 0.37.27", "slab", - "socket2 0.4.9", + "socket2 0.4.10", "waker-fn", ] +[[package]] +name = "async-io" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +dependencies = [ + "async-lock 3.4.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.7.3", + "rustix 0.38.37", + "slab", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "async-lock" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ - "event-listener", + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", ] [[package]] @@ -217,7 +298,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a6012d170ad00de56c9ee354aef2e358359deb1ec504254e0e5a3774771de0e" dependencies = [ - "async-io", + "async-io 1.13.0", "async-trait", "futures-core", "reactor-trait", @@ -225,15 +306,15 @@ dependencies = [ [[package]] name = "async-task" -version = "4.4.1" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -242,9 +323,9 @@ dependencies = [ [[package]] name = "atomic-polyfill" -version = "0.1.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" dependencies = [ "critical-section", ] @@ -257,9 +338,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backoff" @@ -277,24 +358,24 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] -name = "base64" -version = "0.21.4" +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bitflags" @@ -302,6 +383,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "block-buffer" version = "0.10.4" @@ -322,26 +409,17 @@ dependencies = [ [[package]] name = "blocking" -version = "1.4.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94c4ef1f913d78636d78d538eec1f18de81e481f44b1be0a81060090530846e1" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock", "async-task", - "fastrand 2.0.1", "futures-io", - "futures-lite", + "futures-lite 2.3.0", "piper", - "tracing", ] -[[package]] -name = "bumpalo" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - [[package]] name = "byteorder" version = "1.5.0" @@ -350,9 +428,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -368,11 +446,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ - "libc", + "shlex", ] [[package]] @@ -383,9 +461,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "ciborium" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [ "ciborium-io", "ciborium-ll", @@ -394,15 +472,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [ "ciborium-io", "half", @@ -420,9 +498,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.6" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -430,9 +508,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.6" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -442,9 +520,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", @@ -454,9 +532,21 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "cms" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b77c319abfd5219629c45c34c89ba945ed3c5e49fcde9d16b6c3885f118a730" +dependencies = [ + "const-oid", + "der", + "spki", + "x509-cert", +] [[package]] name = "cobs" @@ -466,30 +556,36 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "cookie-factory" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -497,32 +593,31 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] [[package]] name = "critical-section" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" dependencies = [ - "cfg-if", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", @@ -532,68 +627,62 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-skiplist" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883a5821d7d079fcf34ac55f27a833ee61678110f6b97637cc74513c0d0b42fc" +checksum = "df29de440c58ca2cc6e587ec3d22347551a32435fbde9d2bff64e78a9ffa151b" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-common" @@ -618,6 +707,59 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "der_derive", + "flagset", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "des" version = "0.8.1" @@ -638,6 +780,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -657,24 +810,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" [[package]] -name = "errno" -version = "0.3.4" +name = "embedded-io" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -683,11 +831,32 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + [[package]] name = "executor-trait" -version = "2.1.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a1052dd43212a7777ec6a69b117da52f5e52f07aec47d00c1a2b33b85d06b08" +checksum = "13c39dff9342e4e0e16ce96be751eb21a94e94a87bb2f6e63ad1961c2ce109bf" dependencies = [ "async-trait", ] @@ -703,36 +872,41 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "flagset" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" [[package]] name = "flume" -version = "0.10.14" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" dependencies = [ "futures-core", "futures-sink", - "pin-project", - "spin 0.9.8", + "spin", ] [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -745,9 +919,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -755,15 +929,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -772,9 +946,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -791,11 +965,24 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.1.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -804,21 +991,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -844,9 +1031,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -855,15 +1042,19 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "half" -version = "1.8.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] [[package]] name = "hash32" @@ -876,35 +1067,47 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heapless" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" dependencies = [ "atomic-polyfill", "hash32", "rustc_version", "serde", - "spin 0.9.8", + "spin", "stable_deref_trait", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hmac" @@ -917,9 +1120,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -937,9 +1140,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -950,31 +1153,28 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] -name = "itoa" -version = "1.0.9" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] -name = "js-sys" -version = "0.3.64" +name = "itoa" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "lapin" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f3067a1fcfbc3fc46455809c023e69b8f6602463201010f4ae5a3b572adb9dc" +checksum = "209b09a06f4bd4952a0fd0594f90d53cf4496b062f59acc838a2823e1bb7d95c" dependencies = [ "amq-protocol", "async-global-executor-trait", @@ -994,9 +1194,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "leader" @@ -1015,24 +1215,24 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.149" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "linkme" -version = "0.3.17" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ed2ee9464ff9707af8e9ad834cffa4802f072caad90639c583dd3c62e6e608" +checksum = "70fe496a7af8c406f877635cbf3cd6a9fac9d6f443f58691cd8afe6ce0971af4" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.17" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" +checksum = "b01f197a15988fb5b2ec0a5a9800c97e70771499c456ad757d63b3c5e9b96e75" dependencies = [ "proc-macro2", "quote", @@ -1045,11 +1245,17 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1057,9 +1263,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matchers" @@ -1072,18 +1278,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -1093,22 +1290,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.9" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1132,29 +1330,62 @@ dependencies = [ ] [[package]] -name = "num_cpus" -version = "1.16.0" +name = "num-bigint" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "hermit-abi", - "libc", + "num-integer", + "num-traits", ] [[package]] -name = "object" -version = "0.32.1" +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "memchr", + "num-traits", ] [[package]] -name = "once_cell" -version = "1.18.0" +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl-probe" @@ -1177,20 +1408,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] -name = "p12" -version = "0.6.3" +name = "p12-keystore" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4873306de53fe82e7e484df31e1e947d61514b6ea2ed6cd7b45d63006fd9224" +checksum = "df7b60d0b2dcace322e6e8c4499c4c8bdf331c1bae046a54be5e4191c3610286" dependencies = [ "cbc", - "cipher", + "cms", + "der", "des", - "getrandom", + "hex", "hmac", - "lazy_static", + "pkcs12", + "pkcs5", + "rand", "rc2", "sha1", - "yasna", + "sha2", + "thiserror", + "x509-parser", ] [[package]] @@ -1227,8 +1463,6 @@ dependencies = [ [[package]] name = "paladin-opkind-derive" version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bde85d55c108d4eef3404b4c88d1982a270dc11146a085f4f45c1548b4d2b4c" dependencies = [ "quote", "syn", @@ -1236,15 +1470,15 @@ dependencies = [ [[package]] name = "parking" -version = "2.1.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1252,37 +1486,56 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", ] [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", @@ -1291,9 +1544,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -1303,9 +1556,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pinky-swear" -version = "6.1.0" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d894b67aa7a4bf295db5e85349078c604edaa6fa5c8721e8eca3c7729a27f2ac" +checksum = "6cfae3ead413ca051a681152bd266438d3bfa301c9bdf836939a14c721bb2a21" dependencies = [ "doc-comment", "flume", @@ -1315,15 +1568,45 @@ dependencies = [ [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.1.1", "futures-io", ] +[[package]] +name = "pkcs12" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "695b3df3d3cc1015f12d70235e35b6b79befc5fa7a9b95b951eab1dd07c9efc2" +dependencies = [ + "cms", + "const-oid", + "der", + "digest", + "spki", + "x509-cert", + "zeroize", +] + +[[package]] +name = "pkcs5" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6" +dependencies = [ + "aes", + "cbc", + "der", + "pbkdf2", + "scrypt", + "sha2", + "spki", +] + [[package]] name = "polling" version = "2.8.0" @@ -1331,47 +1614,72 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", - "bitflags", + "bitflags 1.3.2", "cfg-if", "concurrent-queue", "libc", "log", "pin-project-lite", - "windows-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.37", + "tracing", + "windows-sys 0.59.0", ] [[package]] name = "postcard" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" dependencies = [ "cobs", - "embedded-io", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless", "serde", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.68" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1428,23 +1736,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.9.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.9", - "regex-syntax 0.7.5", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -1458,13 +1766,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.5", ] [[package]] @@ -1475,122 +1783,164 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "ring" -version = "0.16.20" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", + "getrandom", "libc", - "once_cell", - "spin 0.5.2", + "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" -version = "0.37.26" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f3f8f960ed3b5a59055428714943298bf3fa2d4a1d53135084e0544829d995" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ - "bitflags", + "bitflags 1.3.2", "errno", "io-lifetimes", "libc", - "linux-raw-sys", - "windows-sys", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.7" +version = "0.23.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" dependencies = [ - "log", + "once_cell", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] name = "rustls-connector" -version = "0.18.3" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060bcc1795b840d0e56d78f3293be5f652aa1611d249b0e63ffe19f4a8c9ae23" +checksum = "2a980454b497c439c274f2feae2523ed8138bbd3d323684e1435fec62f800481" dependencies = [ "log", "rustls", "rustls-native-certs", + "rustls-pki-types", "rustls-webpki", ] [[package]] name = "rustls-native-certs" -version = "0.6.3" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", "rustls-pemfile", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1600,22 +1950,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "sct" -version = "0.7.0" +name = "scrypt" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" dependencies = [ - "ring", - "untrusted", + "pbkdf2", + "salsa20", + "sha2", ] [[package]] name = "security-framework" -version = "2.9.2" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -1624,9 +1975,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -1634,24 +1985,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.211" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.211" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff" dependencies = [ "proc-macro2", "quote", @@ -1660,11 +2011,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1680,6 +2032,17 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -1689,11 +2052,17 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -1709,15 +2078,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -1725,20 +2094,14 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -1748,6 +2111,16 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -1756,53 +2129,64 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.38" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tcp-stream" -version = "0.26.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da30af7998f51ee1aa48ab24276fe303a697b004e31ff542b192c088d5630a5" +checksum = "495b0abdce3dc1f8fd27240651c9e68890c14e9d9c61527b1ce44d8a5a7bd3d5" dependencies = [ "cfg-if", - "p12", + "p12-keystore", "rustls-connector", "rustls-pemfile", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -1811,19 +2195,50 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", ] +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1836,28 +2251,27 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.7", "tokio-macros", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "tokio-executor-trait" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "802ccf58e108fe16561f35348fabe15ff38218968f033d587e399a84937533cc" +checksum = "96a1593beae7759f592e1100c5997fe9e9ebf4b5968062f1fbcd807989cd1b79" dependencies = [ "async-trait", "executor-trait", @@ -1866,9 +2280,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", @@ -1891,9 +2305,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -1902,9 +2316,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -1915,11 +2329,10 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1927,9 +2340,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", @@ -1938,9 +2351,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -1948,20 +2361,20 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -1983,36 +2396,36 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -2021,9 +2434,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -2033,15 +2446,15 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "wasi" @@ -2049,70 +2462,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasm-bindgen" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[package]] -name = "web-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "winapi" version = "0.3.9" @@ -2141,7 +2490,25 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -2150,13 +2517,29 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2165,42 +2548,90 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "worker" version = "0.1.0" @@ -2217,7 +2648,56 @@ dependencies = [ ] [[package]] -name = "yasna" -version = "0.5.2" +name = "x509-cert" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "spki", +] + +[[package]] +name = "x509-parser" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/paladin-core/Cargo.toml b/paladin-core/Cargo.toml index 13755ba..af21a2c 100644 --- a/paladin-core/Cargo.toml +++ b/paladin-core/Cargo.toml @@ -41,7 +41,7 @@ crossbeam = "0.8.2" postcard = { version = "1.0.8", features = ["use-std"] } linkme = "0.3.17" crossbeam-skiplist = "0.1.1" -paladin-opkind-derive = "0.4.2" +paladin-opkind-derive = { path = "../paladin-opkind-derive" } [dev-dependencies] # Required for certain doc tests which showcase generic numeric operations From 5f2c389601401c24684564f7967769904323c7c9 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Tue, 22 Oct 2024 14:09:49 +0200 Subject: [PATCH 03/14] feat: add leader/worker command channel --- .gitignore | 1 + paladin-core/src/runtime/mod.rs | 57 +++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index c403c34..5a7dc46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target .idea/ + diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index e7b4568..a550f6b 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -121,8 +121,8 @@ pub struct Runtime { _marker: Marker, } -const IPC_ROUTING_KEY: &str = "ipc-routing-key"; -pub const DEFAULT_ROUTING_KEY: &str = "default"; +pub const COMMAND_IPC_ROUTING_KEY: &str = "command-ipc-routing-key"; +pub const TASK_IPC_ROUTING_KEY: &str = "task-ipc-routing-key"; impl Runtime { /// Initializes the [`Runtime`] with the provided [`Config`]. @@ -133,7 +133,7 @@ impl Runtime { config .task_bus_routing_key .clone() - .unwrap_or_else(|| DEFAULT_ROUTING_KEY.to_string()), + .unwrap_or_else(|| TASK_IPC_ROUTING_KEY.to_string()), ChannelType::ExactlyOnce, ) .await?; @@ -361,6 +361,19 @@ impl Runtime { LeaseGuard::new(result_channel, Box::new(ack_composed_receiver)), )) } + + /// Get a [`Publisher`] for dispatching [`CommandIpc`] messages. + /// + /// Typically used by a leader node to send commands to workers (a.g. abort + /// work) or worker node to notify other workers of a fatal error. + #[instrument(skip(self), level = "trace")] + pub async fn get_command_ipc_sender(&self) -> Result> { + self.channel_factory + .get(COMMAND_IPC_ROUTING_KEY.to_string(), ChannelType::Broadcast) + .await? + .sender() + .await + } } /// Drop the worker emulator when the runtime is dropped. @@ -401,10 +414,11 @@ pub struct ExecutionErr { strategy: FatalStrategy, } -/// Inter-process messages between workers. +/// Command and error inter-process messages between leader and workers. #[derive(Debug, Clone, Serialize, Deserialize)] -pub enum WorkerIpc { +pub enum CommandIpc { ExecutionError { routing_key: String }, + Abort { routing_key: String }, } impl WorkerRuntime { @@ -416,7 +430,7 @@ impl WorkerRuntime { config .task_bus_routing_key .clone() - .unwrap_or_else(|| DEFAULT_ROUTING_KEY.to_string()), + .unwrap_or_else(|| TASK_IPC_ROUTING_KEY.to_string()), ChannelType::ExactlyOnce, ) .await?; @@ -441,30 +455,30 @@ impl WorkerRuntime { .await } - /// Get a [`Publisher`] for dispatching [`WorkerIpc`] messages. + /// Get a [`Publisher`] for dispatching [`CommandIpc`] messages. /// - /// Typically used by a worker node to notify other workers of a fatal - /// error. + /// Typically used by a leader node to send commands to workers (a.g. abort + /// work) or worker node to notify other workers of a fatal error. #[instrument(skip(self), level = "trace")] - pub async fn get_ipc_sender(&self) -> Result> { + pub async fn get_command_ipc_sender(&self) -> Result> { self.channel_factory - .get(IPC_ROUTING_KEY.to_string(), ChannelType::Broadcast) + .get(COMMAND_IPC_ROUTING_KEY.to_string(), ChannelType::Broadcast) .await? .sender() .await } - /// Get a [`Stream`] for receiving [`WorkerIpc`] messages. + /// Get a [`Stream`] for receiving [`CommandIpc`] messages. /// - /// Typically used by a worker node to listen for fatal errors from other - /// workers. + /// Typically used by a worker node to listen for command instructions (e.g. + /// abort) from the leader or fatal errors from other workers. #[instrument(skip(self), level = "trace")] - pub async fn get_ipc_receiver(&self) -> Result> { + pub async fn get_command_ipc_receiver(&self) -> Result> { let s = self .channel_factory - .get(IPC_ROUTING_KEY.to_string(), ChannelType::Broadcast) + .get(COMMAND_IPC_ROUTING_KEY.to_string(), ChannelType::Broadcast) .await? - .receiver::() + .receiver::() .await?; Ok(s.then(|(message, acker)| async move { @@ -552,11 +566,11 @@ impl WorkerRuntime { FatalStrategy::Terminate => { // Notify other workers of the error. let (ipc, sender) = try_join!( - self.get_ipc_sender(), + self.get_command_ipc_sender(), self.get_result_sender(routing_key.clone()) )?; - let ipc_msg = WorkerIpc::ExecutionError { routing_key }; + let ipc_msg = CommandIpc::ExecutionError { routing_key }; let sender_msg = AnyTaskResult::Err(err.to_string()); try_join!(ipc.publish(&ipc_msg), sender.publish(&sender_msg))?; @@ -665,14 +679,15 @@ impl WorkerRuntime { // Spawn a task that will listen for IPC termination signals and mark jobs as // terminated. - let mut ipc_receiver = self.get_ipc_receiver().await?; + let mut ipc_receiver = self.get_command_ipc_receiver().await?; let remote_ipc_sig_term_handler = tokio::spawn({ let terminated_jobs = terminated_jobs.clone(); async move { while let Some(ipc) = ipc_receiver.next().await { match ipc { - WorkerIpc::ExecutionError { routing_key } => { + CommandIpc::ExecutionError { routing_key } + | CommandIpc::Abort { routing_key } => { // Mark the job as terminated if it hasn't been already. if mark_terminated(&terminated_jobs, routing_key.clone()) { warn!(routing_key = %routing_key, "received IPC termination signal"); From 372f75ed4d709a9b140b5f4569a60ed145e391f1 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Tue, 22 Oct 2024 15:39:54 +0200 Subject: [PATCH 04/14] test: debug --- examples/hello-world-rabbitmq/docker-compose.yml | 2 +- examples/hello-world-rabbitmq/leader/src/main.rs | 5 +++-- examples/hello-world-rabbitmq/ops/src/lib.rs | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/hello-world-rabbitmq/docker-compose.yml b/examples/hello-world-rabbitmq/docker-compose.yml index 39e1208..c4be783 100644 --- a/examples/hello-world-rabbitmq/docker-compose.yml +++ b/examples/hello-world-rabbitmq/docker-compose.yml @@ -22,7 +22,7 @@ services: - AMQP_URI=amqp://rabbitmq:5672 deploy: mode: replicated - replicas: 6 + replicas: 3 rabbitmq: image: rabbitmq:3-management ports: diff --git a/examples/hello-world-rabbitmq/leader/src/main.rs b/examples/hello-world-rabbitmq/leader/src/main.rs index 61f34bf..5279963 100644 --- a/examples/hello-world-rabbitmq/leader/src/main.rs +++ b/examples/hello-world-rabbitmq/leader/src/main.rs @@ -25,7 +25,8 @@ async fn main() -> Result<()> { let args = Cli::parse(); let runtime = Runtime::from_config(&args.options, register()).await?; - let input = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']; + let input = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', 's', 'm', 'a', 'l', 'l', '!', + 'S', 'm', 'o', 'r', 'i', 'm', 'e', 'v', 'i', 'v', 'e', 'r', 'o', '!']; let computation = IndexedStream::from(input) .map(&CharToString) .fold(&StringConcat); @@ -36,7 +37,7 @@ async fn main() -> Result<()> { let result = result?; info!("result: {:?}", result); - assert_eq!(result, "hello world!".to_string()); + assert_eq!(result, "hello world!small!Smorimevivero!".to_string()); Ok(()) } diff --git a/examples/hello-world-rabbitmq/ops/src/lib.rs b/examples/hello-world-rabbitmq/ops/src/lib.rs index 47d0801..efd3ce6 100644 --- a/examples/hello-world-rabbitmq/ops/src/lib.rs +++ b/examples/hello-world-rabbitmq/ops/src/lib.rs @@ -1,3 +1,4 @@ +use std::thread::sleep; use paladin::{ operation::{Monoid, Operation, Result}, registry, RemoteExecute, @@ -14,6 +15,9 @@ impl Operation for CharToString { type Output = String; fn execute(&self, input: Self::Input) -> Result { + println!(">>>>>>>>>> EXECUTE2 CharToString: {:?}", input); + sleep(std::time::Duration::from_secs(2)); + println!(">>>>>>>>>> FINISH2 CharToString: {:?}", input); Ok(input.to_string()) } } From bb4d8326d0338f618fcd79261ea343fb0cac6d79 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Tue, 22 Oct 2024 17:10:18 +0200 Subject: [PATCH 05/14] feat: implement abort signal --- .cargo/config.toml | 4 ++ .cargo/katex-header.html | 30 +++++++++++ Cargo.lock | 4 +- examples/hello-world-rabbitmq/Cargo.lock | 5 +- .../hello-world-rabbitmq/leader/src/main.rs | 50 +++++++++++++++---- examples/hello-world-rabbitmq/ops/Cargo.toml | 1 + examples/hello-world-rabbitmq/ops/src/lib.rs | 36 +++++++++++-- paladin-core/Cargo.toml | 2 +- paladin-core/src/lib.rs | 1 + paladin-core/src/operation/mod.rs | 30 ++++++++--- paladin-core/src/runtime/mod.rs | 23 ++++++--- paladin-core/src/task/mod.rs | 7 ++- paladin-opkind-derive/Cargo.toml | 2 +- paladin-opkind-derive/src/lib.rs | 5 +- 14 files changed, 163 insertions(+), 37 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 .cargo/katex-header.html diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..6340ce3 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,4 @@ +[build] +# https://github.com/rust-lang/rust/pull/124129 +# https://github.com/dtolnay/linkme/pull/88 +rustflags = ["-Z", "linker-features=-lld"] diff --git a/.cargo/katex-header.html b/.cargo/katex-header.html new file mode 100644 index 0000000..5db5bc0 --- /dev/null +++ b/.cargo/katex-header.html @@ -0,0 +1,30 @@ + + + + \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 57183b2..32b4b32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1408,7 +1408,7 @@ dependencies = [ [[package]] name = "paladin-core" -version = "0.4.3" +version = "0.4.4" dependencies = [ "anyhow", "async-trait", @@ -1440,7 +1440,7 @@ dependencies = [ [[package]] name = "paladin-opkind-derive" -version = "0.4.2" +version = "0.4.4" dependencies = [ "quote", "syn", diff --git a/examples/hello-world-rabbitmq/Cargo.lock b/examples/hello-world-rabbitmq/Cargo.lock index 13323fa..76408dc 100644 --- a/examples/hello-world-rabbitmq/Cargo.lock +++ b/examples/hello-world-rabbitmq/Cargo.lock @@ -1397,6 +1397,7 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" name = "ops" version = "0.1.0" dependencies = [ + "anyhow", "paladin-core", "serde", ] @@ -1431,7 +1432,7 @@ dependencies = [ [[package]] name = "paladin-core" -version = "0.4.3" +version = "0.4.4" dependencies = [ "anyhow", "async-trait", @@ -1462,7 +1463,7 @@ dependencies = [ [[package]] name = "paladin-opkind-derive" -version = "0.4.2" +version = "0.4.4" dependencies = [ "quote", "syn", diff --git a/examples/hello-world-rabbitmq/leader/src/main.rs b/examples/hello-world-rabbitmq/leader/src/main.rs index 5279963..6080983 100644 --- a/examples/hello-world-rabbitmq/leader/src/main.rs +++ b/examples/hello-world-rabbitmq/leader/src/main.rs @@ -1,7 +1,10 @@ +use std::time::Duration; + use anyhow::Result; use clap::Parser; use dotenvy::dotenv; use ops::{register, CharToString, StringConcat}; +use paladin::runtime::CommandIpc; use paladin::{ config::Config, directive::{indexed_stream::IndexedStream, Directive}, @@ -15,29 +18,56 @@ mod init; pub struct Cli { #[command(flatten)] pub options: Config, + #[arg(long, short)] + pub timeout: Option, } +const INPUT: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + #[tokio::main] async fn main() -> Result<()> { dotenv().ok(); init::tracing(); let args = Cli::parse(); - let runtime = Runtime::from_config(&args.options, register()).await?; + let runtime = std::sync::Arc::new(Runtime::from_config(&args.options, register()).await?); - let input = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', 's', 'm', 'a', 'l', 'l', '!', - 'S', 'm', 'o', 'r', 'i', 'm', 'e', 'v', 'i', 'v', 'e', 'r', 'o', '!']; + let input: Vec = INPUT.chars().collect(); let computation = IndexedStream::from(input) .map(&CharToString) .fold(&StringConcat); - let result = computation.run(&runtime).await; - runtime.close().await?; + let runtime_ = runtime.clone(); + tokio::spawn(async move { + let command_channel = runtime_ + .get_command_ipc_sender() + .await + .expect("retrieved ipc sender"); + println!("Waiting to abort the execution..."); + tokio::time::sleep(Duration::from_secs(10)).await; + println!("Aborting the execution..."); + if let Err(e) = command_channel + .publish(&CommandIpc::Abort { + routing_key: paladin::runtime::COMMAND_IPC_ABORT_ALL_KEY.into(), + }) + .await + { + println!("Unable to send abort signal: {e}"); + } else { + println!("Abort signal successfully sent"); + } + }); - let result = result?; - - info!("result: {:?}", result); - assert_eq!(result, "hello world!small!Smorimevivero!".to_string()); + let result = computation.run(&runtime).await; + runtime + .close() + .await + .inspect_err(|e| tracing::error!("Failed to close runtime: {e:?}"))?; - Ok(()) + result + .map(|value| { + info!("result: {:?}", value); + assert_eq!(value, INPUT.to_string()); + }) + .inspect_err(|e| tracing::error!("Leader finished with error:{e:?}")) } diff --git a/examples/hello-world-rabbitmq/ops/Cargo.toml b/examples/hello-world-rabbitmq/ops/Cargo.toml index e697cc9..2c99996 100644 --- a/examples/hello-world-rabbitmq/ops/Cargo.toml +++ b/examples/hello-world-rabbitmq/ops/Cargo.toml @@ -7,5 +7,6 @@ edition = "2021" [dependencies] serde = "1.0.183" +anyhow = "1.0.90" paladin-core = { path = "../../../paladin-core" } diff --git a/examples/hello-world-rabbitmq/ops/src/lib.rs b/examples/hello-world-rabbitmq/ops/src/lib.rs index efd3ce6..4ae51a6 100644 --- a/examples/hello-world-rabbitmq/ops/src/lib.rs +++ b/examples/hello-world-rabbitmq/ops/src/lib.rs @@ -1,4 +1,7 @@ use std::thread::sleep; + +use paladin::__private::tracing::info; +use paladin::operation::{FatalStrategy, OperationError}; use paladin::{ operation::{Monoid, Operation, Result}, registry, RemoteExecute, @@ -14,10 +17,28 @@ impl Operation for CharToString { type Input = char; type Output = String; - fn execute(&self, input: Self::Input) -> Result { - println!(">>>>>>>>>> EXECUTE2 CharToString: {:?}", input); - sleep(std::time::Duration::from_secs(2)); - println!(">>>>>>>>>> FINISH2 CharToString: {:?}", input); + fn execute( + &self, + input: Self::Input, + abort_signal: Option>, + ) -> Result { + for i in 1..10 { + // Simulate some long job. Check occasionally for the abort signal + // to terminate the job prematurely + sleep(std::time::Duration::from_millis(100)); + if abort_signal.is_some() + && abort_signal + .as_ref() + .unwrap() + .load(std::sync::atomic::Ordering::SeqCst) + { + return Err(OperationError::Fatal { + err: anyhow::anyhow!("aborted on command at CharToString iteration {i} for input {input:?}"), + strategy: FatalStrategy::Terminate, + }); + } + } + info!("CharToString operation finished for input: {:?}", input); Ok(input.to_string()) } } @@ -32,7 +53,12 @@ impl Monoid for StringConcat { String::new() } - fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result { + fn combine( + &self, + a: Self::Elem, + b: Self::Elem, + _abort_signal: Option>, + ) -> Result { Ok(a + &b) } } diff --git a/paladin-core/Cargo.toml b/paladin-core/Cargo.toml index af21a2c..37e12fd 100644 --- a/paladin-core/Cargo.toml +++ b/paladin-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "paladin-core" -version = "0.4.3" +version = "0.4.4" description = "A Rust distributed algorithm toolkit. Write distributed algorithms without the complexities of distributed systems programming." license.workspace = true edition.workspace = true diff --git a/paladin-core/src/lib.rs b/paladin-core/src/lib.rs index 58daca9..529a688 100644 --- a/paladin-core/src/lib.rs +++ b/paladin-core/src/lib.rs @@ -238,6 +238,7 @@ pub mod __private { #[linkme::distributed_slice] pub static OPERATIONS: [fn( crate::task::AnyTask, + abort_signal: Option>, ) -> futures::future::BoxFuture< 'static, crate::operation::Result, diff --git a/paladin-core/src/operation/mod.rs b/paladin-core/src/operation/mod.rs index 7b85bd0..41a0c75 100644 --- a/paladin-core/src/operation/mod.rs +++ b/paladin-core/src/operation/mod.rs @@ -117,7 +117,11 @@ pub trait Operation: RemoteExecute + Serializable { type Output: Serializable + Debug; /// Execute the operation on the given input. - fn execute(&self, input: Self::Input) -> Result; + fn execute( + &self, + input: Self::Input, + abort_signal: Option>, + ) -> Result; /// Get the input from a byte representation. fn input_from_bytes(&self, serializer: Serializer, input: &[u8]) -> Result { @@ -134,9 +138,14 @@ pub trait Operation: RemoteExecute + Serializable { } /// Execute the operation on the given input as bytes. - fn execute_as_bytes(&self, serializer: Serializer, input: &[u8]) -> Result { + fn execute_as_bytes( + &self, + serializer: Serializer, + input: &[u8], + abort_signal: Option>, + ) -> Result { self.input_from_bytes(serializer, input) - .and_then(|input| self.execute(input)) + .and_then(|input| self.execute(input, abort_signal)) .and_then(|output| self.output_to_bytes(serializer, output)) } @@ -170,7 +179,12 @@ pub trait Monoid: RemoteExecute + Serializable { fn empty(&self) -> Self::Elem; /// Combine two elements using the operation. - fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result; + fn combine( + &self, + a: Self::Elem, + b: Self::Elem, + abort_signal: Option>, + ) -> Result; } /// Implement the [`Operation`] trait for types that support the binary @@ -185,8 +199,12 @@ where type Output = T::Elem; /// Execute the operation on the given input. - fn execute(&self, (a, b): Self::Input) -> Result { - self.combine(a, b) + fn execute( + &self, + (a, b): Self::Input, + abort_signal: Option>, + ) -> Result { + self.combine(a, b, abort_signal) } } diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index a550f6b..d22b789 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -48,6 +48,7 @@ //! communicate, and provides a simple interface for interacting with these //! channels. +use std::sync::atomic::Ordering; use std::{ sync::Arc, time::{Duration, Instant}, @@ -123,6 +124,7 @@ pub struct Runtime { pub const COMMAND_IPC_ROUTING_KEY: &str = "command-ipc-routing-key"; pub const TASK_IPC_ROUTING_KEY: &str = "task-ipc-routing-key"; +pub const COMMAND_IPC_ABORT_ALL_KEY: &str = "abort-all-key"; impl Runtime { /// Initializes the [`Runtime`] with the provided [`Config`]. @@ -657,6 +659,7 @@ impl WorkerRuntime { let mut task_stream = self.get_task_receiver().await?; const TERMINATION_CLEAR_INTERVAL: Duration = Duration::from_secs(60); + const ABORT_SIGNAL_SHUTDOWN_INTERVAL: Duration = Duration::from_secs(10); // Keep track of terminated jobs to avoid processing new tasks associated to // them. let terminated_jobs: Arc> = Default::default(); @@ -679,12 +682,12 @@ impl WorkerRuntime { // Spawn a task that will listen for IPC termination signals and mark jobs as // terminated. - let mut ipc_receiver = self.get_command_ipc_receiver().await?; - let remote_ipc_sig_term_handler = tokio::spawn({ + let mut command_receiver = self.get_command_ipc_receiver().await?; + let remote_command_sig_term_handler = tokio::spawn({ let terminated_jobs = terminated_jobs.clone(); async move { - while let Some(ipc) = ipc_receiver.next().await { + while let Some(ipc) = command_receiver.next().await { match ipc { CommandIpc::ExecutionError { routing_key } | CommandIpc::Abort { routing_key } => { @@ -717,6 +720,7 @@ impl WorkerRuntime { } while let Some((payload, acker)) = task_stream.next().await { + let abort_signal = Arc::new(std::sync::atomic::AtomicBool::new(false)); // Skip tasks associated with terminated jobs. if terminated_jobs.contains_key(&payload.clone().routing_key) { trace!(routing_key = %payload.clone().routing_key, "skipping terminated job"); @@ -729,7 +733,9 @@ impl WorkerRuntime { let routing_key_clone = routing_key.clone(); let span = debug_span!("remote_execute", routing_key = %routing_key_clone); - let execution_task = payload.remote_execute().instrument(span); + let execution_task = payload + .remote_execute(Some(abort_signal.clone())) + .instrument(span); // Create a future that will wait for an IPC termination signal. let ipc_sig_term = { @@ -737,7 +743,12 @@ impl WorkerRuntime { async move { loop { ipc_sig_term_rx.changed().await.expect("IPC channel closed"); - if *ipc_sig_term_rx.borrow() == routing_key_clone { + let received_key = ipc_sig_term_rx.borrow().clone(); + if received_key == routing_key_clone + || received_key == COMMAND_IPC_ABORT_ALL_KEY + { + abort_signal.store(true, Ordering::SeqCst); + tokio::time::sleep(ABORT_SIGNAL_SHUTDOWN_INTERVAL).await; return true; } } @@ -779,7 +790,7 @@ impl WorkerRuntime { } } - remote_ipc_sig_term_handler.abort(); + remote_command_sig_term_handler.abort(); reaper.abort(); Ok(()) diff --git a/paladin-core/src/task/mod.rs b/paladin-core/src/task/mod.rs index 22830e1..266d210 100644 --- a/paladin-core/src/task/mod.rs +++ b/paladin-core/src/task/mod.rs @@ -161,7 +161,10 @@ impl AnyTask { /// [`RemoteExecute::ID`](crate::operation::RemoteExecute::ID) field to /// acquire the correct execution pointer from the [`static@OPERATIONS`] /// slice. - pub async fn remote_execute(self) -> crate::operation::Result { - OPERATIONS[self.operation_id as usize](self).await + pub async fn remote_execute( + self, + abort_signal: Option>, + ) -> crate::operation::Result { + OPERATIONS[self.operation_id as usize](self, abort_signal).await } } diff --git a/paladin-opkind-derive/Cargo.toml b/paladin-opkind-derive/Cargo.toml index 5821157..d7b2b96 100644 --- a/paladin-opkind-derive/Cargo.toml +++ b/paladin-opkind-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "paladin-opkind-derive" -version = "0.4.2" +version = "0.4.4" description = "Derive macro for paladin." license.workspace = true edition.workspace = true diff --git a/paladin-opkind-derive/src/lib.rs b/paladin-opkind-derive/src/lib.rs index 418d86b..becbd43 100644 --- a/paladin-opkind-derive/src/lib.rs +++ b/paladin-opkind-derive/src/lib.rs @@ -109,7 +109,7 @@ pub fn operation_derive(input: TokenStream) -> TokenStream { #[#paladin_path::__private::linkme::distributed_slice(#paladin_path::__private::OPERATIONS)] #linkme_path_override - fn #function_name(task: #paladin_path::task::AnyTask) -> #paladin_path::__private::futures::future::BoxFuture< + fn #function_name(task: #paladin_path::task::AnyTask, abort_signal: Option>,) -> #paladin_path::__private::futures::future::BoxFuture< 'static, #paladin_path::operation::Result<#paladin_path::task::AnyTaskOutput> > { @@ -118,6 +118,7 @@ pub fn operation_derive(input: TokenStream) -> TokenStream { let get_result = || async { // Deserialize the operation. let op = #name::from_bytes(task.serializer, &task.op)?; + let abort_signal = abort_signal.clone(); // Deserialize the input. let input = op.input_from_bytes(task.serializer, &task.input)?; @@ -127,7 +128,7 @@ pub fn operation_derive(input: TokenStream) -> TokenStream { let output = #paladin_path::__private::tokio::task::spawn_blocking(move || { // Execute the operation, catching panics. let typed_output = std::panic::catch_unwind(::std::panic::AssertUnwindSafe(|| - op.execute(input) + op.execute(input, abort_signal) )) // Convert panics to fatal operation errors. .map_err(|_| #paladin_path::operation::FatalError::from_str( From 0174cf448247ff612368eeffadba83013daf5949 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Wed, 23 Oct 2024 14:17:06 +0200 Subject: [PATCH 06/14] fix: timeout --- .cargo/katex-header.html | 30 ----------- .../hello-world-rabbitmq/docker-compose.yml | 1 + .../hello-world-rabbitmq/leader/src/main.rs | 50 +++++++++++-------- examples/hello-world-rabbitmq/ops/src/lib.rs | 2 +- 4 files changed, 30 insertions(+), 53 deletions(-) delete mode 100644 .cargo/katex-header.html diff --git a/.cargo/katex-header.html b/.cargo/katex-header.html deleted file mode 100644 index 5db5bc0..0000000 --- a/.cargo/katex-header.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - \ No newline at end of file diff --git a/examples/hello-world-rabbitmq/docker-compose.yml b/examples/hello-world-rabbitmq/docker-compose.yml index c4be783..3d9fadf 100644 --- a/examples/hello-world-rabbitmq/docker-compose.yml +++ b/examples/hello-world-rabbitmq/docker-compose.yml @@ -10,6 +10,7 @@ services: environment: - RUST_LOG=info - AMQP_URI=amqp://rabbitmq:5672 + - JOB_TIMEOUT=10 worker: build: context: ../../ diff --git a/examples/hello-world-rabbitmq/leader/src/main.rs b/examples/hello-world-rabbitmq/leader/src/main.rs index 6080983..ae57106 100644 --- a/examples/hello-world-rabbitmq/leader/src/main.rs +++ b/examples/hello-world-rabbitmq/leader/src/main.rs @@ -1,3 +1,4 @@ +use std::sync::Arc; use std::time::Duration; use anyhow::Result; @@ -10,7 +11,7 @@ use paladin::{ directive::{indexed_stream::IndexedStream, Directive}, runtime::Runtime, }; -use tracing::info; +use tracing::{error, info, warn}; mod init; @@ -18,45 +19,50 @@ mod init; pub struct Cli { #[command(flatten)] pub options: Config, - #[arg(long, short)] + /// Optional timeout for job in the seconds + #[arg(long, short, env = "JOB_TIMEOUT")] pub timeout: Option, } const INPUT: &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; -#[tokio::main] -async fn main() -> Result<()> { - dotenv().ok(); - init::tracing(); - - let args = Cli::parse(); - let runtime = std::sync::Arc::new(Runtime::from_config(&args.options, register()).await?); - - let input: Vec = INPUT.chars().collect(); - let computation = IndexedStream::from(input) - .map(&CharToString) - .fold(&StringConcat); - - let runtime_ = runtime.clone(); +async fn set_abort_timeout_job(timeout: u64, runtime: Arc) { tokio::spawn(async move { - let command_channel = runtime_ + let command_channel = runtime .get_command_ipc_sender() .await .expect("retrieved ipc sender"); - println!("Waiting to abort the execution..."); - tokio::time::sleep(Duration::from_secs(10)).await; - println!("Aborting the execution..."); + tokio::time::sleep(Duration::from_secs(timeout)).await; + warn!("User timeout expired, aborting the execution..."); if let Err(e) = command_channel .publish(&CommandIpc::Abort { routing_key: paladin::runtime::COMMAND_IPC_ABORT_ALL_KEY.into(), }) .await { - println!("Unable to send abort signal: {e}"); + error!("Unable to send abort signal: {e:?}"); } else { - println!("Abort signal successfully sent"); + info!("Abort signal successfully sent"); } }); +} + +#[tokio::main] +async fn main() -> Result<()> { + dotenv().ok(); + init::tracing(); + + let args = Cli::parse(); + let runtime = std::sync::Arc::new(Runtime::from_config(&args.options, register()).await?); + + let input: Vec = INPUT.chars().collect(); + let computation = IndexedStream::from(input) + .map(&CharToString) + .fold(&StringConcat); + + if let Some(timeout) = args.timeout { + set_abort_timeout_job(timeout, runtime.clone()).await; + } let result = computation.run(&runtime).await; runtime diff --git a/examples/hello-world-rabbitmq/ops/src/lib.rs b/examples/hello-world-rabbitmq/ops/src/lib.rs index 4ae51a6..5c21aba 100644 --- a/examples/hello-world-rabbitmq/ops/src/lib.rs +++ b/examples/hello-world-rabbitmq/ops/src/lib.rs @@ -33,7 +33,7 @@ impl Operation for CharToString { .load(std::sync::atomic::Ordering::SeqCst) { return Err(OperationError::Fatal { - err: anyhow::anyhow!("aborted on command at CharToString iteration {i} for input {input:?}"), + err: anyhow::anyhow!("aborted per request at CharToString iteration {i} for input {input:?}"), strategy: FatalStrategy::Terminate, }); } From a1d78f75cfaeebfdcf206ed0727e2f1ba0f15b45 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Wed, 23 Oct 2024 14:31:24 +0200 Subject: [PATCH 07/14] fix: cleanup --- .cargo/config.toml | 4 ---- examples/hello-world-rabbitmq/Cargo.lock | 1 + examples/hello-world-rabbitmq/docker-compose.yml | 2 +- examples/hello-world-rabbitmq/ops/Cargo.toml | 1 + examples/hello-world-rabbitmq/ops/src/lib.rs | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index 6340ce3..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,4 +0,0 @@ -[build] -# https://github.com/rust-lang/rust/pull/124129 -# https://github.com/dtolnay/linkme/pull/88 -rustflags = ["-Z", "linker-features=-lld"] diff --git a/examples/hello-world-rabbitmq/Cargo.lock b/examples/hello-world-rabbitmq/Cargo.lock index 76408dc..82afd4a 100644 --- a/examples/hello-world-rabbitmq/Cargo.lock +++ b/examples/hello-world-rabbitmq/Cargo.lock @@ -1400,6 +1400,7 @@ dependencies = [ "anyhow", "paladin-core", "serde", + "tracing", ] [[package]] diff --git a/examples/hello-world-rabbitmq/docker-compose.yml b/examples/hello-world-rabbitmq/docker-compose.yml index 3d9fadf..1c3c0ee 100644 --- a/examples/hello-world-rabbitmq/docker-compose.yml +++ b/examples/hello-world-rabbitmq/docker-compose.yml @@ -10,7 +10,7 @@ services: environment: - RUST_LOG=info - AMQP_URI=amqp://rabbitmq:5672 - - JOB_TIMEOUT=10 + - JOB_TIMEOUT=30 worker: build: context: ../../ diff --git a/examples/hello-world-rabbitmq/ops/Cargo.toml b/examples/hello-world-rabbitmq/ops/Cargo.toml index 2c99996..eae84fc 100644 --- a/examples/hello-world-rabbitmq/ops/Cargo.toml +++ b/examples/hello-world-rabbitmq/ops/Cargo.toml @@ -8,5 +8,6 @@ edition = "2021" [dependencies] serde = "1.0.183" anyhow = "1.0.90" +tracing = "0.1" paladin-core = { path = "../../../paladin-core" } diff --git a/examples/hello-world-rabbitmq/ops/src/lib.rs b/examples/hello-world-rabbitmq/ops/src/lib.rs index 5c21aba..5d65bdf 100644 --- a/examples/hello-world-rabbitmq/ops/src/lib.rs +++ b/examples/hello-world-rabbitmq/ops/src/lib.rs @@ -1,6 +1,6 @@ use std::thread::sleep; -use paladin::__private::tracing::info; +use tracing::info; use paladin::operation::{FatalStrategy, OperationError}; use paladin::{ operation::{Monoid, Operation, Result}, From e73598145daf0fb836c6534b7c5524ba53f0662c Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Wed, 23 Oct 2024 15:57:12 +0200 Subject: [PATCH 08/14] fix: tests --- examples/hello-world-rabbitmq/ops/src/lib.rs | 13 ++--- .../src/directive/indexed_stream/mod.rs | 8 ++-- paladin-core/src/directive/literal/mod.rs | 3 +- paladin-core/src/directive/mod.rs | 9 ++-- paladin-core/src/lib.rs | 16 ++++--- paladin-core/src/operation/error.rs | 15 ++++-- paladin-core/src/operation/mod.rs | 47 +++++++------------ paladin-core/src/runtime/mod.rs | 17 +++---- paladin-core/src/task/mod.rs | 5 +- 9 files changed, 67 insertions(+), 66 deletions(-) diff --git a/examples/hello-world-rabbitmq/ops/src/lib.rs b/examples/hello-world-rabbitmq/ops/src/lib.rs index 5d65bdf..a5d54a8 100644 --- a/examples/hello-world-rabbitmq/ops/src/lib.rs +++ b/examples/hello-world-rabbitmq/ops/src/lib.rs @@ -2,10 +2,7 @@ use std::thread::sleep; use tracing::info; use paladin::operation::{FatalStrategy, OperationError}; -use paladin::{ - operation::{Monoid, Operation, Result}, - registry, RemoteExecute, -}; +use paladin::{operation::{Monoid, Operation, Result}, registry, AbortSignal, RemoteExecute}; use serde::{Deserialize, Serialize}; registry!(); @@ -20,14 +17,14 @@ impl Operation for CharToString { fn execute( &self, input: Self::Input, - abort_signal: Option>, + abort: AbortSignal, ) -> Result { for i in 1..10 { // Simulate some long job. Check occasionally for the abort signal // to terminate the job prematurely sleep(std::time::Duration::from_millis(100)); - if abort_signal.is_some() - && abort_signal + if abort.is_some() + && abort .as_ref() .unwrap() .load(std::sync::atomic::Ordering::SeqCst) @@ -57,7 +54,7 @@ impl Monoid for StringConcat { &self, a: Self::Elem, b: Self::Elem, - _abort_signal: Option>, + _abort: AbortSignal, ) -> Result { Ok(a + &b) } diff --git a/paladin-core/src/directive/indexed_stream/mod.rs b/paladin-core/src/directive/indexed_stream/mod.rs index 9a4d565..edc4970 100644 --- a/paladin-core/src/directive/indexed_stream/mod.rs +++ b/paladin-core/src/directive/indexed_stream/mod.rs @@ -60,6 +60,7 @@ use futures::{Stream, StreamExt, TryStreamExt}; /// # operation::{Operation, Monoid, Result}, /// # directive::{Directive, IndexedStream}, /// # runtime::Runtime, +/// # AbortSignal /// # }; /// # use serde::{Deserialize, Serialize}; /// # @@ -68,8 +69,9 @@ use futures::{Stream, StreamExt, TryStreamExt}; /// impl Monoid for Multiply { /// type Elem = i32; /// -/// fn combine(&self, a: i32, b: i32) -> Result { -/// Ok(a * b) +/// fn combine(&self, a: i32, b: i32, abort: AbortSignal) -> Result { +/// use paladin::AbortSignal; +/// Ok(a * b) /// } /// /// fn empty(&self) -> i32 { @@ -83,7 +85,7 @@ use futures::{Stream, StreamExt, TryStreamExt}; /// type Input = i32; /// type Output = i32; /// -/// fn execute(&self, input: i32) -> Result { +/// fn execute(&self, input: i32, abort: AbortSignal) -> Result { /// Ok(self.0 * input) /// } /// } diff --git a/paladin-core/src/directive/literal/mod.rs b/paladin-core/src/directive/literal/mod.rs index 0b2a2ab..0ea1f10 100644 --- a/paladin-core/src/directive/literal/mod.rs +++ b/paladin-core/src/directive/literal/mod.rs @@ -9,6 +9,7 @@ /// # operation::{Operation, Result}, /// # directive::{Directive, Literal}, /// # runtime::Runtime, +/// # AbortSignal /// # }; /// # use serde::{Deserialize, Serialize}; /// # @@ -18,7 +19,7 @@ /// type Input = i32; /// type Output = i32; /// -/// fn execute(&self, input: i32) -> Result { +/// fn execute(&self, input: i32, abort: AbortSignal) -> Result { /// Ok(self.0 * input) /// } /// } diff --git a/paladin-core/src/directive/mod.rs b/paladin-core/src/directive/mod.rs index 59114ba..bbfbdfb 100644 --- a/paladin-core/src/directive/mod.rs +++ b/paladin-core/src/directive/mod.rs @@ -52,6 +52,7 @@ pub trait Directive { /// # operation::{Operation, Result}, /// # directive::{Directive, IndexedStream}, /// # runtime::Runtime, + /// # AbortSignal, /// # }; /// # use serde::{Deserialize, Serialize}; /// # @@ -61,7 +62,7 @@ pub trait Directive { /// type Input = String; /// type Output = usize; /// - /// fn execute(&self, input: String) -> Result { + /// fn execute(&self, input: String, abort: AbortSignal) -> Result { /// Ok(input.len()) /// } /// } @@ -90,6 +91,7 @@ pub trait Directive { /// # operation::{Operation, Result}, /// # directive::{Directive, IndexedStream}, /// # runtime::Runtime, + /// # AbortSignal, /// # }; /// # use serde::{Deserialize, Serialize}; /// # @@ -99,7 +101,7 @@ pub trait Directive { /// type Input = i32; /// type Output = i32; /// - /// fn execute(&self, input: i32) -> Result { + /// fn execute(&self, input: i32, abort: AbortSignal) -> Result { /// Ok(self.0 * input) /// } /// } @@ -137,6 +139,7 @@ pub trait Directive { /// # operation::{Operation, Monoid, Result}, /// # directive::{Directive, IndexedStream}, /// # runtime::Runtime, + /// # AbortSignal /// # }; /// # use serde::{Deserialize, Serialize}; /// # @@ -145,7 +148,7 @@ pub trait Directive { /// impl Monoid for Multiply { /// type Elem = i32; /// - /// fn combine(&self, a: i32, b: i32) -> Result { + /// fn combine(&self, a: i32, b: i32, abort: AbortSignal) -> Result { /// Ok(a * b) /// } /// diff --git a/paladin-core/src/lib.rs b/paladin-core/src/lib.rs index 529a688..449e4c6 100644 --- a/paladin-core/src/lib.rs +++ b/paladin-core/src/lib.rs @@ -53,7 +53,7 @@ //! [`Directive`](crate::directive::Directive)s and remotely executed. //! //! ``` -//! use paladin::{RemoteExecute, operation::{Operation, Result}}; +//! use paladin::{RemoteExecute, operation::{Operation, Result}, AbortSignal,}; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Serialize, Deserialize, RemoteExecute)] @@ -63,7 +63,7 @@ //! type Input = u64; //! type Output = u64; //! -//! fn execute(&self, input: Self::Input) -> Result { +//! fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { //! match input { //! 0 => Ok(0), //! 1 => Ok(1), @@ -82,7 +82,7 @@ //! } //! //! # fn main() { -//! assert_eq!(FibAt.execute(10).unwrap(), 55); +//! assert_eq!(FibAt.execute(10, None).unwrap(), 55); //! # } //! ``` //! @@ -93,7 +93,7 @@ //! program. //! //! ``` -//! use paladin::{RemoteExecute, operation::{Operation, Result}}; +//! use paladin::{RemoteExecute, operation::{Operation, Result}, AbortSignal}; //! use serde::{Deserialize, Serialize}; //! # //! # #[derive(Serialize, Deserialize, RemoteExecute)] @@ -103,7 +103,7 @@ //! # type Input = u64; //! # type Output = u64; //! # -//! # fn execute(&self, input: Self::Input) -> Result { +//! # fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { //! # match input { //! # 0 => Ok(0), //! # 1 => Ok(1), @@ -134,7 +134,7 @@ //! impl Monoid for Sum { //! type Elem = u64; //! -//! fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result { +//! fn combine(&self, a: Self::Elem, b: Self::Elem, abort: AbortSignal) -> Result { //! Ok(a + b) //! } //! @@ -220,6 +220,8 @@ pub mod task; pub use async_trait::async_trait; pub use paladin_opkind_derive::*; +pub type AbortSignal = Option>; + // Not public API. Used by generated code. #[doc(hidden)] pub mod __private { @@ -238,7 +240,7 @@ pub mod __private { #[linkme::distributed_slice] pub static OPERATIONS: [fn( crate::task::AnyTask, - abort_signal: Option>, + abort: crate::AbortSignal, ) -> futures::future::BoxFuture< 'static, crate::operation::Result, diff --git a/paladin-core/src/operation/error.rs b/paladin-core/src/operation/error.rs index e4074bb..7263858 100644 --- a/paladin-core/src/operation/error.rs +++ b/paladin-core/src/operation/error.rs @@ -154,6 +154,7 @@ pub enum FatalStrategy { /// runtime::Runtime, /// operation::{Operation, Result, FatalError, FatalStrategy}, /// directive::{Directive, IndexedStream}, +/// AbortSignal, /// }; /// use serde::{Deserialize, Serialize}; /// @@ -164,7 +165,7 @@ pub enum FatalStrategy { /// type Input = i64; /// type Output = i64; /// -/// fn execute(&self, _: Self::Input) -> Result { +/// fn execute(&self, _: Self::Input, abort: AbortSignal) -> Result { /// FatalError::from_str( /// "This operation will always fail.", /// FatalStrategy::default() @@ -196,6 +197,7 @@ pub enum FatalStrategy { /// runtime::Runtime, /// operation::{Operation, Monoid, Result, FatalError, FatalStrategy}, /// directive::{Directive, IndexedStream}, +/// AbortSignal, /// }; /// use serde::{Deserialize, Serialize}; /// @@ -209,7 +211,7 @@ pub enum FatalStrategy { /// 0 /// } /// -/// fn combine(&self, _: Self::Elem, _: Self::Elem) -> Result { +/// fn combine(&self, _: Self::Elem, _: Self::Elem, abort: AbortSignal) -> Result { /// FatalError::from_str( /// "This operation will always fail.", /// FatalStrategy::default() @@ -237,6 +239,7 @@ pub enum FatalStrategy { /// runtime::Runtime, /// operation::{Operation, Monoid, Result}, /// directive::{Directive, IndexedStream, indexed_stream::try_from_into_iterator}, +/// AbortSignal /// }; /// use serde::{Deserialize, Serialize}; /// @@ -250,7 +253,7 @@ pub enum FatalStrategy { /// 0 /// } /// -/// fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result { +/// fn combine(&self, a: Self::Elem, b: Self::Elem, abort: AbortSignal) -> Result { /// Ok(a * b) /// } /// } @@ -284,6 +287,7 @@ pub enum FatalStrategy { /// FatalStrategy /// }, /// directive::{Directive, IndexedStream}, +/// AbortSignal, /// }; /// use serde::{Deserialize, Serialize}; /// use std::sync::{Arc, atomic::{Ordering, AtomicBool}}; @@ -300,7 +304,7 @@ pub enum FatalStrategy { /// 0 /// } /// -/// fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result { +/// fn combine(&self, a: Self::Elem, b: Self::Elem, abort: AbortSignal) -> Result { /// if DID_TRY.swap(true, Ordering::SeqCst) { /// return Ok(a * b); /// } @@ -342,6 +346,7 @@ pub enum FatalStrategy { /// FatalStrategy /// }, /// directive::{Directive, IndexedStream}, +/// AbortSignal, /// }; /// use serde::{Deserialize, Serialize}; /// @@ -358,7 +363,7 @@ pub enum FatalStrategy { /// 0 /// } /// -/// fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result { +/// fn combine(&self, a: Self::Elem, b: Self::Elem, abort: AbortSignal) -> Result { /// let prev = NUM_TRIES.fetch_add(1, Ordering::SeqCst); /// /// TransientError::from_str( diff --git a/paladin-core/src/operation/mod.rs b/paladin-core/src/operation/mod.rs index 41a0c75..3b42609 100644 --- a/paladin-core/src/operation/mod.rs +++ b/paladin-core/src/operation/mod.rs @@ -32,7 +32,7 @@ //! ### Defining an [`Operation`]: //! //! ``` -//! use paladin::{RemoteExecute, operation::{Operation, Result}}; +//! use paladin::{RemoteExecute, operation::{Operation, Result}, AbortSignal}; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Serialize, Deserialize, RemoteExecute)] @@ -42,7 +42,7 @@ //! type Input = String; //! type Output = usize; //! -//! fn execute(&self, input: Self::Input) -> Result { +//! fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { //! Ok(input.len()) //! } //! } @@ -51,7 +51,7 @@ //! ### Defining a [`Monoid`]: //! //! ``` -//! use paladin::{RemoteExecute, operation::{Monoid, Operation, Result}}; +//! use paladin::{RemoteExecute, operation::{Monoid, Operation, Result}, AbortSignal}; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Serialize, Deserialize, RemoteExecute)] @@ -60,7 +60,7 @@ //! impl Monoid for StringConcat { //! type Elem = String; //! -//! fn combine(&self, a: Self::Elem, b: Self::Elem) -> Result { +//! fn combine(&self, a: Self::Elem, b: Self::Elem, abort: AbortSignal) -> Result { //! Ok(a + &b) //! } //! @@ -73,7 +73,7 @@ //! ### An [`Operation`] with constructor arguments: //! //! ``` -//! use paladin::{RemoteExecute, operation::{Monoid, Operation, Result}}; +//! use paladin::{RemoteExecute, operation::{Monoid, Operation, Result}, AbortSignal}; //! use serde::{Deserialize, Serialize}; //! //! #[derive(Serialize, Deserialize, RemoteExecute)] @@ -83,7 +83,7 @@ //! type Input = i32; //! type Output = i32; //! -//! fn execute(&self, input: Self::Input) -> Result { +//! fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { //! Ok(self.0 * input) //! } //! } @@ -117,11 +117,7 @@ pub trait Operation: RemoteExecute + Serializable { type Output: Serializable + Debug; /// Execute the operation on the given input. - fn execute( - &self, - input: Self::Input, - abort_signal: Option>, - ) -> Result; + fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result; /// Get the input from a byte representation. fn input_from_bytes(&self, serializer: Serializer, input: &[u8]) -> Result { @@ -142,10 +138,10 @@ pub trait Operation: RemoteExecute + Serializable { &self, serializer: Serializer, input: &[u8], - abort_signal: Option>, + abort: AbortSignal, ) -> Result { self.input_from_bytes(serializer, input) - .and_then(|input| self.execute(input, abort_signal)) + .and_then(|input| self.execute(input, abort)) .and_then(|output| self.output_to_bytes(serializer, output)) } @@ -179,12 +175,7 @@ pub trait Monoid: RemoteExecute + Serializable { fn empty(&self) -> Self::Elem; /// Combine two elements using the operation. - fn combine( - &self, - a: Self::Elem, - b: Self::Elem, - abort_signal: Option>, - ) -> Result; + fn combine(&self, a: Self::Elem, b: Self::Elem, abort: AbortSignal) -> Result; } /// Implement the [`Operation`] trait for types that support the binary @@ -199,12 +190,8 @@ where type Output = T::Elem; /// Execute the operation on the given input. - fn execute( - &self, - (a, b): Self::Input, - abort_signal: Option>, - ) -> Result { - self.combine(a, b, abort_signal) + fn execute(&self, (a, b): Self::Input, abort: AbortSignal) -> Result { + self.combine(a, b, abort) } } @@ -252,7 +239,7 @@ pub mod marker { /// /// In `my_operations`, you define your operations: /// ``` -/// use paladin::{registry, RemoteExecute, operation::{Operation, Result}}; +/// use paladin::{registry, RemoteExecute, operation::{Operation, Result}, AbortSignal}; /// use serde::{Deserialize, Serialize}; /// /// #[derive(Serialize, Deserialize, RemoteExecute)] @@ -262,7 +249,7 @@ pub mod marker { /// type Input = (); /// type Output = (); /// -/// fn execute(&self, _input: Self::Input) -> Result { +/// fn execute(&self, _input: Self::Input, abort: AbortSignal) -> Result { /// Ok(()) /// } /// } @@ -275,7 +262,7 @@ pub mod marker { /// In `my_worker`, you instantiate the worker runtime: /// ``` /// # mod my_operations { -/// # use paladin::{registry, RemoteExecute, operation::{Operation, Result}}; +/// # use paladin::{registry, RemoteExecute, operation::{Operation, Result}, AbortSignal}; /// # use serde::{Deserialize, Serialize}; /// # /// # #[derive(Serialize, Deserialize, RemoteExecute)] @@ -285,7 +272,7 @@ pub mod marker { /// # type Input = (); /// # type Output = (); /// # -/// # fn execute(&self, _input: Self::Input) -> Result { +/// # fn execute(&self, _input: Self::Input, abort: AbortSignal) -> Result { /// # Ok(()) /// # } /// # } @@ -321,3 +308,5 @@ macro_rules! registry { mod error; pub use error::*; + +use crate::AbortSignal; diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index d22b789..b08b990 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -265,6 +265,7 @@ impl Runtime { /// runtime::Runtime, /// task::Task, /// operation::{Operation, Result}, + /// AbortSignal, /// }; /// use serde::{Deserialize, Serialize}; /// use futures::StreamExt; @@ -279,7 +280,7 @@ impl Runtime { /// # type Input = String; /// # type Output = usize; /// # - /// # fn execute(&self, input: Self::Input) -> Result { + /// # fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { /// # Ok(input.len()) /// # } /// # } @@ -505,6 +506,7 @@ impl WorkerRuntime { /// registry, /// runtime::WorkerRuntime, /// operation::{Operation, Result}, + /// AbortSignal /// }; /// use serde::{Deserialize, Serialize}; /// use futures::StreamExt; @@ -516,7 +518,7 @@ impl WorkerRuntime { /// # type Input = String; /// # type Output = usize; /// # - /// # fn execute(&self, input: Self::Input) -> Result { + /// # fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { /// # Ok(input.len()) /// # } /// # } @@ -622,6 +624,7 @@ impl WorkerRuntime { /// task::Task, /// operation::{Result, Operation}, /// registry, + /// AbortSignal /// }; /// use clap::Parser; /// use serde::{Deserialize, Serialize}; @@ -631,7 +634,7 @@ impl WorkerRuntime { /// # type Input = String; /// # type Output = usize; /// # - /// # fn execute(&self, input: Self::Input) -> Result { + /// # fn execute(&self, input: Self::Input, abort: AbortSignal) -> Result { /// # Ok(input.len()) /// # } /// # } @@ -720,7 +723,7 @@ impl WorkerRuntime { } while let Some((payload, acker)) = task_stream.next().await { - let abort_signal = Arc::new(std::sync::atomic::AtomicBool::new(false)); + let abort = Arc::new(std::sync::atomic::AtomicBool::new(false)); // Skip tasks associated with terminated jobs. if terminated_jobs.contains_key(&payload.clone().routing_key) { trace!(routing_key = %payload.clone().routing_key, "skipping terminated job"); @@ -733,9 +736,7 @@ impl WorkerRuntime { let routing_key_clone = routing_key.clone(); let span = debug_span!("remote_execute", routing_key = %routing_key_clone); - let execution_task = payload - .remote_execute(Some(abort_signal.clone())) - .instrument(span); + let execution_task = payload.remote_execute(Some(abort.clone())).instrument(span); // Create a future that will wait for an IPC termination signal. let ipc_sig_term = { @@ -747,7 +748,7 @@ impl WorkerRuntime { if received_key == routing_key_clone || received_key == COMMAND_IPC_ABORT_ALL_KEY { - abort_signal.store(true, Ordering::SeqCst); + abort.store(true, Ordering::SeqCst); tokio::time::sleep(ABORT_SIGNAL_SHUTDOWN_INTERVAL).await; return true; } diff --git a/paladin-core/src/task/mod.rs b/paladin-core/src/task/mod.rs index 266d210..4d7b576 100644 --- a/paladin-core/src/task/mod.rs +++ b/paladin-core/src/task/mod.rs @@ -14,6 +14,7 @@ use crate::{ __private::OPERATIONS, operation::Operation, serializer::{Serializable, Serializer}, + AbortSignal, }; /// A [`Task`] encodes an [`Operation`] paired with arguments. @@ -163,8 +164,8 @@ impl AnyTask { /// slice. pub async fn remote_execute( self, - abort_signal: Option>, + abort: AbortSignal, ) -> crate::operation::Result { - OPERATIONS[self.operation_id as usize](self, abort_signal).await + OPERATIONS[self.operation_id as usize](self, abort).await } } From 6740678cf8e77b3b0d111fd3afdb69685bacef1d Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Wed, 23 Oct 2024 16:03:00 +0200 Subject: [PATCH 09/14] fix: tests 2 --- examples/hello-world-rabbitmq/docker-compose.yml | 2 +- paladin-opkind-derive/src/lib.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/hello-world-rabbitmq/docker-compose.yml b/examples/hello-world-rabbitmq/docker-compose.yml index 1c3c0ee..63add85 100644 --- a/examples/hello-world-rabbitmq/docker-compose.yml +++ b/examples/hello-world-rabbitmq/docker-compose.yml @@ -10,7 +10,7 @@ services: environment: - RUST_LOG=info - AMQP_URI=amqp://rabbitmq:5672 - - JOB_TIMEOUT=30 + - JOB_TIMEOUT=60 worker: build: context: ../../ diff --git a/paladin-opkind-derive/src/lib.rs b/paladin-opkind-derive/src/lib.rs index becbd43..d0de2ca 100644 --- a/paladin-opkind-derive/src/lib.rs +++ b/paladin-opkind-derive/src/lib.rs @@ -109,7 +109,7 @@ pub fn operation_derive(input: TokenStream) -> TokenStream { #[#paladin_path::__private::linkme::distributed_slice(#paladin_path::__private::OPERATIONS)] #linkme_path_override - fn #function_name(task: #paladin_path::task::AnyTask, abort_signal: Option>,) -> #paladin_path::__private::futures::future::BoxFuture< + fn #function_name(task: #paladin_path::task::AnyTask, abort: #paladin_path::AbortSignal,) -> #paladin_path::__private::futures::future::BoxFuture< 'static, #paladin_path::operation::Result<#paladin_path::task::AnyTaskOutput> > { @@ -118,7 +118,7 @@ pub fn operation_derive(input: TokenStream) -> TokenStream { let get_result = || async { // Deserialize the operation. let op = #name::from_bytes(task.serializer, &task.op)?; - let abort_signal = abort_signal.clone(); + let abort = abort.clone(); // Deserialize the input. let input = op.input_from_bytes(task.serializer, &task.input)?; @@ -128,7 +128,7 @@ pub fn operation_derive(input: TokenStream) -> TokenStream { let output = #paladin_path::__private::tokio::task::spawn_blocking(move || { // Execute the operation, catching panics. let typed_output = std::panic::catch_unwind(::std::panic::AssertUnwindSafe(|| - op.execute(input, abort_signal) + op.execute(input, abort) )) // Convert panics to fatal operation errors. .map_err(|_| #paladin_path::operation::FatalError::from_str( From 545620e21d1636db8d03c8d015dfca1e66dc2d08 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 1 Nov 2024 12:06:30 +0100 Subject: [PATCH 10/14] fix: abort signal --- paladin-core/src/runtime/mod.rs | 44 ++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index b08b990..70d93c4 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -59,7 +59,7 @@ use dashmap::{mapref::entry::Entry, DashMap}; use futures::{stream::BoxStream, Stream, StreamExt}; use serde::{Deserialize, Serialize}; use tokio::{select, task::JoinHandle, try_join}; -use tracing::{debug_span, error, instrument, trace, warn, Instrument}; +use tracing::{debug, debug_span, error, instrument, trace, warn, Instrument}; use self::dynamic_channel::{DynamicChannel, DynamicChannelFactory}; use crate::{ @@ -420,7 +420,6 @@ pub struct ExecutionErr { /// Command and error inter-process messages between leader and workers. #[derive(Debug, Clone, Serialize, Deserialize)] pub enum CommandIpc { - ExecutionError { routing_key: String }, Abort { routing_key: String }, } @@ -568,16 +567,18 @@ impl WorkerRuntime { match strategy { FatalStrategy::Ignore => Ok(()), FatalStrategy::Terminate => { - // Notify other workers of the error. + // Notify leader of the error. Send abort command to all workers. let (ipc, sender) = try_join!( self.get_command_ipc_sender(), self.get_result_sender(routing_key.clone()) )?; - let ipc_msg = CommandIpc::ExecutionError { routing_key }; + let abort_ipc_msg = CommandIpc::Abort { + routing_key: COMMAND_IPC_ABORT_ALL_KEY.to_string(), + }; let sender_msg = AnyTaskResult::Err(err.to_string()); - try_join!(ipc.publish(&ipc_msg), sender.publish(&sender_msg))?; + try_join!(ipc.publish(&abort_ipc_msg), sender.publish(&sender_msg))?; try_join!(ipc.close(), sender.close())?; Ok(()) @@ -682,6 +683,7 @@ impl WorkerRuntime { // Create a watch channel for signaling IPC changes while processing a task. let (ipc_sig_term_tx, ipc_sig_term_rx) = tokio::sync::watch::channel::(identifier); + let abort_worker_execution = Arc::new(std::sync::atomic::AtomicBool::new(false)); // Spawn a task that will listen for IPC termination signals and mark jobs as // terminated. @@ -692,12 +694,10 @@ impl WorkerRuntime { async move { while let Some(ipc) = command_receiver.next().await { match ipc { - CommandIpc::ExecutionError { routing_key } - | CommandIpc::Abort { routing_key } => { + CommandIpc::Abort { routing_key } => { // Mark the job as terminated if it hasn't been already. if mark_terminated(&terminated_jobs, routing_key.clone()) { - warn!(routing_key = %routing_key, "received IPC termination signal"); - // Notify any currently executing tasks of the error. + // Notify any currently executing task about the termination. ipc_sig_term_tx.send_replace(routing_key.clone()); } } @@ -723,7 +723,12 @@ impl WorkerRuntime { } while let Some((payload, acker)) = task_stream.next().await { - let abort = Arc::new(std::sync::atomic::AtomicBool::new(false)); + // If abort condition was previously set for some reason, stop processing tasks. + if abort_worker_execution.load(Ordering::SeqCst) { + warn!("stopping worker execution due to abort flag"); + break; + } + // Skip tasks associated with terminated jobs. if terminated_jobs.contains_key(&payload.clone().routing_key) { trace!(routing_key = %payload.clone().routing_key, "skipping terminated job"); @@ -736,7 +741,9 @@ impl WorkerRuntime { let routing_key_clone = routing_key.clone(); let span = debug_span!("remote_execute", routing_key = %routing_key_clone); - let execution_task = payload.remote_execute(Some(abort.clone())).instrument(span); + let execution_task = payload + .remote_execute(Some(abort_worker_execution.clone())) + .instrument(span); // Create a future that will wait for an IPC termination signal. let ipc_sig_term = { @@ -745,11 +752,11 @@ impl WorkerRuntime { loop { ipc_sig_term_rx.changed().await.expect("IPC channel closed"); let received_key = ipc_sig_term_rx.borrow().clone(); - if received_key == routing_key_clone - || received_key == COMMAND_IPC_ABORT_ALL_KEY - { - abort.store(true, Ordering::SeqCst); - tokio::time::sleep(ABORT_SIGNAL_SHUTDOWN_INTERVAL).await; + debug!(routing_key = %routing_key, "received IPC termination signal with key: {received_key}"); + + if received_key == COMMAND_IPC_ABORT_ALL_KEY { + warn!(routing_key = %routing_key, "worker abort signal received"); + abort_worker_execution.store(true, Ordering::SeqCst); return true; } } @@ -785,8 +792,11 @@ impl WorkerRuntime { } } _ = ipc_sig_term => { - warn!(routing_key = %routing_key, "task cancelled via IPC sigterm"); _ = acker.nack().await; + // Give time to the execution_task to finish gracefully on abort signal before shutting down. + tokio::time::sleep(ABORT_SIGNAL_SHUTDOWN_INTERVAL).await; + warn!(routing_key = %routing_key, "worker execution stopped via IPC sigterm"); + break; } } } From 532f78bba7ecbf37718fa2a8dd8d668672aacc69 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 1 Nov 2024 16:29:23 +0100 Subject: [PATCH 11/14] fix: clippy --- paladin-core/src/directive/indexed_stream/mod.rs | 2 +- paladin-core/src/runtime/mod.rs | 2 ++ paladin-core/src/task/mod.rs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/paladin-core/src/directive/indexed_stream/mod.rs b/paladin-core/src/directive/indexed_stream/mod.rs index edc4970..9e32850 100644 --- a/paladin-core/src/directive/indexed_stream/mod.rs +++ b/paladin-core/src/directive/indexed_stream/mod.rs @@ -190,7 +190,7 @@ where /// /// This is a passthrough implementation, which simply delegates to the inner /// stream. -impl<'a, T> Stream for IndexedStream<'a, T> { +impl Stream for IndexedStream<'_, T> { type Item = Result<(usize, T)>; fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index 70d93c4..5c08e95 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -748,6 +748,8 @@ impl WorkerRuntime { // Create a future that will wait for an IPC termination signal. let ipc_sig_term = { let mut ipc_sig_term_rx = ipc_sig_term_rx.clone(); + let abort_worker_execution = abort_worker_execution.clone(); + let routing_key = routing_key.clone(); async move { loop { ipc_sig_term_rx.changed().await.expect("IPC channel closed"); diff --git a/paladin-core/src/task/mod.rs b/paladin-core/src/task/mod.rs index 4d7b576..780f81d 100644 --- a/paladin-core/src/task/mod.rs +++ b/paladin-core/src/task/mod.rs @@ -116,7 +116,7 @@ pub enum AnyTaskResult { Err(String), } -impl<'a, Op: Operation, Metadata: Serializable> Task<'a, Op, Metadata> { +impl Task<'_, Op, Metadata> { /// Convert a [`Task`] into an opaque [`AnyTask`]. pub fn as_any_task(&self, serializer: Serializer) -> Result { let routing_key = self.routing_key.clone(); From a9181dc94cda08a7da6b30969cc09389e77c80f5 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 1 Nov 2024 16:35:57 +0100 Subject: [PATCH 12/14] fix: comment --- paladin-core/src/runtime/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index 5c08e95..4ae78d5 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -663,6 +663,7 @@ impl WorkerRuntime { let mut task_stream = self.get_task_receiver().await?; const TERMINATION_CLEAR_INTERVAL: Duration = Duration::from_secs(60); + // Give some time to executed tasks to gracefully finish const ABORT_SIGNAL_SHUTDOWN_INTERVAL: Duration = Duration::from_secs(10); // Keep track of terminated jobs to avoid processing new tasks associated to // them. From eb0376800e85d762dfb349cad415ee14c57f190f Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Fri, 1 Nov 2024 17:34:27 +0100 Subject: [PATCH 13/14] fix: debug output --- paladin-core/src/runtime/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paladin-core/src/runtime/mod.rs b/paladin-core/src/runtime/mod.rs index 4ae78d5..cdd8f6c 100644 --- a/paladin-core/src/runtime/mod.rs +++ b/paladin-core/src/runtime/mod.rs @@ -755,7 +755,8 @@ impl WorkerRuntime { loop { ipc_sig_term_rx.changed().await.expect("IPC channel closed"); let received_key = ipc_sig_term_rx.borrow().clone(); - debug!(routing_key = %routing_key, "received IPC termination signal with key: {received_key}"); + debug!(routing_key = %routing_key, received_key = %received_key, + "received IPC termination signal"); if received_key == COMMAND_IPC_ABORT_ALL_KEY { warn!(routing_key = %routing_key, "worker abort signal received"); From ba2a958a202f7a68768444887d883f25b0265105 Mon Sep 17 00:00:00 2001 From: Marko Atanasievski Date: Wed, 6 Nov 2024 12:20:57 +0100 Subject: [PATCH 14/14] fix: revert version to make the separate release PR --- paladin-core/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paladin-core/Cargo.toml b/paladin-core/Cargo.toml index 37e12fd..af21a2c 100644 --- a/paladin-core/Cargo.toml +++ b/paladin-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "paladin-core" -version = "0.4.4" +version = "0.4.3" description = "A Rust distributed algorithm toolkit. Write distributed algorithms without the complexities of distributed systems programming." license.workspace = true edition.workspace = true