Browse Source

Upgrade hyperlane (#10191)

* feat: db

* feat: db

* feat: db

* feat: db

* feat: rand

* feat: rand

* feat: rand

* feat: rand

* feat: rand

* feat: port

* feat: port

* feat: port

* feat: db

* feat: db

* feat: db

* feat: lock

* feat: lock

* feat: v4.41.0

* feat: v4.42.0

* Merge remote-tracking branch 'upstream/master'

* Merge remote-tracking branch 'upstream/master'

* feat: inline

* feat: dockerfile

* feat: v4.52.1

* feat: remove key

* remove: log

* remove: log

* feat: async

* remove: empty loop

* feat: utf8

* change: pool_size

* remove: utf8

* feat: log

* feat: log

* feat: v3.14.1

* feat: 4.56.3

* feat: 4.56.4

* feat: 4.56.5

* feat:  rename

* Merge branch 'master' of github.com:TechEmpower/FrameworkBenchmarks

* feat: speed

* feat: speed

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* feat: runtime

* feat: runtime

* feat: runtime

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: hyperlane

* feat: update

* docs: readme

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: lock

* feat: use super

* feat: update lock

* feat: update

* feat: update lock

* feat: update lock

* feat: update lock

* feat: lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: utf8

* feat: utf8

* feat: lock

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* update: code

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update version

* feat: update version

* update: code

* Merge remote-tracking branch 'upstream/master'

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: error handle

* feat: dep

* feat: get_thread_count

* update: code

* feat: lock

* feat: speed

* feat: speed

* update: code

* feat: speed

* update: code

* feat: lock

* fix: Framework hyperlane does not define a default test in benchmark_config.json

* feat: hyperlane http version

* feat: hyperlane http version

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: v0.1.0

* feat: toml

* feat: v6

* feat: v6

* feat: v6

* feat: v6

* feat: v6

* debug: test cache

* debug: test cache

* feat: v6

* feat: send unwrap

* feat: v6

* feat: v6

* feat: v0.1.0

* feat: toml

* feat: toml

* feat: db

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: dir update

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: toml

---------

Co-authored-by: 尤雨东 <[email protected]>
尤雨东 4 days ago
parent
commit
da8b3dd357

+ 205 - 166
frameworks/Rust/hyperlane/Cargo.lock

@@ -2,15 +2,6 @@
 # It is not intended for manual editing.
 version = 4
 
-[[package]]
-name = "addr2line"
-version = "0.24.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
-dependencies = [
- "gimli",
-]
-
 [[package]]
 name = "adler2"
 version = "2.0.1"
@@ -62,21 +53,6 @@ version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
 
-[[package]]
-name = "backtrace"
-version = "0.3.75"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
-dependencies = [
- "addr2line",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
- "windows-targets 0.52.6",
-]
-
 [[package]]
 name = "base64"
 version = "0.22.1"
@@ -91,11 +67,11 @@ checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
 
 [[package]]
 name = "bitflags"
-version = "2.9.2"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
 dependencies = [
- "serde",
+ "serde_core",
 ]
 
 [[package]]
@@ -142,9 +118,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
 
 [[package]]
 name = "cfg-if"
-version = "1.0.1"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
 
 [[package]]
 name = "concurrent-queue"
@@ -298,9 +274,9 @@ dependencies = [
 
 [[package]]
 name = "flate2"
-version = "1.1.2"
+version = "1.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d"
+checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9"
 dependencies = [
  "crc32fast",
  "miniz_oxide",
@@ -434,9 +410,9 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
 dependencies = [
  "typenum",
  "version_check",
@@ -450,27 +426,21 @@ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
 dependencies = [
  "cfg-if",
  "libc",
- "wasi 0.11.1+wasi-snapshot-preview1",
+ "wasi",
 ]
 
 [[package]]
 name = "getrandom"
-version = "0.3.3"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
 dependencies = [
  "cfg-if",
  "libc",
  "r-efi",
- "wasi 0.14.2+wasi-0.2.4",
+ "wasip2",
 ]
 
-[[package]]
-name = "gimli"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
-
 [[package]]
 name = "hashbrown"
 version = "0.15.5"
@@ -482,13 +452,19 @@ dependencies = [
  "foldhash",
 ]
 
+[[package]]
+name = "hashbrown"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
+
 [[package]]
 name = "hashlink"
 version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
 dependencies = [
- "hashbrown",
+ "hashbrown 0.15.5",
 ]
 
 [[package]]
@@ -538,9 +514,9 @@ dependencies = [
 
 [[package]]
 name = "http-compress"
-version = "2.16.7"
+version = "3.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589c065ec266404f9e35eb5ae75c542933647f225ee7d66224ae5f187ac8e061"
+checksum = "9c1b2aca6817a5a211bd1aeafd3f3f5c9d222f3b1cac5416f667fd04d5ac655d"
 dependencies = [
  "brotli",
  "flate2",
@@ -549,15 +525,15 @@ dependencies = [
 
 [[package]]
 name = "http-constant"
-version = "1.64.0"
+version = "1.64.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ed2dc878c44b9486a88b9751dd07290d13ca4ad19d68810fb5a5448c924a581"
+checksum = "024182a8acc397613d6afdea76c8614c32296430248c99a4f9869d7b389b8456"
 
 [[package]]
 name = "http-type"
-version = "5.5.0"
+version = "5.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9c55fba426eef13b6e820c4ba8917ef3a74d99e9d47dd5c79abab0c691cadd5"
+checksum = "abb3fd7b0174cfa0fe95c630fc1b606eb82b4b2a44a47732d5474c79ec6265bd"
 dependencies = [
  "hex",
  "http-compress",
@@ -573,9 +549,9 @@ dependencies = [
 
 [[package]]
 name = "hyperlane"
-version = "9.5.0"
+version = "10.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "905bdfbd1cb98993eb90d97248f6c9dda002af35b93eca6096c8362751499f88"
+checksum = "9f96f80d25daefea9a5e7d4a26723dd6b28e3144b24c76d7290f6acd23b6bf3a"
 dependencies = [
  "http-type",
  "inventory",
@@ -587,9 +563,9 @@ dependencies = [
 
 [[package]]
 name = "hyperlane-time"
-version = "0.7.8"
+version = "0.7.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b7a0bcb6105d14602c6777b955605fd0abee9c3fd412b4af4712db8a61e358"
+checksum = "0c1902a81b87724c226187b798658dd38038afe79eb337735eff39ec5f4d3d30"
 
 [[package]]
 name = "hyperlane_techempower"
@@ -715,12 +691,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.10.0"
+version = "2.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
+checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
 dependencies = [
  "equivalent",
- "hashbrown",
+ "hashbrown 0.16.0",
 ]
 
 [[package]]
@@ -732,17 +708,6 @@ dependencies = [
  "rustversion",
 ]
 
-[[package]]
-name = "io-uring"
-version = "0.7.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
-dependencies = [
- "bitflags",
- "cfg-if",
- "libc",
-]
-
 [[package]]
 name = "itoa"
 version = "1.0.15"
@@ -760,9 +725,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.175"
+version = "0.2.177"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
+checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
 
 [[package]]
 name = "libm"
@@ -772,9 +737,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
 
 [[package]]
 name = "libredox"
-version = "0.1.9"
+version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
+checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
 dependencies = [
  "bitflags",
  "libc",
@@ -799,25 +764,24 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
 
 [[package]]
 name = "lock_api"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
 dependencies = [
- "autocfg",
  "scopeguard",
 ]
 
 [[package]]
 name = "log"
-version = "0.4.27"
+version = "0.4.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
 
 [[package]]
 name = "lombok-macros"
-version = "1.13.11"
+version = "1.13.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7647fa75302b5ffffa7ff8bdb78220beb7da2be7eaf3a939453012f25931d749"
+checksum = "3bf89b026ebf6e1c51f466b40f60f8e90a64305d9cf07268e1adaeceefcb3c7a"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -836,9 +800,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.5"
+version = "2.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
 
 [[package]]
 name = "miniz_oxide"
@@ -847,17 +811,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
 dependencies = [
  "adler2",
+ "simd-adler32",
 ]
 
 [[package]]
 name = "mio"
-version = "1.0.4"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
+checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
 dependencies = [
  "libc",
- "wasi 0.11.1+wasi-snapshot-preview1",
- "windows-sys 0.59.0",
+ "wasi",
+ "windows-sys 0.61.2",
 ]
 
 [[package]]
@@ -917,15 +882,6 @@ dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "object"
-version = "0.36.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
-dependencies = [
- "memchr",
-]
-
 [[package]]
 name = "once_cell"
 version = "1.21.3"
@@ -940,9 +896,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
 
 [[package]]
 name = "parking_lot"
-version = "0.12.4"
+version = "0.12.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -950,15 +906,15 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.11"
+version = "0.9.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
 dependencies = [
  "cfg-if",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets 0.52.6",
+ "windows-link",
 ]
 
 [[package]]
@@ -1017,9 +973,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
 
 [[package]]
 name = "potential_utf"
-version = "0.1.2"
+version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
+checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a"
 dependencies = [
  "zerovec",
 ]
@@ -1044,9 +1000,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.40"
+version = "1.0.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
 dependencies = [
  "proc-macro2",
 ]
@@ -1113,23 +1069,23 @@ version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
 dependencies = [
- "getrandom 0.3.3",
+ "getrandom 0.3.4",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.17"
+version = "0.5.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
 dependencies = [
  "bitflags",
 ]
 
 [[package]]
 name = "regex"
-version = "1.11.3"
+version = "1.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c"
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1139,9 +1095,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.11"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad"
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1150,9 +1106,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.5"
+version = "0.8.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
 
 [[package]]
 name = "rsa"
@@ -1174,12 +1130,6 @@ dependencies = [
  "zeroize",
 ]
 
-[[package]]
-name = "rustc-demangle"
-version = "0.1.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
-
 [[package]]
 name = "rustversion"
 version = "1.0.22"
@@ -1306,6 +1256,12 @@ dependencies = [
  "rand_core 0.6.4",
 ]
 
+[[package]]
+name = "simd-adler32"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+
 [[package]]
 name = "slab"
 version = "0.4.11"
@@ -1323,12 +1279,12 @@ dependencies = [
 
 [[package]]
 name = "socket2"
-version = "0.6.0"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
 dependencies = [
  "libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -1379,7 +1335,7 @@ dependencies = [
  "futures-intrusive",
  "futures-io",
  "futures-util",
- "hashbrown",
+ "hashbrown 0.15.5",
  "hashlink",
  "indexmap",
  "log",
@@ -1390,7 +1346,7 @@ dependencies = [
  "serde_json",
  "sha2",
  "smallvec",
- "thiserror 2.0.15",
+ "thiserror 2.0.17",
  "tokio",
  "tokio-stream",
  "tracing",
@@ -1472,7 +1428,7 @@ dependencies = [
  "smallvec",
  "sqlx-core",
  "stringprep",
- "thiserror 2.0.15",
+ "thiserror 2.0.17",
  "tracing",
  "whoami",
 ]
@@ -1509,7 +1465,7 @@ dependencies = [
  "smallvec",
  "sqlx-core",
  "stringprep",
- "thiserror 2.0.15",
+ "thiserror 2.0.17",
  "tracing",
  "whoami",
 ]
@@ -1533,16 +1489,16 @@ dependencies = [
  "serde",
  "serde_urlencoded",
  "sqlx-core",
- "thiserror 2.0.15",
+ "thiserror 2.0.17",
  "tracing",
  "url",
 ]
 
 [[package]]
 name = "stable_deref_trait"
-version = "1.2.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
 
 [[package]]
 name = "stringprep"
@@ -1563,9 +1519,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.106"
+version = "2.0.107"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
+checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1594,11 +1550,11 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "2.0.15"
+version = "2.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80d76d3f064b981389ecb4b6b7f45a0bf9fdac1d5b9204c7bd6714fecc302850"
+checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
 dependencies = [
- "thiserror-impl 2.0.15",
+ "thiserror-impl 2.0.17",
 ]
 
 [[package]]
@@ -1614,9 +1570,9 @@ dependencies = [
 
 [[package]]
 name = "thiserror-impl"
-version = "2.0.15"
+version = "2.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d29feb33e986b6ea906bd9c3559a856983f92371b3eaa5e83782a351623de0"
+checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1635,9 +1591,9 @@ dependencies = [
 
 [[package]]
 name = "tinyvec"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -1650,29 +1606,26 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.47.1"
+version = "1.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
 dependencies = [
- "backtrace",
  "bytes",
- "io-uring",
  "libc",
  "mio",
  "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
- "slab",
  "socket2",
  "tokio-macros",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
 ]
 
 [[package]]
 name = "tokio-macros"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1733,9 +1686,9 @@ dependencies = [
 
 [[package]]
 name = "typenum"
-version = "1.18.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
 
 [[package]]
 name = "unicode-bidi"
@@ -1745,9 +1698,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.18"
+version = "1.0.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
 
 [[package]]
 name = "unicode-normalization"
@@ -1801,12 +1754,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
 
 [[package]]
-name = "wasi"
-version = "0.14.2+wasi-0.2.4"
+name = "wasip2"
+version = "1.0.1+wasi-0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
 dependencies = [
- "wit-bindgen-rt",
+ "wit-bindgen",
 ]
 
 [[package]]
@@ -1825,6 +1778,12 @@ dependencies = [
  "wasite",
 ]
 
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
 [[package]]
 name = "windows-sys"
 version = "0.48.0"
@@ -1843,6 +1802,24 @@ dependencies = [
  "windows-targets 0.52.6",
 ]
 
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link",
+]
+
 [[package]]
 name = "windows-targets"
 version = "0.48.5"
@@ -1867,13 +1844,30 @@ dependencies = [
  "windows_aarch64_gnullvm 0.52.6",
  "windows_aarch64_msvc 0.52.6",
  "windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm",
+ "windows_i686_gnullvm 0.52.6",
  "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-targets"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
+
 [[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.48.5"
@@ -1886,6 +1880,12 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+
 [[package]]
 name = "windows_aarch64_msvc"
 version = "0.48.5"
@@ -1898,6 +1898,12 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+
 [[package]]
 name = "windows_i686_gnu"
 version = "0.48.5"
@@ -1910,12 +1916,24 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
 [[package]]
 name = "windows_i686_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+
 [[package]]
 name = "windows_i686_msvc"
 version = "0.48.5"
@@ -1928,6 +1946,12 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+
 [[package]]
 name = "windows_x86_64_gnu"
 version = "0.48.5"
@@ -1940,6 +1964,12 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+
 [[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.48.5"
@@ -1952,6 +1982,12 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+
 [[package]]
 name = "windows_x86_64_msvc"
 version = "0.48.5"
@@ -1965,13 +2001,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
-name = "wit-bindgen-rt"
-version = "0.39.0"
+name = "windows_x86_64_msvc"
+version = "0.53.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
-dependencies = [
- "bitflags",
-]
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+
+[[package]]
+name = "wit-bindgen"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
 
 [[package]]
 name = "writeable"
@@ -2011,18 +2050,18 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.8.26"
+version = "0.8.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
+checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.8.26"
+version = "0.8.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
+checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2052,9 +2091,9 @@ dependencies = [
 
 [[package]]
 name = "zeroize"
-version = "1.8.1"
+version = "1.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
 
 [[package]]
 name = "zerotrie"

+ 2 - 2
frameworks/Rust/hyperlane/Cargo.toml

@@ -20,8 +20,8 @@ exclude = [
 
 [dependencies]
 futures = "0.3.31"
-hyperlane = "9.5.0"
-hyperlane-time = "0.7.8"
+hyperlane = "10.6.0"
+hyperlane-time = "0.7.12"
 num_cpus = "1.17.0"
 once_cell = "1.21.3"
 rand = "0.9.2"

+ 17 - 17
frameworks/Rust/hyperlane/src/db/fn.rs

@@ -1,11 +1,11 @@
 use super::*;
 
-pub fn get_db_connection() -> &'static DbPoolConnection {
+pub(crate) fn get_db_connection() -> &'static DbPoolConnection {
     &DB
 }
 
 #[cfg(feature = "dev")]
-pub async fn create_database() {
+pub(crate) async fn create_database() {
     let db_pool: &DbPoolConnection = get_db_connection();
     let _ = db_query(&format!("CREATE DATABASE {DATABASE_NAME};"))
         .execute(db_pool)
@@ -13,7 +13,7 @@ pub async fn create_database() {
 }
 
 #[cfg(feature = "dev")]
-pub async fn create_table() {
+pub(crate) async fn create_table() {
     let db_pool: &DbPoolConnection = get_db_connection();
     let _ = db_query(&format!(
         "CREATE TABLE IF NOT EXISTS {TABLE_NAME_WORLD} (
@@ -32,7 +32,7 @@ pub async fn create_table() {
 }
 
 #[cfg(feature = "dev")]
-pub async fn insert_records() {
+pub(crate) async fn insert_records() {
     let db_pool: &DbPoolConnection = get_db_connection();
     let row: PgRow = db_query(&format!("SELECT COUNT(*) FROM {TABLE_NAME_WORLD}"))
         .fetch_one(db_pool)
@@ -66,7 +66,7 @@ pub async fn insert_records() {
     let _ = db_query(&sql).execute(db_pool).await;
 }
 
-pub async fn init_cache() -> Vec<QueryRow> {
+pub(crate) async fn init_cache() -> Vec<QueryRow> {
     let mut res: Vec<QueryRow> = Vec::with_capacity(RANDOM_MAX as usize);
     let db_pool: &DbPoolConnection = get_db_connection();
     let sql: String = format!("SELECT id, randomNumber FROM {TABLE_NAME_WORLD} LIMIT {RANDOM_MAX}");
@@ -80,7 +80,7 @@ pub async fn init_cache() -> Vec<QueryRow> {
     res
 }
 
-pub async fn connection_db() -> DbPoolConnection {
+pub(crate) async fn connection_db() -> DbPoolConnection {
     let db_url: &str = match option_env!("POSTGRES_URL") {
         Some(it) => it,
         _ => &format!(
@@ -100,7 +100,7 @@ pub async fn connection_db() -> DbPoolConnection {
     pool
 }
 
-pub async fn get_update_data(limit: Queries) -> (Vec<QueryRow>, Vec<i32>, Vec<i32>) {
+pub(crate) async fn get_update_data(limit: Queries) -> (Vec<QueryRow>, Vec<i32>, Vec<i32>) {
     let db_pool: &DbPoolConnection = get_db_connection();
     let mut query_res_list: Vec<QueryRow> = Vec::with_capacity(limit as usize);
     let rows: Vec<QueryRow> = get_some_row_id(limit, db_pool).await;
@@ -115,7 +115,7 @@ pub async fn get_update_data(limit: Queries) -> (Vec<QueryRow>, Vec<i32>, Vec<i3
     (query_res_list, id_list, random_numbers)
 }
 
-pub async fn init_db() {
+pub(crate) async fn init_db() {
     #[cfg(feature = "dev")]
     {
         create_database().await;
@@ -123,24 +123,24 @@ pub async fn init_db() {
         insert_records().await;
     }
     let _ = get_db_connection();
-    let _ = CACHE.get(0);
+    let _ = CACHE.first();
 }
 
-pub async fn random_world_row(db_pool: &DbPoolConnection) -> QueryRow {
+pub(crate) async fn random_world_row(db_pool: &DbPoolConnection) -> QueryRow {
     let random_id: Queries = get_random_id();
     query_world_row(db_pool, random_id).await
 }
 
-pub async fn query_world_row(db_pool: &DbPoolConnection, id: Queries) -> QueryRow {
+pub(crate) async fn query_world_row(db_pool: &DbPoolConnection, id: Queries) -> QueryRow {
     let sql: &str = "SELECT id, randomNumber FROM World WHERE id = $1";
     if let Ok(rows) = db_query(sql).bind(id).fetch_one(db_pool).await {
         let random_number: i32 = rows.get(KEY_RANDOM_NUMBER);
-        return QueryRow::new(id as i32, random_number);
+        return QueryRow::new(id, random_number);
     }
-    return QueryRow::new(id as i32, 1);
+    QueryRow::new(id, 1)
 }
 
-pub async fn update_world_rows(limit: Queries) -> Vec<QueryRow> {
+pub(crate) async fn update_world_rows(limit: Queries) -> Vec<QueryRow> {
     let db_pool: &DbPoolConnection = get_db_connection();
     let (data, id_list, random_numbers) = get_update_data(limit).await;
     let sql: &str = "UPDATE World SET randomNumber = $1 WHERE id = $2";
@@ -159,14 +159,14 @@ pub async fn update_world_rows(limit: Queries) -> Vec<QueryRow> {
     data
 }
 
-pub async fn all_world_row() -> Vec<PgRow> {
+pub(crate) async fn all_world_row() -> Vec<PgRow> {
     let db_pool: &DbPoolConnection = get_db_connection();
     let sql: String = format!("SELECT id, message FROM {TABLE_NAME_FORTUNE}");
     let res: Vec<PgRow> = db_query(&sql).fetch_all(db_pool).await.unwrap_or_default();
-    return res;
+    res
 }
 
-pub async fn get_some_row_id(limit: Queries, db_pool: &DbPoolConnection) -> Vec<QueryRow> {
+pub(crate) async fn get_some_row_id(limit: Queries, db_pool: &DbPoolConnection) -> Vec<QueryRow> {
     let tasks: Vec<_> = (0..limit)
         .map(|_| {
             let db_pool: Pool<Postgres> = db_pool.clone();

+ 3 - 3
frameworks/Rust/hyperlane/src/db/mod.rs

@@ -2,8 +2,8 @@ pub(crate) mod r#fn;
 pub(crate) mod r#static;
 pub(crate) mod r#type;
 
-pub use r#fn::*;
-pub use r#static::*;
-pub use r#type::*;
+pub(crate) use r#fn::*;
+pub(crate) use r#static::*;
+pub(crate) use r#type::*;
 
 use super::*;

+ 27 - 7
frameworks/Rust/hyperlane/src/main.rs

@@ -12,11 +12,7 @@ pub(crate) use std::fmt;
 
 pub(crate) use futures::{executor::block_on, future::join_all};
 pub(crate) use hyperlane::{
-    tokio::{
-        runtime::{Builder, Runtime},
-        spawn,
-        task::JoinHandle,
-    },
+    tokio::{spawn, task::JoinHandle},
     *,
 };
 pub(crate) use hyperlane_time::*;
@@ -30,6 +26,30 @@ pub(crate) use sqlx::{
     query as db_query,
 };
 
-fn main() {
-    run_server();
+use middleware::*;
+use route::*;
+
+#[tokio::main]
+async fn main() {
+    init_db().await;
+
+    let config: ServerConfig = ServerConfig::new().await;
+    config.host("0.0.0.0").await;
+    config.port(8080).await;
+    config.buffer(256).await;
+    config.disable_linger().await;
+    config.disable_nodelay().await;
+
+    let server: Server = Server::from(config).await;
+    server.request_middleware::<RequestMiddleware>().await;
+    server.route::<PlaintextRoute>("/plaintext").await;
+    server.route::<JsonRoute>("/json").await;
+    server.route::<CachedQueryRoute>("/cached-quer").await;
+    server.route::<DbRoute>("/db").await;
+    server.route::<QueryRoute>("/query").await;
+    server.route::<FortunesRoute>("/fortunes").await;
+    server.route::<UpdateRoute>("/upda").await;
+
+    let server_hook: ServerControlHook = server.run().await.unwrap_or_default();
+    server_hook.wait().await;
 }

+ 0 - 16
frameworks/Rust/hyperlane/src/middleware/fn.rs

@@ -1,16 +0,0 @@
-use super::*;
-
-pub async fn request(ctx: Context) {
-    ctx.set_response_version(HttpVersion::HTTP1_1)
-        .await
-        .set_response_header(CONNECTION, KEEP_ALIVE)
-        .await
-        .set_response_header(SERVER, HYPERLANE)
-        .await
-        .set_response_header(DATE, &gmt())
-        .await
-        .set_response_status_code(200)
-        .await
-        .set_response_header(CONTENT_TYPE, APPLICATION_JSON)
-        .await;
-}

+ 22 - 0
frameworks/Rust/hyperlane/src/middleware/impl.rs

@@ -0,0 +1,22 @@
+use super::*;
+
+impl ServerHook for RequestMiddleware {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        ctx.set_response_version(HttpVersion::HTTP1_1)
+            .await
+            .set_response_header(CONNECTION, KEEP_ALIVE)
+            .await
+            .set_response_header(SERVER, HYPERLANE)
+            .await
+            .set_response_header(DATE, &gmt())
+            .await
+            .set_response_status_code(200)
+            .await
+            .set_response_header(CONTENT_TYPE, APPLICATION_JSON)
+            .await;
+    }
+}

+ 3 - 2
frameworks/Rust/hyperlane/src/middleware/mod.rs

@@ -1,5 +1,6 @@
-pub(crate) mod r#fn;
+pub(crate) mod r#impl;
+pub(crate) mod r#struct;
 
-pub use r#fn::*;
+pub(crate) use r#struct::*;
 
 use super::*;

+ 1 - 0
frameworks/Rust/hyperlane/src/middleware/struct.rs

@@ -0,0 +1 @@
+pub(crate) struct RequestMiddleware;

+ 0 - 148
frameworks/Rust/hyperlane/src/route/fn.rs

@@ -1,148 +0,0 @@
-use super::*;
-
-pub async fn json(ctx: Context) {
-    let json: Value = json!({
-        "message": RESPONSEDATA_STR
-    });
-    let run = || async {
-        ctx.set_response_body(&serde_json::to_vec(&json).unwrap_or_default())
-            .await;
-        ctx.send().await.unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}
-
-pub async fn plaintext(ctx: Context) {
-    ctx.set_response_header(CONTENT_TYPE, TEXT_PLAIN).await;
-    ctx.set_response_body(&RESPONSEDATA_BIN).await;
-    let run = || async {
-        ctx.send().await.unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}
-
-pub async fn db(ctx: Context) {
-    let db_connection: &DbPoolConnection = get_db_connection();
-    let run = || async {
-        let query_row: QueryRow = random_world_row(db_connection).await;
-        ctx.set_response_body(&serde_json::to_vec(&query_row).unwrap_or_default())
-            .await
-            .send()
-            .await
-            .unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}
-
-pub async fn query(ctx: Context) {
-    let run = || async {
-        let queries: Queries = ctx
-            .try_get_request_query(QUERY_DB_QUERY_KEY)
-            .await
-            .and_then(|queries| queries.parse::<Queries>().ok())
-            .unwrap_or_default()
-            .min(ROW_LIMIT as Queries)
-            .max(1);
-        let db_pool: &DbPoolConnection = get_db_connection();
-        let data: Vec<QueryRow> = get_some_row_id(queries, db_pool).await;
-        ctx.set_response_body(&serde_json::to_vec(&data).unwrap_or_default())
-            .await
-            .send()
-            .await
-            .unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}
-
-pub async fn fortunes(ctx: Context) {
-    ctx.set_response_header(
-        CONTENT_TYPE,
-        &ContentType::format_content_type_with_charset(TEXT_HTML, UTF8),
-    )
-    .await;
-    let run = || async {
-        let all_rows: Vec<PgRow> = all_world_row().await;
-        let mut fortunes_list: Vec<Fortunes> = all_rows
-            .iter()
-            .map(|row| {
-                let id: i32 = row.get(KEY_ID);
-                let message: String = row.get(KEY_MESSAGE);
-                Fortunes::new(id, message)
-            })
-            .collect();
-        fortunes_list.push(Fortunes::new(
-            0,
-            "Additional fortune added at request time.".to_owned(),
-        ));
-        fortunes_list.sort_by(|it, next| it.message.cmp(&next.message));
-        let res: String = FortunesTemplate::new(fortunes_list).to_string();
-        ctx.set_response_body(&res).await.send().await.unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}
-
-pub async fn update(ctx: Context) {
-    let run = || async {
-        let queries: Queries = ctx
-            .try_get_request_query(UPDATE_DB_QUERY_KEY)
-            .await
-            .and_then(|queries| queries.parse::<Queries>().ok())
-            .unwrap_or_default()
-            .min(ROW_LIMIT as Queries)
-            .max(1);
-        let res: Vec<QueryRow> = update_world_rows(queries).await;
-        ctx.set_response_body(&serde_json::to_vec(&res).unwrap_or_default())
-            .await
-            .send()
-            .await
-            .unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}
-
-pub async fn cached_query(ctx: Context) {
-    let run = || async {
-        let count: Queries = ctx
-            .try_get_request_query(CACHE_QUERY_KEY)
-            .await
-            .and_then(|queries| queries.parse::<Queries>().ok())
-            .unwrap_or_default()
-            .min(ROW_LIMIT as Queries)
-            .max(1);
-        let res: Vec<&QueryRow> = CACHE.iter().take(count as usize).collect();
-        ctx.set_response_body(&serde_json::to_vec(&res).unwrap_or_default())
-            .await
-            .send()
-            .await
-            .unwrap();
-    };
-    run().await;
-    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
-        run().await;
-    }
-    ctx.closed().await;
-}

+ 189 - 0
frameworks/Rust/hyperlane/src/route/impl.rs

@@ -0,0 +1,189 @@
+use super::*;
+
+impl ServerHook for JsonRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        let json: Value = json!({
+            KEY_MESSAGE: RESPONSEDATA_STR
+        });
+        let run = || async {
+            ctx.set_response_body(&serde_json::to_vec(&json).unwrap_or_default())
+                .await;
+            ctx.send().await.unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}
+
+impl ServerHook for PlaintextRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        ctx.set_response_header(CONTENT_TYPE, TEXT_PLAIN).await;
+        ctx.set_response_body(&RESPONSEDATA_BIN).await;
+        let run = || async {
+            ctx.send().await.unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}
+
+impl ServerHook for DbRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        let db_connection: &DbPoolConnection = get_db_connection();
+        let run = || async {
+            let query_row: QueryRow = random_world_row(db_connection).await;
+            ctx.set_response_body(&serde_json::to_vec(&query_row).unwrap_or_default())
+                .await
+                .send()
+                .await
+                .unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}
+
+impl ServerHook for QueryRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        let run = || async {
+            let queries: Queries = ctx
+                .try_get_request_query(QUERY_DB_QUERY_KEY)
+                .await
+                .and_then(|queries| queries.parse::<Queries>().ok())
+                .unwrap_or_default()
+                .min(ROW_LIMIT as Queries)
+                .max(1);
+            let db_pool: &DbPoolConnection = get_db_connection();
+            let data: Vec<QueryRow> = get_some_row_id(queries, db_pool).await;
+            ctx.set_response_body(&serde_json::to_vec(&data).unwrap_or_default())
+                .await
+                .send()
+                .await
+                .unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}
+
+impl ServerHook for FortunesRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        ctx.set_response_header(
+            CONTENT_TYPE,
+            &ContentType::format_content_type_with_charset(TEXT_HTML, UTF8),
+        )
+        .await;
+        let run = || async {
+            let all_rows: Vec<PgRow> = all_world_row().await;
+            let mut fortunes_list: Vec<Fortunes> = all_rows
+                .iter()
+                .map(|row| {
+                    let id: i32 = row.get(KEY_ID);
+                    Fortunes::new(id, row.get(KEY_MESSAGE))
+                })
+                .collect();
+            fortunes_list.push(Fortunes::new(
+                0,
+                "Additional fortune added at request time.".to_owned(),
+            ));
+            fortunes_list.sort_by(|it, next| it.message.cmp(&next.message));
+            let res: String = FortunesTemplate::new(fortunes_list).to_string();
+            ctx.set_response_body(&res).await.send().await.unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}
+
+impl ServerHook for UpdateRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        let run = || async {
+            let queries: Queries = ctx
+                .try_get_request_query(UPDATE_DB_QUERY_KEY)
+                .await
+                .and_then(|queries| queries.parse::<Queries>().ok())
+                .unwrap_or_default()
+                .min(ROW_LIMIT as Queries)
+                .max(1);
+            let res: Vec<QueryRow> = update_world_rows(queries).await;
+            ctx.set_response_body(&serde_json::to_vec(&res).unwrap_or_default())
+                .await
+                .send()
+                .await
+                .unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}
+
+impl ServerHook for CachedQueryRoute {
+    async fn new(_ctx: &Context) -> Self {
+        Self
+    }
+
+    async fn handle(self, ctx: &Context) {
+        let run = || async {
+            let count: Queries = ctx
+                .try_get_request_query(CACHE_QUERY_KEY)
+                .await
+                .and_then(|queries| queries.parse::<Queries>().ok())
+                .unwrap_or_default()
+                .min(ROW_LIMIT as Queries)
+                .max(1);
+            let res: Vec<&QueryRow> = CACHE.iter().take(count as usize).collect();
+            ctx.set_response_body(&serde_json::to_vec(&res).unwrap_or_default())
+                .await
+                .send()
+                .await
+                .unwrap();
+        };
+        run().await;
+        while ctx.http_from_stream(HTTP_BUFFER).await.is_ok() {
+            run().await;
+        }
+        ctx.closed().await;
+    }
+}

+ 3 - 2
frameworks/Rust/hyperlane/src/route/mod.rs

@@ -1,6 +1,7 @@
-pub(crate) mod r#fn;
+pub(crate) mod r#impl;
+pub(crate) mod r#struct;
 
-pub use r#fn::*;
+pub(crate) use r#struct::*;
 
 use super::*;
 

+ 7 - 0
frameworks/Rust/hyperlane/src/route/struct.rs

@@ -0,0 +1,7 @@
+pub(crate) struct JsonRoute;
+pub(crate) struct PlaintextRoute;
+pub(crate) struct DbRoute;
+pub(crate) struct QueryRoute;
+pub(crate) struct FortunesRoute;
+pub(crate) struct UpdateRoute;
+pub(crate) struct CachedQueryRoute;

+ 21 - 21
frameworks/Rust/hyperlane/src/server/const.rs

@@ -1,21 +1,21 @@
-pub const RESPONSEDATA_STR: &str = "Hello, World!";
-pub const RESPONSEDATA_BIN: &[u8] = b"Hello, World!";
-pub const DATABASE_TYPE: &str = "postgres";
-pub const DATABASE_HOST: &str = "tfb-database";
-pub const DATABASE_USER_NAME: &str = "benchmarkdbuser";
-pub const DATABASE_USER_PASSWORD: &str = "benchmarkdbpass";
-pub const DATABASE_PORT: usize = 5_432;
-pub const DATABASE_NAME: &str = "hello_world";
-pub const TABLE_NAME_WORLD: &str = "World";
-pub const TABLE_NAME_FORTUNE: &str = "Fortune";
-pub const ROW_LIMIT: i32 = 500;
-pub const RANDOM_MAX: i32 = 10_000;
-pub const RANDOM_MAX_ADD_ONE: u32 = 10_001;
-pub const KEY_ID: &str = "id";
-pub const KEY_RANDOM_NUMBER: &str = "randomnumber";
-pub const KEY_MESSAGE: &str = "message";
-pub const DB_MAX_CONNECTIONS: u32 = 100;
-pub const HTTP_BUFFER: usize = 256;
-pub const QUERY_DB_QUERY_KEY: &str = "q";
-pub const UPDATE_DB_QUERY_KEY: &str = "q";
-pub const CACHE_QUERY_KEY: &str = "c";
+pub(crate) const RESPONSEDATA_STR: &str = "Hello, World!";
+pub(crate) const RESPONSEDATA_BIN: &[u8] = b"Hello, World!";
+pub(crate) const DATABASE_TYPE: &str = "postgres";
+pub(crate) const DATABASE_HOST: &str = "tfb-database";
+pub(crate) const DATABASE_USER_NAME: &str = "benchmarkdbuser";
+pub(crate) const DATABASE_USER_PASSWORD: &str = "benchmarkdbpass";
+pub(crate) const DATABASE_PORT: usize = 5_432;
+pub(crate) const DATABASE_NAME: &str = "hello_world";
+pub(crate) const TABLE_NAME_WORLD: &str = "World";
+pub(crate) const TABLE_NAME_FORTUNE: &str = "Fortune";
+pub(crate) const ROW_LIMIT: i32 = 500;
+pub(crate) const RANDOM_MAX: i32 = 10_000;
+pub(crate) const RANDOM_MAX_ADD_ONE: u32 = 10_001;
+pub(crate) const KEY_ID: &str = "id";
+pub(crate) const KEY_RANDOM_NUMBER: &str = "randomnumber";
+pub(crate) const KEY_MESSAGE: &str = "message";
+pub(crate) const DB_MAX_CONNECTIONS: u32 = 100;
+pub(crate) const HTTP_BUFFER: usize = 256;
+pub(crate) const QUERY_DB_QUERY_KEY: &str = "q";
+pub(crate) const UPDATE_DB_QUERY_KEY: &str = "q";
+pub(crate) const CACHE_QUERY_KEY: &str = "c";

+ 0 - 59
frameworks/Rust/hyperlane/src/server/fn.rs

@@ -1,59 +0,0 @@
-use super::*;
-
-fn runtime() -> Runtime {
-    Builder::new_multi_thread()
-        .worker_threads(get_thread_count())
-        .thread_stack_size(1_048_576)
-        .max_blocking_threads(2_048)
-        .max_io_events_per_tick(1_024)
-        .enable_all()
-        .build()
-        .unwrap()
-}
-
-async fn init_server() {
-    let config: ServerConfig = ServerConfig::new().await;
-    config
-        .host("0.0.0.0")
-        .await
-        .port(8080)
-        .await
-        .disable_linger()
-        .await
-        .disable_nodelay()
-        .await
-        .buffer(256)
-        .await;
-    Server::from(config)
-        .await
-        .request_middleware(middleware::request)
-        .await
-        .route("/plaintext", route::plaintext)
-        .await
-        .route("/json", route::json)
-        .await
-        .route("/cached-quer", route::cached_query)
-        .await
-        .route("/db", route::db)
-        .await
-        .route("/query", route::query)
-        .await
-        .route("/fortunes", route::fortunes)
-        .await
-        .route("/upda", route::update)
-        .await
-        .run()
-        .await
-        .unwrap()
-        .wait()
-        .await;
-}
-
-async fn init() {
-    init_db().await;
-    init_server().await;
-}
-
-pub fn run_server() {
-    runtime().block_on(init());
-}

+ 3 - 5
frameworks/Rust/hyperlane/src/server/mod.rs

@@ -1,12 +1,10 @@
 pub(crate) mod r#const;
-pub(crate) mod r#fn;
 pub(crate) mod r#impl;
 pub(crate) mod r#struct;
 pub(crate) mod r#type;
 
-pub use r#const::*;
-pub use r#fn::*;
-pub use r#struct::*;
-pub use r#type::*;
+pub(crate) use r#const::*;
+pub(crate) use r#struct::*;
+pub(crate) use r#type::*;
 
 use super::*;

+ 7 - 7
frameworks/Rust/hyperlane/src/server/struct.rs

@@ -2,16 +2,16 @@ use super::*;
 
 #[allow(bad_style)]
 #[derive(Serialize, Default, Clone)]
-pub struct QueryRow {
-    pub id: Queries,
-    pub randomNumber: Queries,
+pub(crate) struct QueryRow {
+    pub(crate) id: Queries,
+    pub(crate) randomNumber: Queries,
 }
 
 #[derive(Serialize)]
-pub struct Fortunes {
-    pub id: Queries,
-    pub message: String,
+pub(crate) struct Fortunes {
+    pub(crate) id: Queries,
+    pub(crate) message: String,
 }
 
 #[derive(Serialize)]
-pub struct FortunesTemplate(pub Vec<Fortunes>);
+pub(crate) struct FortunesTemplate(pub(crate) Vec<Fortunes>);

+ 3 - 3
frameworks/Rust/hyperlane/src/utils/fn.rs

@@ -1,10 +1,10 @@
 use super::*;
 
-pub fn get_thread_count() -> usize {
+pub(crate) fn get_thread_count() -> usize {
     num_cpus::get().max(1)
 }
 
-pub fn escape_html(input: &str) -> String {
+pub(crate) fn escape_html(input: &str) -> String {
     let mut result: String = String::new();
     for ch in input.chars() {
         match ch {
@@ -19,7 +19,7 @@ pub fn escape_html(input: &str) -> String {
     result
 }
 
-pub fn get_random_id() -> Queries {
+pub(crate) fn get_random_id() -> Queries {
     let mut rng: SmallRng = SmallRng::from_rng(&mut rng());
     let random_id: u32 = rng.random_range(1..RANDOM_MAX_ADD_ONE);
     random_id as Queries

+ 1 - 1
frameworks/Rust/hyperlane/src/utils/mod.rs

@@ -1,5 +1,5 @@
 pub(crate) mod r#fn;
 
-pub use r#fn::*;
+pub(crate) use r#fn::*;
 
 use super::*;