From c4ed6439f7708e538c59145925eb6efeebe6447e Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 10:50:49 +0100 Subject: [PATCH 1/7] dependencies: switched from rabbitmq-stream-client to lapin as rabbitmq client --- Cargo.lock | 1336 ++++++++++++++++++++++++++++++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 1031 insertions(+), 307 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2959ad3..7986b19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,17 @@ 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 = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -27,18 +38,51 @@ dependencies = [ ] [[package]] -name = "android-tzdata" -version = "0.1.1" +name = "amq-protocol" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +checksum = "e3a41c091e49edfcc098b4f90d4d7706a8cf9158034e84ebfee7ff346092f67c" +dependencies = [ + "amq-protocol-tcp", + "amq-protocol-types", + "amq-protocol-uri", + "cookie-factory", + "nom", + "serde", +] [[package]] -name = "android_system_properties" -version = "0.1.5" +name = "amq-protocol-tcp" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "3ed7a4a662472f88823ed2fc81babb0b00562f2c54284e3e7bffc02b6df649bf" dependencies = [ - "libc", + "amq-protocol-uri", + "tcp-stream", + "tracing", +] + +[[package]] +name = "amq-protocol-types" +version = "7.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6484fdc918c1b6e2ae8eda2914d19a5873e1975f93ad8d33d6a24d1d98df05" +dependencies = [ + "cookie-factory", + "nom", + "serde", + "serde_json", +] + +[[package]] +name = "amq-protocol-uri" +version = "7.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7f2da69e0e1182765bf33407cd8a843f20791b5af2b57a2645818c4776c56c" +dependencies = [ + "amq-protocol-types", + "percent-encoding", + "url", ] [[package]] @@ -53,6 +97,45 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +[[package]] +name = "asn1-rs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "607495ec7113b178fbba7a6166a27f99e774359ef4823adbefd756b5b81d7970" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +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" @@ -84,8 +167,8 @@ checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand", - "futures-lite", + "fastrand 2.3.0", + "futures-lite 2.6.0", "slab", ] @@ -97,32 +180,72 @@ checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ "async-channel 2.3.1", "async-executor", - "async-io", - "async-lock", + "async-io 2.4.0", + "async-lock 3.4.0", "blocking", - "futures-lite", + "futures-lite 2.6.0", "once_cell", ] +[[package]] +name = "async-global-executor-trait" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f19936c1a84fb48ceb8899b642d2a72572587d1021cc561bfb24de9f33ee89" +dependencies = [ + "async-global-executor", + "async-trait", + "executor-trait", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.28", + "slab", + "socket2 0.4.10", + "waker-fn", +] + [[package]] name = "async-io" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ - "async-lock", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite", + "futures-lite 2.6.0", "parking", - "polling", - "rustix", + "polling 3.7.4", + "rustix 0.38.44", "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 2.5.3", +] + [[package]] name = "async-lock" version = "3.4.0" @@ -134,6 +257,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-reactor-trait" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6012d170ad00de56c9ee354aef2e358359deb1ec504254e0e5a3774771de0e" +dependencies = [ + "async-io 1.13.0", + "async-trait", + "futures-core", + "reactor-trait", +] + [[package]] name = "async-std" version = "1.13.0" @@ -142,13 +277,13 @@ checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" dependencies = [ "async-channel 1.9.0", "async-global-executor", - "async-io", - "async-lock", + "async-io 2.4.0", + "async-lock 3.4.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite", + "futures-lite 2.6.0", "gloo-timers", "kv-log-macro", "log", @@ -270,20 +405,26 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] -name = "base64" -version = "0.22.1" +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" @@ -291,6 +432,24 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + [[package]] name = "blocking" version = "1.6.1" @@ -300,7 +459,7 @@ dependencies = [ "async-channel 2.3.1", "async-task", "futures-io", - "futures-lite", + "futures-lite 2.6.0", "piper", ] @@ -322,6 +481,15 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + [[package]] name = "cc" version = "1.2.11" @@ -338,17 +506,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "chrono" -version = "0.4.39" +name = "cipher" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-targets", + "crypto-common", + "inout", +] + +[[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]] @@ -356,8 +532,8 @@ name = "code0-flow" version = "0.0.0" dependencies = [ "async-trait", + "lapin", "log", - "rabbitmq-stream-client", "redis", "serde_json", "tokio", @@ -388,10 +564,26 @@ dependencies = [ ] [[package]] -name = "convert_case" -version = "0.4.0" +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 = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] name = "core-foundation-sys" @@ -399,6 +591,15 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -406,32 +607,88 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "dashmap" -version = "6.1.0" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", + "generic-array", + "typenum", ] [[package]] -name = "derive_more" -version = "0.99.18" +name = "data-encoding" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" + +[[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 = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +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 = [ - "convert_case", "proc-macro2", "quote", - "rustc_version", "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" +dependencies = [ + "cipher", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -443,6 +700,12 @@ dependencies = [ "syn", ] +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + [[package]] name = "either" version = "1.13.0" @@ -492,6 +755,24 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "executor-trait" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c39dff9342e4e0e16ce96be751eb21a94e94a87bb2f6e63ad1961c2ce109bf" +dependencies = [ + "async-trait", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -504,6 +785,23 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "flagset" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + [[package]] name = "fnv" version = "1.0.7" @@ -519,21 +817,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.31" @@ -541,7 +824,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", - "futures-sink", ] [[package]] @@ -550,17 +832,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - [[package]] name = "futures-io" version = "0.3.31" @@ -569,26 +840,30 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "futures-io", + "memchr", "parking", "pin-project-lite", + "waker-fn", ] [[package]] -name = "futures-macro" -version = "0.3.31" +name = "futures-lite" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ - "proc-macro2", - "quote", - "syn", + "fastrand 2.3.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", ] [[package]] @@ -609,18 +884,24 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", - "futures-io", - "futures-macro", "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.15" @@ -641,7 +922,7 @@ dependencies = [ "cfg-if", "libc", "wasi 0.13.3+wasi-0.2.2", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -687,12 +968,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - [[package]] name = "hashbrown" version = "0.15.2" @@ -705,12 +980,33 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "http" version = "1.2.0" @@ -804,35 +1100,12 @@ dependencies = [ "http-body", "hyper", "pin-project-lite", - "socket2", + "socket2 0.5.8", "tokio", "tower-service", "tracing", ] -[[package]] -name = "iana-time-zone" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - [[package]] name = "icu_collections" version = "1.5.0" @@ -992,6 +1265,36 @@ dependencies = [ "hashbrown 0.15.2", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "itertools" version = "0.13.0" @@ -1026,12 +1329,46 @@ dependencies = [ "log", ] +[[package]] +name = "lapin" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "209b09a06f4bd4952a0fd0594f90d53cf4496b062f59acc838a2823e1bb7d95c" +dependencies = [ + "amq-protocol", + "async-global-executor-trait", + "async-reactor-trait", + "async-trait", + "executor-trait", + "flume", + "futures-core", + "futures-io", + "parking_lot", + "pinky-swear", + "reactor-trait", + "serde", + "tracing", + "waker-fn", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -1081,6 +1418,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.3" @@ -1108,10 +1451,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] -name = "murmur3" -version = "0.5.2" +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] [[package]] name = "num-bigint" @@ -1123,6 +1470,12 @@ dependencies = [ "num-traits", ] +[[package]] +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" @@ -1142,33 +1495,21 @@ dependencies = [ ] [[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" +name = "object" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", + "memchr", ] [[package]] -name = "object" -version = "0.36.7" +name = "oid-registry" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "264c56d1492c13e769662197fb6b94e0a52abe52d27efac374615799a4bf453d" dependencies = [ - "memchr", + "asn1-rs", ] [[package]] @@ -1178,12 +1519,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] -name = "ordered-float" -version = "4.6.0" +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "p12-keystore" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +checksum = "a09eaa3a6d8884c204c2ab17e313f563b524362e62567f09ba27857a6e31257f" dependencies = [ - "num-traits", + "cbc", + "cms", + "der", + "des", + "hex", + "hmac", + "pkcs12", + "pkcs5", + "rand 0.9.0", + "rc2", + "sha1", + "sha2", + "thiserror", + "x509-parser", ] [[package]] @@ -1212,7 +1572,26 @@ dependencies = [ "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]] @@ -1263,6 +1642,18 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pinky-swear" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cfae3ead413ca051a681152bd266438d3bfa301c9bdf836939a14c721bb2a21" +dependencies = [ + "doc-comment", + "flume", + "parking_lot", + "tracing", +] + [[package]] name = "piper" version = "0.2.4" @@ -1270,10 +1661,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand", + "fastrand 2.3.0", "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + [[package]] name = "polling" version = "3.7.4" @@ -1282,20 +1719,26 @@ checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", - "rustix", + "rustix 0.38.44", "tracing", "windows-sys 0.59.0", ] +[[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.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -1308,15 +1751,6 @@ dependencies = [ "syn", ] -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - [[package]] name = "proc-macro2" version = "1.0.93" @@ -1388,71 +1822,84 @@ dependencies = [ ] [[package]] -name = "rabbitmq-stream-client" -version = "0.7.0" +name = "rand" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45321d9731c5121e3d769f05e3d06fe03649b04b649b8054a77dcf149277da3d" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "async-trait", - "bytes", - "dashmap", - "futures", - "murmur3", - "pin-project", - "rabbitmq-stream-protocol", - "rand", - "rustls-pemfile", - "thiserror", - "tokio", - "tokio-rustls", - "tokio-stream", - "tokio-util", - "tracing", - "url", + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", + "zerocopy 0.8.15", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", ] [[package]] -name = "rabbitmq-stream-protocol" -version = "0.7.0" +name = "rand_core" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4acb05c1d51f5836f7358281890ac36d19092dc2095d71f4f577dbbfabcf13" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "byteorder", - "chrono", - "derive_more", - "num_enum", - "ordered-float", - "uuid", + "getrandom 0.2.15", ] [[package]] -name = "rand" -version = "0.8.5" +name = "rand_core" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" dependencies = [ - "libc", - "rand_chacha", - "rand_core", + "getrandom 0.3.1", + "zerocopy 0.8.15", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "rc2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "62c64daa8e9438b84aaae55010a93f396f8e60e3911590fcba770d04643fc1dd" dependencies = [ - "ppv-lite86", - "rand_core", + "cipher", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "reactor-trait" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "438a4293e4d097556730f4711998189416232f009c137389e0f961d2bc0ddc58" dependencies = [ - "getrandom 0.2.15", + "async-trait", + "futures-core", + "futures-io", ] [[package]] @@ -1472,7 +1919,7 @@ dependencies = [ "pin-project-lite", "ryu", "sha1_smol", - "socket2", + "socket2 0.5.8", "tokio", "tokio-util", "url", @@ -1484,7 +1931,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags", + "bitflags 2.8.0", ] [[package]] @@ -1538,12 +1985,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "rustc_version" -version = "0.4.1" +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.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" dependencies = [ - "semver", + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", ] [[package]] @@ -1552,41 +2013,76 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags", + "bitflags 2.8.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.21.12" +version = "0.23.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" dependencies = [ - "log", + "once_cell", "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-connector" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a980454b497c439c274f2feae2523ed8138bbd3d323684e1435fec62f800481" +dependencies = [ + "log", + "rustls", + "rustls-native-certs", + "rustls-pki-types", "rustls-webpki", - "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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 0.21.7", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + [[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", ] @@ -1602,6 +2098,24 @@ version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +[[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.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -1609,20 +2123,38 @@ 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.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.8.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] -name = "semver" -version = "1.0.25" +name = "security-framework-sys" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] name = "serde" @@ -1656,6 +2188,17 @@ dependencies = [ "serde", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sha1_smol" version = "1.0.1" @@ -1663,19 +2206,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] -name = "shlex" -version = "1.3.0" +name = "sha2" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "slab" @@ -1692,6 +2237,16 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "socket2" version = "0.5.8" @@ -1707,6 +2262,19 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +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" @@ -1714,6 +2282,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "2.0.98" @@ -1742,6 +2316,18 @@ dependencies = [ "syn", ] +[[package]] +name = "tcp-stream" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "495b0abdce3dc1f8fd27240651c9e68890c14e9d9c61527b1ce44d8a5a7bd3d5" +dependencies = [ + "cfg-if", + "p12-keystore", + "rustls-connector", + "rustls-pemfile", +] + [[package]] name = "tempfile" version = "3.16.0" @@ -1749,10 +2335,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", - "fastrand", + "fastrand 2.3.0", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 0.38.44", "windows-sys 0.59.0", ] @@ -1776,6 +2362,37 @@ dependencies = [ "syn", ] +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +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.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -1796,10 +2413,8 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot", "pin-project-lite", - "signal-hook-registry", - "socket2", + "socket2 0.5.8", "tokio-macros", "windows-sys 0.52.0", ] @@ -1815,16 +2430,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls", - "tokio", -] - [[package]] name = "tokio-stream" version = "0.1.17" @@ -1849,23 +2454,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" - -[[package]] -name = "toml_edit" -version = "0.22.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" -dependencies = [ - "indexmap 2.7.1", - "toml_datetime", - "winnow", -] - [[package]] name = "tonic" version = "0.12.3" @@ -1875,7 +2463,7 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.22.1", + "base64", "bytes", "h2", "http", @@ -1887,7 +2475,7 @@ dependencies = [ "percent-encoding", "pin-project", "prost", - "socket2", + "socket2 0.5.8", "tokio", "tokio-stream", "tower 0.4.13", @@ -1921,7 +2509,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -2007,6 +2595,12 @@ dependencies = [ "tonic-build", ] +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unicode-ident" version = "1.0.16" @@ -2042,18 +2636,24 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "uuid" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" - [[package]] name = "value-bag" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "waker-fn" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" + [[package]] name = "want" version = "0.3.1" @@ -2160,12 +2760,34 @@ dependencies = [ ] [[package]] -name = "windows-core" -version = "0.52.0" +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -2174,7 +2796,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -2183,7 +2805,22 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "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]] @@ -2192,28 +2829,46 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "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]] +name = "windows_aarch64_gnullvm" +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" @@ -2226,18 +2881,36 @@ 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" @@ -2246,18 +2919,15 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.6" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "winnow" -version = "0.7.0" +name = "windows_x86_64_msvc" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e49d2d35d3fad69b39b94139037ecfb4f359f08958b9c11e7315ce770462419" -dependencies = [ - "memchr", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "wit-bindgen-rt" @@ -2265,7 +2935,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags", + "bitflags 2.8.0", ] [[package]] @@ -2280,6 +2950,34 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +[[package]] +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.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + [[package]] name = "yoke" version = "0.7.5" @@ -2311,7 +3009,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e101d4bc320b6f9abb68846837b70e25e380ca2f467ab494bf29fcc435fcc3" +dependencies = [ + "zerocopy-derive 0.8.15", ] [[package]] @@ -2325,6 +3032,17 @@ dependencies = [ "syn", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a73df1008145cd135b3c780d275c57c3e6ba8324a41bd5e0008fe167c3bc7c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zerofrom" version = "0.1.5" @@ -2346,6 +3064,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zerovec" version = "0.10.4" diff --git a/Cargo.toml b/Cargo.toml index d6d6457..d893d79 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ async-trait = "0.1.85" log = "0.4.24" redis = { version = "0.28.0", features = ["aio", "tokio-comp", "async-std-comp"] } serde_json = "1.0.138" -rabbitmq-stream-client = "0.7.0" +lapin = "2.5.0" [lib] doctest = true From 5c1e43c3f21133aaddac702d476718e2e8ddd853 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 10:51:04 +0100 Subject: [PATCH 2/7] feat: added queue name struct --- src/flow_queue/mod.rs | 3 ++- src/flow_queue/{service.rs => name.rs} | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) rename src/flow_queue/{service.rs => name.rs} (86%) diff --git a/src/flow_queue/mod.rs b/src/flow_queue/mod.rs index 69cccb6..8e2ce1e 100644 --- a/src/flow_queue/mod.rs +++ b/src/flow_queue/mod.rs @@ -1,2 +1,3 @@ pub mod connection; -pub mod service; \ No newline at end of file +pub mod name; +pub mod handler; \ No newline at end of file diff --git a/src/flow_queue/service.rs b/src/flow_queue/name.rs similarity index 86% rename from src/flow_queue/service.rs rename to src/flow_queue/name.rs index 757a91d..8aa3ce7 100644 --- a/src/flow_queue/service.rs +++ b/src/flow_queue/name.rs @@ -1,5 +1,10 @@ use std::ops::Add; +pub struct QueueName { + pub prefix: QueuePrefix, + pub protocol: QueueProtocol, +} + /// # Queue Prefix /// - Every incoming message will have the `Send` prefix /// - Every processed message (answer) from taurus will have the `Receive` prefix @@ -16,12 +21,11 @@ pub enum QueueProtocol { /// Implementation to turn a protocol into a str impl QueueProtocol { - /// Function to turn a protocol into a str /// /// # Example: /// ``` - /// use code0_flow::flow_queue::service::QueueProtocol; + /// use code0_flow::flow_queue::name::QueueProtocol; /// let proto_str = QueueProtocol::Rest.as_str().to_string(); /// let result = "REST".to_string(); /// @@ -43,7 +47,7 @@ impl Add for QueuePrefix { /// /// # Example: /// ``` - /// use code0_flow::flow_queue::service::{QueuePrefix, QueueProtocol}; + /// use code0_flow::flow_queue::name::{QueuePrefix, QueueProtocol}; /// let send_rest_queue_name = QueuePrefix::Send + QueueProtocol::Rest; /// let result = "S_REST".to_string(); /// @@ -55,4 +59,4 @@ impl Add for QueuePrefix { QueuePrefix::Receive => "R_".to_string() + rhs.as_str(), } } -} \ No newline at end of file +} From 2b32f8c7100a3ca008ee6e358f4c56c62c02b098 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 10:51:37 +0100 Subject: [PATCH 3/7] feat: added adjusted connection functions --- .gitignore | 4 +++- src/flow_queue/connection.rs | 42 +++++++++++------------------------- 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index 29e595a..650b1c0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,6 @@ /dataSources.local.xml .idea ./target -.target \ No newline at end of file +.target + +target \ No newline at end of file diff --git a/src/flow_queue/connection.rs b/src/flow_queue/connection.rs index ce738da..81b4521 100644 --- a/src/flow_queue/connection.rs +++ b/src/flow_queue/connection.rs @@ -1,41 +1,23 @@ -use rabbitmq_stream_client::Environment; +use lapin::{Channel, Connection, ConnectionProperties}; use std::sync::Arc; use tokio::sync::Mutex; -pub type FlowQueue = Arc>>; +pub type FlowQueue = Arc>>; -pub struct RedisConfiguration { - host: String, - port: u16, - username: String, - password: String, -} +pub type FlowChannel = Arc>>; -impl RedisConfiguration { - pub fn new(host: String, port: u16, username: String, password: String) -> Self { - Self { - host, - port, - username, - password, - } +pub async fn connect(uri: &str) -> Connection { + match Connection::connect(uri, ConnectionProperties::default()).await { + Ok(env) => env, + Err(error) => panic!("Cannot connect to redis instance! Reason: {:?}", error), } } -pub async fn init_rabbitmq(redis_configuration: RedisConfiguration) -> FlowQueue { - Arc::new(Mutex::new(Box::new(connect(redis_configuration).await))) -} +pub async fn get_flow_channel(uri: &str) -> FlowChannel { + let connection = connect(uri).await; -async fn connect(redis_configuration: RedisConfiguration) -> Environment { - match Environment::builder() - .host(&*redis_configuration.host) - .port(redis_configuration.port) - .username(&*redis_configuration.username) - .password(&*redis_configuration.password) - .build() - .await - { - Ok(env) => env, - Err(error) => panic!("Cannot connect to redis instance! Reason: {:?}", error), + match connection.create_channel().await { + Ok(channel) => Arc::new(Mutex::new(Box::new(channel))), + Err(error) => panic!("Cannot create channel {:?}", error), } } From 3b22350ae1550ef60afb7d1ad29f85f51285f144 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 10:52:16 +0100 Subject: [PATCH 4/7] feat: added queue declaration & sending messages into flow channels --- src/flow_queue/handler.rs | 109 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/flow_queue/handler.rs diff --git a/src/flow_queue/handler.rs b/src/flow_queue/handler.rs new file mode 100644 index 0000000..9d81a51 --- /dev/null +++ b/src/flow_queue/handler.rs @@ -0,0 +1,109 @@ +use crate::flow_queue::connection::{get_flow_channel, FlowChannel, FlowQueue}; +use crate::flow_queue::name::{QueueName, QueuePrefix, QueueProtocol}; +use lapin::message::{Delivery, DeliveryResult}; +use lapin::options::{BasicConsumeOptions, BasicPublishOptions, QueueDeclareOptions}; +use lapin::protocol::basic::gen_return; +use lapin::types::FieldTable; +use lapin::{ConsumerDelegate, Error}; +use log::{debug, error, info}; +use std::future::Future; +use std::pin::Pin; + +/// # Declares all given queues +/// +/// ## Expected behavior +/// If a queue cannot be created, the services stops +pub async fn declare_queues(flow_channel: FlowChannel, names: Vec) { + let channel_arc = flow_channel.lock().await; + for name in names { + let channel_name = name.prefix + name.protocol; + let queue_result = channel_arc + .queue_declare( + &*channel_name, + QueueDeclareOptions::default(), + FieldTable::default(), + ) + .await; + + match queue_result { + Ok(_) => { + info!("Declared queue: {}", channel_name) + } + Err(error) => { + let str = format!("Cannot declare queue: {}, Reason: {}", channel_name, error); + error!(str); + panic!(str) + } + }; + } +} + +pub async fn send_message( + flow_channel: FlowChannel, + queue_name: QueueName, + payload: &Vec, +) -> Result { + let channel_arc = flow_channel.lock().await; + let name = queue_name.prefix + queue_name.protocol; + + let result = channel_arc + .basic_publish( + "", + &*name, + BasicPublishOptions::default(), + payload, + Default::default(), + ) + .await; + + match result { + Ok(_) => Ok(true), + Err(error) => Err(error), + } +} + +pub async fn consume_message(channel: FlowChannel, queue_protocol: QueueProtocol) { + let name = QueuePrefix::Send + queue_protocol; + let channel_arc = channel.lock().await; + + let mut consumer = channel_arc + .basic_consume( + &*name, + "my_consumer", + BasicConsumeOptions::default(), + FieldTable::default(), + ) + .await + .unwrap(); + + consumer.set_delegate(SendQueueDelegate); +} + +struct SendQueueDelegate; + +impl ConsumerDelegate for SendQueueDelegate { + fn on_new_delivery( + &self, + delivery: DeliveryResult, + ) -> Pin + Send>> { + let optional_delivery = match delivery { + Ok(option) => option, + Err(error) => { + todo!("") + } + }; + + let delivery = match optional_delivery { + Some(del) => del, + None => { + todo!("") + } + }; + + todo!() + } + + fn drop_prefetched_messages(&self) -> Pin + Send>> { + todo!() + } +} From 611d8e7992318b4e13cef9bde800133cd361be52 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 11:15:53 +0100 Subject: [PATCH 5/7] ref: moved delegate into own file --- src/flow_queue/delegate.rs | 32 ++++++++++++++++++++++++++++++++ src/flow_queue/handler.rs | 35 ++--------------------------------- src/flow_queue/mod.rs | 3 ++- 3 files changed, 36 insertions(+), 34 deletions(-) create mode 100644 src/flow_queue/delegate.rs diff --git a/src/flow_queue/delegate.rs b/src/flow_queue/delegate.rs new file mode 100644 index 0000000..7973ea7 --- /dev/null +++ b/src/flow_queue/delegate.rs @@ -0,0 +1,32 @@ +use lapin::message::{DeliveryResult}; +use lapin::ConsumerDelegate; +use std::future::Future; +use std::pin::Pin; + +struct QueueDelegate; + +impl ConsumerDelegate for QueueDelegate { + fn on_new_delivery( + &self, + delivery: DeliveryResult, + ) -> Pin + Send>> { + let optional_delivery = match delivery { + Ok(option) => option, + Err(error) => { + todo!("error handling") + } + }; + + let delivery = match optional_delivery { + Some(del) => del, + None => { + todo!("error handling") + } + }; + todo!("consumer shoud consume the data of delivy as &Vec") + } + + fn drop_prefetched_messages(&self) -> Pin + Send>> { + todo!("") + } +} diff --git a/src/flow_queue/handler.rs b/src/flow_queue/handler.rs index 9d81a51..28c0dfc 100644 --- a/src/flow_queue/handler.rs +++ b/src/flow_queue/handler.rs @@ -30,9 +30,7 @@ pub async fn declare_queues(flow_channel: FlowChannel, names: Vec) { info!("Declared queue: {}", channel_name) } Err(error) => { - let str = format!("Cannot declare queue: {}, Reason: {}", channel_name, error); - error!(str); - panic!(str) + panic!("Cannot declare queue: {}, Reason: {}", channel_name, error); } }; } @@ -77,33 +75,4 @@ pub async fn consume_message(channel: FlowChannel, queue_protocol: QueueProtocol .unwrap(); consumer.set_delegate(SendQueueDelegate); -} - -struct SendQueueDelegate; - -impl ConsumerDelegate for SendQueueDelegate { - fn on_new_delivery( - &self, - delivery: DeliveryResult, - ) -> Pin + Send>> { - let optional_delivery = match delivery { - Ok(option) => option, - Err(error) => { - todo!("") - } - }; - - let delivery = match optional_delivery { - Some(del) => del, - None => { - todo!("") - } - }; - - todo!() - } - - fn drop_prefetched_messages(&self) -> Pin + Send>> { - todo!() - } -} +} \ No newline at end of file diff --git a/src/flow_queue/mod.rs b/src/flow_queue/mod.rs index 8e2ce1e..d373785 100644 --- a/src/flow_queue/mod.rs +++ b/src/flow_queue/mod.rs @@ -1,3 +1,4 @@ pub mod connection; pub mod name; -pub mod handler; \ No newline at end of file +pub mod handler; +pub mod delegate; \ No newline at end of file From b2f1630045b6251459dfd6a850679c9099488b76 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 13:13:25 +0100 Subject: [PATCH 6/7] feat: made generic delegate for easy implementation of new handlers --- src/flow_queue/delegate.rs | 70 +++++++++++++++++++++++++++++--------- src/flow_queue/handler.rs | 52 +++++++++++++++++++++++++--- 2 files changed, 100 insertions(+), 22 deletions(-) diff --git a/src/flow_queue/delegate.rs b/src/flow_queue/delegate.rs index 7973ea7..549102a 100644 --- a/src/flow_queue/delegate.rs +++ b/src/flow_queue/delegate.rs @@ -1,32 +1,68 @@ -use lapin::message::{DeliveryResult}; +use lapin::message::{Delivery, DeliveryResult}; use lapin::ConsumerDelegate; +use log::debug; use std::future::Future; use std::pin::Pin; -struct QueueDelegate; +/// Delegate trait to implement. +/// +/// Use as delegate for RabbitMQ +/// +/// # Example +/// ``` +/// use lapin::message::Delivery; +/// use code0_flow::flow_queue::delegate::Delegate; +/// +/// struct HttpDelegate; +/// +/// impl Delegate for HttpDelegate { +/// fn handle_delivery(&self, delivery: Delivery) { +/// todo!("Handle delivery!") +/// } +/// } +/// ``` +pub trait Delegate { + fn handle_delivery(&self, delivery: Delivery); +} + +pub struct QueueDelegate { + pub delegate: T, +} + +impl QueueDelegate { + pub fn new(delegate: T) -> Self { + QueueDelegate { delegate } + } + + pub fn deliver(&self, delivery: Delivery) { + self.delegate.handle_delivery(delivery); + } +} -impl ConsumerDelegate for QueueDelegate { +impl ConsumerDelegate for QueueDelegate { fn on_new_delivery( &self, delivery: DeliveryResult, ) -> Pin + Send>> { - let optional_delivery = match delivery { - Ok(option) => option, - Err(error) => { - todo!("error handling") - } - }; + async move { + let optional_delivery = match delivery { + Ok(option) => option, + Err(_) => return, + }; + let delivery = match optional_delivery { + Some(del) => del, + None => return, + }; - let delivery = match optional_delivery { - Some(del) => del, - None => { - todo!("error handling") - } - }; - todo!("consumer shoud consume the data of delivy as &Vec") + self.delegate.handle_delivery(delivery); + } } fn drop_prefetched_messages(&self) -> Pin + Send>> { - todo!("") + let future = async move { + debug!("Dropping prefetched messages..."); + }; + + Box::pin(future) } } diff --git a/src/flow_queue/handler.rs b/src/flow_queue/handler.rs index 28c0dfc..b218865 100644 --- a/src/flow_queue/handler.rs +++ b/src/flow_queue/handler.rs @@ -1,4 +1,5 @@ use crate::flow_queue::connection::{get_flow_channel, FlowChannel, FlowQueue}; +use crate::flow_queue::delegate::{Delegate, QueueDelegate}; use crate::flow_queue::name::{QueueName, QueuePrefix, QueueProtocol}; use lapin::message::{Delivery, DeliveryResult}; use lapin::options::{BasicConsumeOptions, BasicPublishOptions, QueueDeclareOptions}; @@ -36,6 +37,7 @@ pub async fn declare_queues(flow_channel: FlowChannel, names: Vec) { } } +/// Sends a message into a queue pub async fn send_message( flow_channel: FlowChannel, queue_name: QueueName, @@ -60,19 +62,59 @@ pub async fn send_message( } } -pub async fn consume_message(channel: FlowChannel, queue_protocol: QueueProtocol) { - let name = QueuePrefix::Send + queue_protocol; +/// Consumes a message +/// +/// Creates a delegate that waits on messages and consumes them. +/// +/// # Params +/// - channel: FlowChannel of the send message +/// - queue_name: Name of the Queue that should be listened to +/// - delegate: Consumer delegate of the message +/// +/// # Example +/// ``` +/// use lapin::message::Delivery; +/// use code0_flow::flow_queue::delegate::Delegate; +/// use code0_flow::flow_queue::connection::get_flow_channel; +/// use code0_flow::flow_queue::name::{QueueName, QueuePrefix, QueueProtocol}; +/// use code0_flow::flow_queue::handler::consume_message; +/// +/// struct HttpDelegate; +/// +/// impl Delegate for HttpDelegate { +/// fn handle_delivery(&self, delivery: Delivery) { +/// todo!("Handle delivery!") +/// } +/// } +/// +/// async fn main() { +/// let uri = "abc"; +/// let channel = get_flow_channel(uri).await; +/// let queue_name = QueueName { +/// prefix: QueuePrefix::Send, +/// protocol: QueueProtocol::Rest, +/// }; +/// +/// consume_message(channel, queue_name, HttpDelegate).await; +/// } +/// ``` +pub async fn consume_message( + channel: FlowChannel, + queue_name: QueueName, + delegate: T, +) { + let name = queue_name.prefix + queue_name.protocol; let channel_arc = channel.lock().await; let mut consumer = channel_arc .basic_consume( &*name, - "my_consumer", + "", BasicConsumeOptions::default(), FieldTable::default(), ) .await .unwrap(); - consumer.set_delegate(SendQueueDelegate); -} \ No newline at end of file + consumer.set_delegate(QueueDelegate { delegate }); +} From 3d8eb316bfdc82d3c92a92a303c26e5b1bf7b5fe Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 4 Feb 2025 13:29:52 +0100 Subject: [PATCH 7/7] fix: lifetime identifier was missing --- src/flow_queue/delegate.rs | 45 ++++++++++++++------------------------ src/flow_queue/handler.rs | 23 ++++++++++--------- 2 files changed, 27 insertions(+), 41 deletions(-) diff --git a/src/flow_queue/delegate.rs b/src/flow_queue/delegate.rs index 549102a..7e03a0f 100644 --- a/src/flow_queue/delegate.rs +++ b/src/flow_queue/delegate.rs @@ -3,35 +3,22 @@ use lapin::ConsumerDelegate; use log::debug; use std::future::Future; use std::pin::Pin; +use std::sync::Arc; /// Delegate trait to implement. -/// -/// Use as delegate for RabbitMQ -/// -/// # Example -/// ``` -/// use lapin::message::Delivery; -/// use code0_flow::flow_queue::delegate::Delegate; -/// -/// struct HttpDelegate; -/// -/// impl Delegate for HttpDelegate { -/// fn handle_delivery(&self, delivery: Delivery) { -/// todo!("Handle delivery!") -/// } -/// } -/// ``` -pub trait Delegate { +pub trait Delegate: Sync + Send { fn handle_delivery(&self, delivery: Delivery); } pub struct QueueDelegate { - pub delegate: T, + pub delegate: Arc, // Use Arc for safe ownership transfer } impl QueueDelegate { pub fn new(delegate: T) -> Self { - QueueDelegate { delegate } + QueueDelegate { + delegate: Arc::new(delegate), + } } pub fn deliver(&self, delivery: Delivery) { @@ -39,12 +26,14 @@ impl QueueDelegate { } } -impl ConsumerDelegate for QueueDelegate { +impl ConsumerDelegate for QueueDelegate { fn on_new_delivery( &self, delivery: DeliveryResult, - ) -> Pin + Send>> { - async move { + ) -> Pin + Send + 'static>> { + let delegate = Arc::clone(&self.delegate); + + Box::pin(async move { let optional_delivery = match delivery { Ok(option) => option, Err(_) => return, @@ -54,15 +43,13 @@ impl ConsumerDelegate for QueueDelegate { None => return, }; - self.delegate.handle_delivery(delivery); - } + delegate.handle_delivery(delivery); // Use cloned delegate + }) } - fn drop_prefetched_messages(&self) -> Pin + Send>> { - let future = async move { + fn drop_prefetched_messages(&self) -> Pin + Send + 'static>> { + Box::pin(async move { debug!("Dropping prefetched messages..."); - }; - - Box::pin(future) + }) } } diff --git a/src/flow_queue/handler.rs b/src/flow_queue/handler.rs index b218865..9448b07 100644 --- a/src/flow_queue/handler.rs +++ b/src/flow_queue/handler.rs @@ -1,14 +1,11 @@ -use crate::flow_queue::connection::{get_flow_channel, FlowChannel, FlowQueue}; +use crate::flow_queue::connection::FlowChannel; use crate::flow_queue::delegate::{Delegate, QueueDelegate}; -use crate::flow_queue::name::{QueueName, QueuePrefix, QueueProtocol}; -use lapin::message::{Delivery, DeliveryResult}; +use crate::flow_queue::name::QueueName; use lapin::options::{BasicConsumeOptions, BasicPublishOptions, QueueDeclareOptions}; -use lapin::protocol::basic::gen_return; use lapin::types::FieldTable; -use lapin::{ConsumerDelegate, Error}; -use log::{debug, error, info}; -use std::future::Future; -use std::pin::Pin; +use lapin::Error; +use log::info; +use std::sync::Arc; /// # Declares all given queues /// @@ -72,7 +69,7 @@ pub async fn send_message( /// - delegate: Consumer delegate of the message /// /// # Example -/// ``` +/// ``` ignore /// use lapin::message::Delivery; /// use code0_flow::flow_queue::delegate::Delegate; /// use code0_flow::flow_queue::connection::get_flow_channel; @@ -98,7 +95,7 @@ pub async fn send_message( /// consume_message(channel, queue_name, HttpDelegate).await; /// } /// ``` -pub async fn consume_message( +pub async fn consume_message( channel: FlowChannel, queue_name: QueueName, delegate: T, @@ -106,7 +103,7 @@ pub async fn consume_message( let name = queue_name.prefix + queue_name.protocol; let channel_arc = channel.lock().await; - let mut consumer = channel_arc + let consumer = channel_arc .basic_consume( &*name, "", @@ -116,5 +113,7 @@ pub async fn consume_message( .await .unwrap(); - consumer.set_delegate(QueueDelegate { delegate }); + consumer.set_delegate(QueueDelegate { + delegate: Arc::new(delegate), + }); }