From 822d263b295cf234999bc1d811585a8678c1f32f Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Mon, 5 May 2025 19:38:08 +0100 Subject: [PATCH 01/15] getting ready to add TaskPaginatedRequests --- proto/engine.proto | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/proto/engine.proto b/proto/engine.proto index c06df28..fe8275e 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -2,14 +2,27 @@ syntax = "proto3"; package engine; service engine { rpc AquireTask(TaskRequest) returns (Task); - rpc CreateTask(Task) returns (Task); rpc AquireTaskReg(empty) returns (TaskRegistry); rpc PublishTask(Task) returns (empty); rpc cgrpc(cgrpcmsg) returns (cgrpcmsg); + rpc CreateTask(Task) returns (Task); + // rpc GetTasks(TaskPageRequest) returns (TaskPage); } message empty {} - +message TaskPageRequest { + string namespace = 1; + string task = 2; + uint64 page = 3; + uint32 pageSize = 4; +} +message TaskPage { + string namespace = 1; + string task = 2; + uint64 page = 3; + uint32 pageSize = 4; + repeated Task tasks = 5; +} message cgrpcmsg { string handler_mod_id = 1; string handler_id = 2; From 001e919fddd8df53f3a8f08321f5b6bc51367366 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Mon, 5 May 2025 20:40:06 +0100 Subject: [PATCH 02/15] up ref --- Cargo.lock | 378 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 236 insertions(+), 142 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3646386..c3884cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,9 +146,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ "axum-core", "bytes", @@ -303,9 +303,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.19" +version = "1.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" dependencies = [ "shlex", ] @@ -318,9 +318,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.36" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df961d8c8a0d08aa9945718ccf584145eee3f3aa06cddbeac12933781102e04" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" dependencies = [ "clap_builder", "clap_derive", @@ -343,9 +343,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.36" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132dbda40fb6753878316a489d5a1242a8ef2f0d9e47ba01c951ea8aa7d013a5" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" dependencies = [ "anstream", "anstyle", @@ -355,9 +355,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.47" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06f5378ea264ad4f82bbc826628b5aad714a75abf6ece087e923010eb937fb6" +checksum = "be8c97f3a6f02b9e24cadc12aaba75201d18754b53ea0a9d99642f806ccdb4c9" dependencies = [ "clap", ] @@ -584,7 +584,7 @@ dependencies = [ [[package]] name = "druid" version = "0.1.0" -source = "git+https://github.com/GrandEngineering/druid.git#d1e10245b89c879a9074e78995446975754d8def" +source = "git+https://github.com/GrandEngineering/druid.git#801365f097b6b437314d0deaa72fd85be6af0a8f" dependencies = [ "chrono", "rand", @@ -678,6 +678,16 @@ dependencies = [ "serde", ] +[[package]] +name = "faster-hex" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73" +dependencies = [ + "heapless", + "serde", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -803,9 +813,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", @@ -845,11 +855,11 @@ dependencies = [ "gix-diff", "gix-dir", "gix-discover", - "gix-features", + "gix-features 0.41.1", "gix-filter", - "gix-fs", + "gix-fs 0.14.0", "gix-glob", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-ignore", "gix-index", @@ -872,8 +882,8 @@ dependencies = [ "gix-trace", "gix-traverse", "gix-url", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "gix-worktree", "once_cell", "parking_lot 0.12.3", @@ -890,7 +900,7 @@ checksum = "f438c87d4028aca4b82f82ba8d8ab1569823cfb3e5bc5fa8456a71678b2a20e7" dependencies = [ "bstr", "gix-date", - "gix-utils", + "gix-utils 0.2.0", "itoa", "thiserror 2.0.12", "winnow", @@ -952,7 +962,7 @@ checksum = "043cbe49b7a7505150db975f3cb7c15833335ac1e26781f615454d9d640a28fe" dependencies = [ "bstr", "gix-chunk", - "gix-hash", + "gix-hash 0.17.0", "memmap2", "thiserror 2.0.12", ] @@ -965,7 +975,7 @@ checksum = "9c6f830bf746604940261b49abf7f655d2c19cadc9f4142ae9379e3a316e8cfa" dependencies = [ "bstr", "gix-config-value", - "gix-features", + "gix-features 0.41.1", "gix-glob", "gix-path", "gix-ref", @@ -1013,8 +1023,8 @@ dependencies = [ "gix-attributes", "gix-command", "gix-filter", - "gix-fs", - "gix-hash", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-index", "gix-object", "gix-path", @@ -1035,14 +1045,14 @@ checksum = "5879497bd3815d8277ed864ec8975290a70de5b62bb92d2d666a4cefc5d4793b" dependencies = [ "bstr", "gix-discover", - "gix-fs", + "gix-fs 0.14.0", "gix-ignore", "gix-index", "gix-object", "gix-path", "gix-pathspec", "gix-trace", - "gix-utils", + "gix-utils 0.2.0", "gix-worktree", "thiserror 2.0.12", ] @@ -1055,8 +1065,8 @@ checksum = "f7fb8a4349b854506a3915de18d3341e5f1daa6b489c8affc9ca0d69efe86781" dependencies = [ "bstr", "dunce", - "gix-fs", - "gix-hash", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-path", "gix-ref", "gix-sec", @@ -1073,7 +1083,7 @@ dependencies = [ "flate2", "gix-path", "gix-trace", - "gix-utils", + "gix-utils 0.2.0", "libc", "once_cell", "prodash", @@ -1081,6 +1091,18 @@ dependencies = [ "walkdir", ] +[[package]] +name = "gix-features" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f4399af6ec4fd9db84dd4cf9656c5c785ab492ab40a7c27ea92b4241923fed" +dependencies = [ + "gix-trace", + "gix-utils 0.3.0", + "libc", + "prodash", +] + [[package]] name = "gix-filter" version = "0.18.0" @@ -1091,13 +1113,13 @@ dependencies = [ "encoding_rs", "gix-attributes", "gix-command", - "gix-hash", + "gix-hash 0.17.0", "gix-object", "gix-packetline-blocking", "gix-path", "gix-quote", "gix-trace", - "gix-utils", + "gix-utils 0.2.0", "smallvec", "thiserror 2.0.12", ] @@ -1110,9 +1132,23 @@ checksum = "951e886120dc5fa8cac053e5e5c89443f12368ca36811b2e43d1539081f9c111" dependencies = [ "bstr", "fastrand", - "gix-features", + "gix-features 0.41.1", "gix-path", - "gix-utils", + "gix-utils 0.2.0", + "thiserror 2.0.12", +] + +[[package]] +name = "gix-fs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a0637149b4ef24d3ea55f81f77231401c8463fae6da27331c987957eb597c7" +dependencies = [ + "bstr", + "fastrand", + "gix-features 0.42.1", + "gix-path", + "gix-utils 0.3.0", "thiserror 2.0.12", ] @@ -1124,7 +1160,7 @@ checksum = "20972499c03473e773a2099e5fd0c695b9b72465837797a51a43391a1635a030" dependencies = [ "bitflags 2.9.0", "bstr", - "gix-features", + "gix-features 0.41.1", "gix-path", ] @@ -1134,19 +1170,31 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "834e79722063958b03342edaa1e17595cd2939bb2b3306b3225d0815566dcb49" dependencies = [ - "faster-hex", - "gix-features", + "faster-hex 0.9.0", + "gix-features 0.41.1", + "sha1-checked", + "thiserror 2.0.12", +] + +[[package]] +name = "gix-hash" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d4900562c662852a6b42e2ef03442eccebf24f047d8eab4f23bc12ef0d785d8" +dependencies = [ + "faster-hex 0.10.0", + "gix-features 0.42.1", "sha1-checked", "thiserror 2.0.12", ] [[package]] name = "gix-hashtable" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f06066d8702a9186dc1fdc1ed751ff2d7e924ceca21cb5d51b8f990c9c2e014a" +checksum = "b5b5cb3c308b4144f2612ff64e32130e641279fcf1a84d8d40dad843b4f64904" dependencies = [ - "gix-hash", + "gix-hash 0.18.0", "hashbrown 0.14.5", "parking_lot 0.12.3", ] @@ -1175,14 +1223,14 @@ dependencies = [ "filetime", "fnv", "gix-bitmap", - "gix-features", - "gix-fs", - "gix-hash", + "gix-features 0.41.1", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-lock", "gix-object", "gix-traverse", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "hashbrown 0.14.5", "itoa", "libc", @@ -1194,12 +1242,12 @@ dependencies = [ [[package]] name = "gix-lock" -version = "17.0.0" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df47b8f11c34520db5541bc5fc9fbc8e4b0bdfcec3736af89ccb1a5728a0126f" +checksum = "570f8b034659f256366dc90f1a24924902f20acccd6a15be96d44d1269e7a796" dependencies = [ "gix-tempfile", - "gix-utils", + "gix-utils 0.3.0", "thiserror 2.0.12", ] @@ -1212,12 +1260,12 @@ dependencies = [ "bstr", "gix-actor", "gix-date", - "gix-features", - "gix-hash", + "gix-features 0.41.1", + "gix-hash 0.17.0", "gix-hashtable", "gix-path", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "itoa", "smallvec", "thiserror 2.0.12", @@ -1232,9 +1280,9 @@ checksum = "50306d40dcc982eb6b7593103f066ea6289c7b094cb9db14f3cd2be0b9f5e610" dependencies = [ "arc-swap", "gix-date", - "gix-features", - "gix-fs", - "gix-hash", + "gix-features 0.41.1", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-pack", @@ -1253,8 +1301,8 @@ checksum = "9b65fffb09393c26624ca408d32cfe8776fb94cd0a5cdf984905e1d2f39779cb" dependencies = [ "clru", "gix-chunk", - "gix-features", - "gix-hash", + "gix-features 0.41.1", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-path", @@ -1270,7 +1318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "123844a70cf4d5352441dc06bab0da8aef61be94ec239cb631e0ba01dc6d3a04" dependencies = [ "bstr", - "faster-hex", + "faster-hex 0.9.0", "gix-trace", "thiserror 2.0.12", ] @@ -1282,19 +1330,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ecf3ea2e105c7e45587bac04099824301262a6c43357fad5205da36dbb233b3" dependencies = [ "bstr", - "faster-hex", + "faster-hex 0.9.0", "gix-trace", "thiserror 2.0.12", ] [[package]] name = "gix-path" -version = "0.10.15" +version = "0.10.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f910668e2f6b2a55ff35a1f04df88a1a049f7b868507f4cbeeaa220eaba7be87" +checksum = "c091d2e887e02c3462f52252c5ea61150270c0f2657b642e8d0d6df56c16e642" dependencies = [ "bstr", "gix-trace", + "gix-validate 0.10.0", "home", "once_cell", "thiserror 2.0.12", @@ -1323,12 +1372,12 @@ checksum = "5678ddae1d62880bc30e2200be1b9387af3372e0e88e21f81b4e7f8367355b5a" dependencies = [ "bstr", "gix-date", - "gix-features", - "gix-hash", + "gix-features 0.41.1", + "gix-hash 0.17.0", "gix-ref", "gix-shallow", "gix-transport", - "gix-utils", + "gix-utils 0.2.0", "maybe-async", "thiserror 2.0.12", "winnow", @@ -1341,7 +1390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b005c550bf84de3b24aa5e540a23e6146a1c01c7d30470e35d75a12f827f969" dependencies = [ "bstr", - "gix-utils", + "gix-utils 0.2.0", "thiserror 2.0.12", ] @@ -1352,15 +1401,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2e1f7eb6b7ce82d2d19961f74bd637bab3ea79b1bc7bfb23dbefc67b0415d8b" dependencies = [ "gix-actor", - "gix-features", - "gix-fs", - "gix-hash", + "gix-features 0.41.1", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-lock", "gix-object", "gix-path", "gix-tempfile", - "gix-utils", - "gix-validate", + "gix-utils 0.2.0", + "gix-validate 0.9.4", "memmap2", "thiserror 2.0.12", "winnow", @@ -1373,9 +1422,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d8587b21e2264a6e8938d940c5c99662779c13a10741a5737b15fc85c252ffc" dependencies = [ "bstr", - "gix-hash", + "gix-hash 0.17.0", "gix-revision", - "gix-validate", + "gix-validate 0.9.4", "smallvec", "thiserror 2.0.12", ] @@ -1390,7 +1439,7 @@ dependencies = [ "bstr", "gix-commitgraph", "gix-date", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-revwalk", @@ -1406,7 +1455,7 @@ checksum = "2dc7c3d7e5cdc1ab8d35130106e4af0a4f9f9eca0c81f4312b690780e92bde0d" dependencies = [ "gix-commitgraph", "gix-date", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "smallvec", @@ -1432,7 +1481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc0598aacfe1d52575a21c9492fee086edbb21e228ec36c819c42ab923f434c3" dependencies = [ "bstr", - "gix-hash", + "gix-hash 0.17.0", "gix-lock", "thiserror 2.0.12", ] @@ -1447,10 +1496,10 @@ dependencies = [ "filetime", "gix-diff", "gix-dir", - "gix-features", + "gix-features 0.41.1", "gix-filter", - "gix-fs", - "gix-hash", + "gix-fs 0.14.0", + "gix-hash 0.17.0", "gix-index", "gix-object", "gix-path", @@ -1477,12 +1526,12 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "17.0.0" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6de439bbb9a5d3550c9c7fab0e16d2d637d120fcbe0dfbc538772a187f099b" +checksum = "c750e8c008453a2dba67a2b0d928b7716e05da31173a3f5e351d5457ad4470aa" dependencies = [ "dashmap", - "gix-fs", + "gix-fs 0.15.0", "libc", "once_cell", "parking_lot 0.12.3", @@ -1505,7 +1554,7 @@ checksum = "b3f68c2870bfca8278389d2484a7f2215b67d0b0cc5277d3c72ad72acf41787e" dependencies = [ "bstr", "gix-command", - "gix-features", + "gix-features 0.41.1", "gix-packetline", "gix-quote", "gix-sec", @@ -1522,7 +1571,7 @@ dependencies = [ "bitflags 2.9.0", "gix-commitgraph", "gix-date", - "gix-hash", + "gix-hash 0.17.0", "gix-hashtable", "gix-object", "gix-revwalk", @@ -1537,7 +1586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48dfe23f93f1ddb84977d80bb0dd7aa09d1bf5d5afc0c9b6820cccacc25ae860" dependencies = [ "bstr", - "gix-features", + "gix-features 0.41.1", "gix-path", "percent-encoding", "thiserror 2.0.12", @@ -1555,6 +1604,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "gix-utils" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5351af2b172caf41a3728eb4455326d84e0d70fe26fc4de74ab0bd37df4191c5" +dependencies = [ + "fastrand", + "unicode-normalization", +] + [[package]] name = "gix-validate" version = "0.9.4" @@ -1565,6 +1624,16 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "gix-validate" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77b9e00cacde5b51388d28ed746c493b18a6add1f19b5e01d686b3b9ece66d4d" +dependencies = [ + "bstr", + "thiserror 2.0.12", +] + [[package]] name = "gix-worktree" version = "0.40.0" @@ -1573,22 +1642,22 @@ checksum = "f7760dbc4b79aa274fed30adc0d41dca6b917641f26e7867c4071b1fb4dc727b" dependencies = [ "bstr", "gix-attributes", - "gix-features", - "gix-fs", + "gix-features 0.41.1", + "gix-fs 0.14.0", "gix-glob", - "gix-hash", + "gix-hash 0.17.0", "gix-ignore", "gix-index", "gix-object", "gix-path", - "gix-validate", + "gix-validate 0.9.4", ] [[package]] name = "h2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", @@ -1603,6 +1672,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.14.5" @@ -1615,13 +1693,23 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "foldhash", ] +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -1912,7 +2000,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -1922,7 +2010,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -1957,9 +2045,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ad87c89110f55e4cd4dc2893a9790820206729eaf221555f742d540b0724a0" +checksum = "d07d8d955d798e7a4d6f9c58cd1f1916e790b42b092758a9ef6e16fef9f1b3fd" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -1972,9 +2060,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d076d5b64a7e2fe6f0743f02c43ca4a6725c0f904203bfe276a5b3e793103605" +checksum = "f244cfe006d98d26f859c7abd1318d85327e1882dc9cef80f62daeeb0adcf300" dependencies = [ "proc-macro2", "quote", @@ -2023,9 +2111,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" @@ -2045,7 +2133,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.9.0", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.12", ] [[package]] @@ -2279,7 +2367,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.12", "smallvec", "windows-targets 0.52.6", ] @@ -2359,7 +2447,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.24", + "zerocopy 0.8.25", ] [[package]] @@ -2374,9 +2462,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -2460,13 +2548,12 @@ checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha", "rand_core", - "zerocopy 0.8.24", ] [[package]] @@ -2499,9 +2586,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ "bitflags 2.9.0", ] @@ -2512,7 +2599,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] @@ -2591,9 +2678,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ "bitflags 2.9.0", "errno", @@ -2733,9 +2820,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -2801,9 +2888,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -2818,9 +2905,9 @@ checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -2847,7 +2934,7 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix 1.0.5", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -3001,9 +3088,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -3014,9 +3101,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -3026,31 +3113,38 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "tonic" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85839f0b32fd242bb3209262371d07feda6d780d16ee9d2bc88581b89da1549b" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ "async-trait", "axum", @@ -3077,9 +3171,9 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85f0383fadd15609306383a90e85eaed44169f931a5d2be1b42c76ceff1825e" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" dependencies = [ "prettyplease", "proc-macro2", @@ -3091,9 +3185,9 @@ dependencies = [ [[package]] name = "tonic-reflection" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fa815be858816dad226a49439ee90b7bcf81ab55bee72fdb217f1e6778c3ca" +checksum = "f9687bd5bfeafebdded2356950f278bba8226f0b32109537c4253406e09aafe1" dependencies = [ "prost", "prost-types", @@ -3672,9 +3766,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "d9fb597c990f03753e08d3c29efbfcf2019a003b4bf4ba19225c158e1549f0f3" dependencies = [ "memchr", ] @@ -3707,7 +3801,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" dependencies = [ "libc", - "rustix 1.0.5", + "rustix 1.0.7", ] [[package]] @@ -3745,11 +3839,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive 0.8.25", ] [[package]] @@ -3765,9 +3859,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", From ab753d5a2ffbae6599a23018f5a37c6befd30806 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Mon, 5 May 2025 21:00:34 +0100 Subject: [PATCH 03/15] enable GetTasks --- proto/engine.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/engine.proto b/proto/engine.proto index fe8275e..119f87a 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -6,7 +6,7 @@ service engine { rpc PublishTask(Task) returns (empty); rpc cgrpc(cgrpcmsg) returns (cgrpcmsg); rpc CreateTask(Task) returns (Task); - // rpc GetTasks(TaskPageRequest) returns (TaskPage); + rpc GetTasks(TaskPageRequest) returns (TaskPage); } message empty {} From 45b47ccbae65fd2be1fc827a5fc013c9d3b889ed Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Mon, 5 May 2025 21:05:40 +0100 Subject: [PATCH 04/15] add get_tasks to Engine --- src/bin/server.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bin/server.rs b/src/bin/server.rs index afc6028..1159465 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -29,6 +29,12 @@ struct EngineService { } #[tonic::async_trait] impl Engine for EngineService { + async fn get_tasks( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + return Err(tonic::Status::aborted("INDEV")); + } async fn cgrpc( &self, request: tonic::Request, From 88eec65f84452cd4a703725fd7fbdd6265f7ac49 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 19:26:36 +0100 Subject: [PATCH 05/15] add task states --- proto/engine.proto | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/proto/engine.proto b/proto/engine.proto index 119f87a..a093ab0 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -10,18 +10,25 @@ service engine { } message empty {} +enum TaskState { + QUEUED = 1; + PROCESSING = 2; + SOLVED = 3; +} message TaskPageRequest { string namespace = 1; string task = 2; uint64 page = 3; uint32 pageSize = 4; + TaskState state = 5; } message TaskPage { string namespace = 1; string task = 2; uint64 page = 3; uint32 pageSize = 4; - repeated Task tasks = 5; + TaskState state = 5; + repeated Task tasks = 6; } message cgrpcmsg { string handler_mod_id = 1; From 8c19d21078f85144df311ea7a626dabd72ea149c Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 19:39:04 +0100 Subject: [PATCH 06/15] fix task states --- proto/engine.proto | 6 +++--- src/bin/server.rs | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/proto/engine.proto b/proto/engine.proto index a093ab0..9fa7823 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -11,9 +11,9 @@ service engine { message empty {} enum TaskState { - QUEUED = 1; - PROCESSING = 2; - SOLVED = 3; + QUEUED = 0; + PROCESSING = 1; + SOLVED = 2; } message TaskPageRequest { string namespace = 1; diff --git a/src/bin/server.rs b/src/bin/server.rs index 1159465..d72619d 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -33,6 +33,18 @@ impl Engine for EngineService { &self, request: tonic::Request, ) -> std::result::Result, tonic::Status> { + let mut api = self.EngineAPI.write().await; + let challenge = get_auth(&request); + let uid = get_uid(&request); + let db = api.db.clone(); + if !Events::CheckAuth(&mut api, uid, challenge, db) { + //TODO: change to AdminSpecific Auth + info!("GetTask denied due to Invalid Auth"); + return Err(Status::permission_denied("Invalid authentication")); + }; + let data = request.get_ref(); + match data {} + return Err(tonic::Status::aborted("INDEV")); } async fn cgrpc( From e2bd63353eed55a66dded7320d6639fbdb2379c8 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 20:34:13 +0100 Subject: [PATCH 07/15] start --- Cargo.lock | 20 ++++++++++---------- src/bin/server.rs | 38 +++++++++++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c3884cf..10ef767 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -355,9 +355,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.48" +version = "4.5.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8c97f3a6f02b9e24cadc12aaba75201d18754b53ea0a9d99642f806ccdb4c9" +checksum = "c91d3baa3bcd889d60e6ef28874126a0b384fd225ab83aa6d8a801c519194ce1" dependencies = [ "clap", ] @@ -635,7 +635,7 @@ dependencies = [ [[package]] name = "enginelib" version = "0.2.0" -source = "git+https://github.com/GrandEngineering/enginelib.git#fa2b0bbccdf87511b51fc7b8e70b99e14c4e5260" +source = "git+https://github.com/GrandEngineering/enginelib.git#75cdf1ef1294d6b25961cc4759a29daf54a0a895" dependencies = [ "bincode", "chrono", @@ -2045,9 +2045,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07d8d955d798e7a4d6f9c58cd1f1916e790b42b092758a9ef6e16fef9f1b3fd" +checksum = "f02000660d30638906021176af16b17498bd0d12813dbfe7b276d8bc7f3c0806" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -2060,9 +2060,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f244cfe006d98d26f859c7abd1318d85327e1882dc9cef80f62daeeb0adcf300" +checksum = "f3c30758ddd7188629c6713fc45d1188af4f44c90582311d0c8d8c9907f60c48" dependencies = [ "proc-macro2", "quote", @@ -2173,7 +2173,7 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "macros" version = "0.1.0" -source = "git+https://github.com/GrandEngineering/enginelib.git#fa2b0bbccdf87511b51fc7b8e70b99e14c4e5260" +source = "git+https://github.com/GrandEngineering/enginelib.git#75cdf1ef1294d6b25961cc4759a29daf54a0a895" dependencies = [ "proc-macro2", "quote", @@ -3048,9 +3048,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.2" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" dependencies = [ "backtrace", "bytes", diff --git a/src/bin/server.rs b/src/bin/server.rs index d72619d..0941239 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -7,9 +7,12 @@ use enginelib::{ event::{debug, info, warn}, events::{self, Events, ID}, plugin::LibraryManager, - task::{StoredTask, Task, TaskQueue}, + task::{SolvedTasks, StoredExecutingTask, StoredTask, Task, TaskQueue}, +}; +use proto::{ + TaskState, + engine_server::{Engine, EngineServer}, }; -use proto::engine_server::{Engine, EngineServer}; use std::{ env::consts::OS, io::Read, @@ -43,8 +46,37 @@ impl Engine for EngineService { return Err(Status::permission_denied("Invalid authentication")); }; let data = request.get_ref(); - match data {} + let q: Vec = match data.clone().state() { + TaskState::Processing => api + .executing_tasks + .clone() + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + .unwrap() + .iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect(), + _ => api + .task_queue + .clone() + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + .unwrap() + .iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect(), + }; return Err(tonic::Status::aborted("INDEV")); } async fn cgrpc( From 1d2d643623065c6a02e2e404bd1c2c7aeb79830a Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 20:39:36 +0100 Subject: [PATCH 08/15] fix bug and improve alg --- src/bin/server.rs | 82 +++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index 0941239..f896c20 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -48,34 +48,60 @@ impl Engine for EngineService { let data = request.get_ref(); let q: Vec = match data.clone().state() { - TaskState::Processing => api - .executing_tasks - .clone() - .tasks - .get(&(data.namespace.clone(), data.task.clone())) - .unwrap() - .iter() - .map(|f| proto::Task { - id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), - task_payload: f.bytes.clone(), - payload: Vec::new(), - }) - .collect(), - _ => api - .task_queue - .clone() - .tasks - .get(&(data.namespace.clone(), data.task.clone())) - .unwrap() - .iter() - .map(|f| proto::Task { - id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), - task_payload: f.bytes.clone(), - payload: Vec::new(), - }) - .collect(), + TaskState::Processing => { + let mut d = api + .executing_tasks + .clone() + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + .unwrap() + .clone(); + d.sort_by_key(|f| f.id.clone()); + d.iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + TaskState::Queued => { + let mut d = api + .task_queue + .clone() + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + .unwrap() + .clone(); + d.sort_by_key(|f| f.id.clone()); + d.iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + TaskState::Solved => { + let mut d = api + .solved_tasks + .clone() + .tasks + .get(&(data.namespace.clone(), data.task.clone())) + .unwrap() + .clone(); + d.sort_by_key(|f| f.id.clone()); + d.iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } }; return Err(tonic::Status::aborted("INDEV")); } From f71630d405f7288551ebfc83d7c1a5cb01e13932 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 20:44:20 +0100 Subject: [PATCH 09/15] paginate --- src/bin/server.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/bin/server.rs b/src/bin/server.rs index f896c20..221db62 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -103,6 +103,14 @@ impl Engine for EngineService { .collect() } }; + let index = data.page * data.page_size as u64; + let end = index + data.page_size as u64; + let mut final_vec = Vec::new(); + for n in index..end { + if (q.len() > n as usize) { + final_vec.push(q.get(n as usize)); + } + } return Err(tonic::Status::aborted("INDEV")); } async fn cgrpc( From af83ec72e037afffd75d80db4230f2fcb8791f0d Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 20:45:08 +0100 Subject: [PATCH 10/15] fmt --- src/bin/server.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index 221db62..d010717 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -107,7 +107,7 @@ impl Engine for EngineService { let end = index + data.page_size as u64; let mut final_vec = Vec::new(); for n in index..end { - if (q.len() > n as usize) { + if q.len() > n as usize { final_vec.push(q.get(n as usize)); } } From 2ea55e8e5e933f7a6850d9abc08b91c2e6619302 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 6 May 2025 21:18:36 +0100 Subject: [PATCH 11/15] add response --- src/bin/server.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index d010717..44cc78f 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -108,10 +108,17 @@ impl Engine for EngineService { let mut final_vec = Vec::new(); for n in index..end { if q.len() > n as usize { - final_vec.push(q.get(n as usize)); + final_vec.push(q.get(n as usize).unwrap().clone()); } } - return Err(tonic::Status::aborted("INDEV")); + return Ok(tonic::Response::new(proto::TaskPage { + namespace: data.namespace.clone(), + task: data.task.clone(), + page: data.page, + page_size: data.page_size, + state: data.state, + tasks: final_vec, + })); } async fn cgrpc( &self, From 7a2744350c45928e230a1b5ed18f8c373ab23eb1 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 1 Jul 2025 00:24:57 +0100 Subject: [PATCH 12/15] improvements regarding #25 --- proto/engine.proto | 2 + src/bin/server.rs | 102 +++++++++++++++++++++++++++++---------------- 2 files changed, 68 insertions(+), 36 deletions(-) diff --git a/proto/engine.proto b/proto/engine.proto index 9fa7823..bd754da 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -6,10 +6,12 @@ service engine { rpc PublishTask(Task) returns (empty); rpc cgrpc(cgrpcmsg) returns (cgrpcmsg); rpc CreateTask(Task) returns (Task); + // rpc DeleteTask(Task) returns (empty); rpc GetTasks(TaskPageRequest) returns (TaskPage); } message empty {} +message TaskSelector {} enum TaskState { QUEUED = 0; PROCESSING = 1; diff --git a/src/bin/server.rs b/src/bin/server.rs index 44cc78f..f7515bd 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -49,58 +49,88 @@ impl Engine for EngineService { let q: Vec = match data.clone().state() { TaskState::Processing => { - let mut d = api + match api .executing_tasks .clone() .tasks .get(&(data.namespace.clone(), data.task.clone())) - .unwrap() - .clone(); - d.sort_by_key(|f| f.id.clone()); - d.iter() - .map(|f| proto::Task { - id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), - task_payload: f.bytes.clone(), - payload: Vec::new(), - }) - .collect() + { + Some(tasks) => { + let mut d = tasks.clone(); + d.sort_by_key(|f| f.id.clone()); + d.iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + None => { + info!( + "Namespace {:?} and task {:?} not found in Processing state", + data.namespace, data.task + ); + Vec::new() + } + } } TaskState::Queued => { - let mut d = api + match api .task_queue .clone() .tasks .get(&(data.namespace.clone(), data.task.clone())) - .unwrap() - .clone(); - d.sort_by_key(|f| f.id.clone()); - d.iter() - .map(|f| proto::Task { - id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), - task_payload: f.bytes.clone(), - payload: Vec::new(), - }) - .collect() + { + Some(tasks) => { + let mut d = tasks.clone(); + d.sort_by_key(|f| f.id.clone()); + d.iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + None => { + info!( + "Namespace {:?} and task {:?} not found in Queued state", + data.namespace, data.task + ); + Vec::new() + } + } } TaskState::Solved => { - let mut d = api + match api .solved_tasks .clone() .tasks .get(&(data.namespace.clone(), data.task.clone())) - .unwrap() - .clone(); - d.sort_by_key(|f| f.id.clone()); - d.iter() - .map(|f| proto::Task { - id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), - task_payload: f.bytes.clone(), - payload: Vec::new(), - }) - .collect() + { + Some(tasks) => { + let mut d = tasks.clone(); + d.sort_by_key(|f| f.id.clone()); + d.iter() + .map(|f| proto::Task { + id: f.id.clone(), + task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_payload: f.bytes.clone(), + payload: Vec::new(), + }) + .collect() + } + None => { + info!( + "Namespace {:?} and task {:?} not found in Solved state", + data.namespace, data.task + ); + Vec::new() + } + } } }; let index = data.page * data.page_size as u64; From 8203ff758cbbc6774096b4c203c65bb3c6a8f2fb Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 1 Jul 2025 00:43:05 +0100 Subject: [PATCH 13/15] chore: empty message --- proto/engine.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/proto/engine.proto b/proto/engine.proto index bd754da..f6bf96a 100644 --- a/proto/engine.proto +++ b/proto/engine.proto @@ -11,7 +11,6 @@ service engine { } message empty {} -message TaskSelector {} enum TaskState { QUEUED = 0; PROCESSING = 1; From 74c3e982cd18c0edef7be9aff52267c2de7f06e1 Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 1 Jul 2025 00:47:11 +0100 Subject: [PATCH 14/15] chore: iterate pagination --- src/bin/server.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index f7515bd..b7ede9a 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -135,12 +135,12 @@ impl Engine for EngineService { }; let index = data.page * data.page_size as u64; let end = index + data.page_size as u64; - let mut final_vec = Vec::new(); - for n in index..end { - if q.len() > n as usize { - final_vec.push(q.get(n as usize).unwrap().clone()); - } - } + let final_vec: Vec<_> = q + .iter() + .skip(index as usize) + .take(data.page_size as usize) + .cloned() + .collect(); return Ok(tonic::Response::new(proto::TaskPage { namespace: data.namespace.clone(), task: data.task.clone(), From 62098e163d0f3a0abe1e3fc1d5efc71442c49eba Mon Sep 17 00:00:00 2001 From: IGN-Styly Date: Tue, 1 Jul 2025 00:52:20 +0100 Subject: [PATCH 15/15] chore: optimize memory footprint --- src/bin/server.rs | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index b7ede9a..5c775bd 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -51,17 +51,17 @@ impl Engine for EngineService { TaskState::Processing => { match api .executing_tasks - .clone() .tasks .get(&(data.namespace.clone(), data.task.clone())) { Some(tasks) => { - let mut d = tasks.clone(); - d.sort_by_key(|f| f.id.clone()); - d.iter() + let mut task_refs: Vec<_> = tasks.iter().collect(); + task_refs.sort_by_key(|f| &f.id); + task_refs + .iter() .map(|f| proto::Task { id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_id: format!("{}:{}", data.namespace, data.task), task_payload: f.bytes.clone(), payload: Vec::new(), }) @@ -79,17 +79,16 @@ impl Engine for EngineService { TaskState::Queued => { match api .task_queue - .clone() .tasks .get(&(data.namespace.clone(), data.task.clone())) { Some(tasks) => { - let mut d = tasks.clone(); - d.sort_by_key(|f| f.id.clone()); - d.iter() + let mut task_refs: Vec<_> = tasks.iter().collect(); + task_refs.sort_by_key(|f| &f.id); + task_refs .map(|f| proto::Task { id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_id: format!("{}:{}", data.namespace, data.task), task_payload: f.bytes.clone(), payload: Vec::new(), }) @@ -107,17 +106,16 @@ impl Engine for EngineService { TaskState::Solved => { match api .solved_tasks - .clone() .tasks .get(&(data.namespace.clone(), data.task.clone())) { Some(tasks) => { - let mut d = tasks.clone(); - d.sort_by_key(|f| f.id.clone()); - d.iter() + let mut task_refs: Vec<_> = tasks.iter().collect(); + task_refs.sort_by_key(|f| &f.id); + task_refs .map(|f| proto::Task { id: f.id.clone(), - task_id: vec![data.namespace.clone(), data.task.clone()].join(":"), + task_id: format!("{}:{}", data.namespace, data.task), task_payload: f.bytes.clone(), payload: Vec::new(), })