diff --git a/frameworks/Rust/hyperlane/Cargo.lock b/frameworks/Rust/hyperlane/Cargo.lock index 34ca8f6945a..ecbf124903f 100644 --- a/frameworks/Rust/hyperlane/Cargo.lock +++ b/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" diff --git a/frameworks/Rust/hyperlane/Cargo.toml b/frameworks/Rust/hyperlane/Cargo.toml index a1a42b0caf4..cedd3fad820 100644 --- a/frameworks/Rust/hyperlane/Cargo.toml +++ b/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" diff --git a/frameworks/Rust/hyperlane/src/db/fn.rs b/frameworks/Rust/hyperlane/src/db/fn.rs index 6385c2ded85..8418f711c88 100644 --- a/frameworks/Rust/hyperlane/src/db/fn.rs +++ b/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 { +pub(crate) async fn init_cache() -> Vec { let mut res: Vec = 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 { 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, Vec, Vec) { +pub(crate) async fn get_update_data(limit: Queries) -> (Vec, Vec, Vec) { let db_pool: &DbPoolConnection = get_db_connection(); let mut query_res_list: Vec = Vec::with_capacity(limit as usize); let rows: Vec = get_some_row_id(limit, db_pool).await; @@ -115,7 +115,7 @@ pub async fn get_update_data(limit: Queries) -> (Vec, Vec, Vec 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 { +pub(crate) async fn update_world_rows(limit: Queries) -> Vec { 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 { data } -pub async fn all_world_row() -> Vec { +pub(crate) async fn all_world_row() -> Vec { let db_pool: &DbPoolConnection = get_db_connection(); let sql: String = format!("SELECT id, message FROM {TABLE_NAME_FORTUNE}"); let res: Vec = 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 { +pub(crate) async fn get_some_row_id(limit: Queries, db_pool: &DbPoolConnection) -> Vec { let tasks: Vec<_> = (0..limit) .map(|_| { let db_pool: Pool = db_pool.clone(); diff --git a/frameworks/Rust/hyperlane/src/db/mod.rs b/frameworks/Rust/hyperlane/src/db/mod.rs index bc37c1dd653..7607362706f 100644 --- a/frameworks/Rust/hyperlane/src/db/mod.rs +++ b/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::*; diff --git a/frameworks/Rust/hyperlane/src/main.rs b/frameworks/Rust/hyperlane/src/main.rs index defdd97c550..ea346052b05 100644 --- a/frameworks/Rust/hyperlane/src/main.rs +++ b/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::().await; + server.route::("/plaintext").await; + server.route::("/json").await; + server.route::("/cached-quer").await; + server.route::("/db").await; + server.route::("/query").await; + server.route::("/fortunes").await; + server.route::("/upda").await; + + let server_hook: ServerControlHook = server.run().await.unwrap_or_default(); + server_hook.wait().await; } diff --git a/frameworks/Rust/hyperlane/src/middleware/fn.rs b/frameworks/Rust/hyperlane/src/middleware/fn.rs deleted file mode 100644 index ec7bfc7c7dc..00000000000 --- a/frameworks/Rust/hyperlane/src/middleware/fn.rs +++ /dev/null @@ -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; -} diff --git a/frameworks/Rust/hyperlane/src/middleware/impl.rs b/frameworks/Rust/hyperlane/src/middleware/impl.rs new file mode 100644 index 00000000000..f0559d8d539 --- /dev/null +++ b/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; + } +} diff --git a/frameworks/Rust/hyperlane/src/middleware/mod.rs b/frameworks/Rust/hyperlane/src/middleware/mod.rs index 4ecc55e4383..976fe87bede 100644 --- a/frameworks/Rust/hyperlane/src/middleware/mod.rs +++ b/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::*; diff --git a/frameworks/Rust/hyperlane/src/middleware/struct.rs b/frameworks/Rust/hyperlane/src/middleware/struct.rs new file mode 100644 index 00000000000..dd36f832031 --- /dev/null +++ b/frameworks/Rust/hyperlane/src/middleware/struct.rs @@ -0,0 +1 @@ +pub(crate) struct RequestMiddleware; diff --git a/frameworks/Rust/hyperlane/src/route/fn.rs b/frameworks/Rust/hyperlane/src/route/fn.rs deleted file mode 100644 index f0bb54f8a84..00000000000 --- a/frameworks/Rust/hyperlane/src/route/fn.rs +++ /dev/null @@ -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::().ok()) - .unwrap_or_default() - .min(ROW_LIMIT as Queries) - .max(1); - let db_pool: &DbPoolConnection = get_db_connection(); - let data: Vec = 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 = all_world_row().await; - let mut fortunes_list: Vec = 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::().ok()) - .unwrap_or_default() - .min(ROW_LIMIT as Queries) - .max(1); - let res: Vec = 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::().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; -} diff --git a/frameworks/Rust/hyperlane/src/route/impl.rs b/frameworks/Rust/hyperlane/src/route/impl.rs new file mode 100644 index 00000000000..96eb1080be9 --- /dev/null +++ b/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::().ok()) + .unwrap_or_default() + .min(ROW_LIMIT as Queries) + .max(1); + let db_pool: &DbPoolConnection = get_db_connection(); + let data: Vec = 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 = all_world_row().await; + let mut fortunes_list: Vec = 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::().ok()) + .unwrap_or_default() + .min(ROW_LIMIT as Queries) + .max(1); + let res: Vec = 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::().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; + } +} diff --git a/frameworks/Rust/hyperlane/src/route/mod.rs b/frameworks/Rust/hyperlane/src/route/mod.rs index 9fb49d8480f..6d47ae6e8b4 100644 --- a/frameworks/Rust/hyperlane/src/route/mod.rs +++ b/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::*; diff --git a/frameworks/Rust/hyperlane/src/route/struct.rs b/frameworks/Rust/hyperlane/src/route/struct.rs new file mode 100644 index 00000000000..107268ec78a --- /dev/null +++ b/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; diff --git a/frameworks/Rust/hyperlane/src/server/const.rs b/frameworks/Rust/hyperlane/src/server/const.rs index ec9fcd751dc..c6c0cd98828 100644 --- a/frameworks/Rust/hyperlane/src/server/const.rs +++ b/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"; diff --git a/frameworks/Rust/hyperlane/src/server/fn.rs b/frameworks/Rust/hyperlane/src/server/fn.rs deleted file mode 100644 index fb2b691c292..00000000000 --- a/frameworks/Rust/hyperlane/src/server/fn.rs +++ /dev/null @@ -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()); -} diff --git a/frameworks/Rust/hyperlane/src/server/mod.rs b/frameworks/Rust/hyperlane/src/server/mod.rs index b5ef54eb72a..d806bc43dc2 100644 --- a/frameworks/Rust/hyperlane/src/server/mod.rs +++ b/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::*; diff --git a/frameworks/Rust/hyperlane/src/server/struct.rs b/frameworks/Rust/hyperlane/src/server/struct.rs index 47cda95e823..779f5dd691f 100644 --- a/frameworks/Rust/hyperlane/src/server/struct.rs +++ b/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); +pub(crate) struct FortunesTemplate(pub(crate) Vec); diff --git a/frameworks/Rust/hyperlane/src/utils/fn.rs b/frameworks/Rust/hyperlane/src/utils/fn.rs index dbd4da546f3..bd29a75f21f 100644 --- a/frameworks/Rust/hyperlane/src/utils/fn.rs +++ b/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 diff --git a/frameworks/Rust/hyperlane/src/utils/mod.rs b/frameworks/Rust/hyperlane/src/utils/mod.rs index 4ecc55e4383..910fe065558 100644 --- a/frameworks/Rust/hyperlane/src/utils/mod.rs +++ b/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::*;