diff --git a/Cargo.lock b/Cargo.lock index 1a7a0db..0b7cb22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,7 +17,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy 0.8.42", + "zerocopy", ] [[package]] @@ -60,7 +60,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", - "anstyle-parse", + "anstyle-parse 0.2.7", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse 1.0.0", "anstyle-query", "anstyle-wincon", "colorchoice", @@ -83,6 +98,15 @@ dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + [[package]] name = "anstyle-query" version = "1.1.5" @@ -244,18 +268,31 @@ version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "bytes" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "cargo-hyperlight" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f745c885e25dbf258ac37804773e60fbb7fce9b46c1db020760131d3faffe35c" +dependencies = [ + "anyhow", + "console", + "const_format", + "glob", + "libc", + "os_str_bytes", + "regex", + "semver", + "serde", + "serde_json", + "which", +] + [[package]] name = "cc" version = "1.2.57" @@ -290,9 +327,49 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-link 0.2.1", + "windows-link", +] + +[[package]] +name = "clap" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +dependencies = [ + "clap_builder", + "clap_derive", ] +[[package]] +name = "clap_builder" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +dependencies = [ + "anstream 1.0.0", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + [[package]] name = "colorchoice" version = "1.0.5" @@ -317,6 +394,38 @@ version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" +[[package]] +name = "console" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" +dependencies = [ + "encode_unicode", + "libc", + "unicode-width", + "windows-sys 0.61.2", +] + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.4.2" @@ -449,11 +558,17 @@ dependencies = [ "libc", "nix", "smallvec", - "thiserror 2.0.18", + "thiserror", "tracing", - "zerocopy 0.8.42", + "zerocopy", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -479,7 +594,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" dependencies = [ - "anstream", + "anstream 0.6.21", "anstyle", "env_filter", "jiff", @@ -705,6 +820,12 @@ dependencies = [ "url", ] +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + [[package]] name = "globset" version = "0.4.18" @@ -905,22 +1026,23 @@ dependencies = [ [[package]] name = "hyperlight-common" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7f54e238983959d8b6df4c3ba649eb0419525ce70c640a81bd187b5c9ee6370" +checksum = "98f80e9aba9fce2a899c9ff0c62dd39cd479fa2f22ef578faed1d510c5becf94" dependencies = [ "anyhow", "flatbuffers", "log", "spin", + "thiserror", "tracing", ] [[package]] name = "hyperlight-component-macro" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7503ed5b290f80e869876fcf2f48846432b954c285caace4cddb1edcbafea216" +checksum = "f217d5bbb0d02c9aac81374c3161af2a3a46a5379a604b0799534762a534d75a" dependencies = [ "env_logger", "hyperlight-component-util", @@ -929,14 +1051,14 @@ dependencies = [ "proc-macro2", "quote", "syn", - "wasmparser 0.238.1", + "wasmparser 0.243.0", ] [[package]] name = "hyperlight-component-util" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c57729c707663f0973658cc96fc34bc7e32b9ceea4c36a1964a306601df69b95" +checksum = "b9b3299460dc5f39d37b8233c9aad7fc52c9548d96a76d35cdcc4f4f49ff6662" dependencies = [ "itertools", "log", @@ -944,14 +1066,14 @@ dependencies = [ "proc-macro2", "quote", "syn", - "wasmparser 0.238.1", + "wasmparser 0.243.0", ] [[package]] name = "hyperlight-host" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b93b8262196a19ddf6d43484b94e890e828aac0b99b0b2e55649da6e8df6a1" +checksum = "0f81d712e88785e8860be6b33048fc2c9ad6637864aa50fe95d0037cfa50a4fb" dependencies = [ "anyhow", "bitflags 2.11.0", @@ -969,41 +1091,43 @@ dependencies = [ "libc", "log", "metrics", - "mshv-bindings 0.2.1", - "mshv-bindings 0.3.2", - "mshv-ioctls 0.2.1", - "mshv-ioctls 0.3.2", + "mshv-bindings", + "mshv-ioctls", "page_size", "rand", "rust-embed", "serde_json", "sha256", "termcolor", - "thiserror 2.0.18", + "thiserror", "tracing", "tracing-core", "tracing-log", "uuid", "vmm-sys-util", "windows", - "windows-result 0.3.4", - "windows-sys 0.60.2", + "windows-result", + "windows-sys 0.61.2", "windows-version", ] [[package]] name = "hyperlight-wasm" -version = "0.9.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c0b51415ca0f861ccc14b81bc1bf6e1e821ff573b23828619316e6dc06522a" +checksum = "9f2e95638da8eeab5f884f61609dfadbc41babd1611c3222ac61c2c8fc3cf911" dependencies = [ "anyhow", "blake3", "built", + "cargo-hyperlight", "cfg-if", + "cfg_aliases", "chrono", + "env_logger", "goblin", "hyperlight-host", + "junction", "libc", "log", "metrics", @@ -1020,6 +1144,7 @@ version = "0.0.0" dependencies = [ "anyhow", "bytes", + "clap", "getrandom 0.3.4", "http-body-util", "hyper", @@ -1028,6 +1153,7 @@ dependencies = [ "hyperlight-component-macro", "hyperlight-host", "hyperlight-wasm", + "once_cell", "reqwest", "tokio", ] @@ -1044,7 +1170,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -1257,6 +1383,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "junction" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfc352a66ba903c23239ef51e809508b6fc2b0f90e3476ac7a9ff47e863ae95" +dependencies = [ + "scopeguard", + "windows-sys 0.61.2", +] + [[package]] name = "kvm-bindings" version = "0.14.0" @@ -1410,49 +1546,25 @@ dependencies = [ [[package]] name = "mshv-bindings" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f416b4432174e5a3f956a7887f4c1a4acea9511d81def67fcb8473293630ab9e" -dependencies = [ - "libc", - "num_enum", - "vmm-sys-util", - "zerocopy 0.7.35", -] - -[[package]] -name = "mshv-bindings" -version = "0.3.2" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0cb5031f3243a7459b7c13d960d25420980874eebda816db24ce6077e21d43" +checksum = "3cbfd4f32d185152003679339751839da77c17e18fa8882a11051a236f841426" dependencies = [ "libc", "num_enum", "vmm-sys-util", - "zerocopy 0.8.42", + "zerocopy", ] [[package]] name = "mshv-ioctls" -version = "0.2.1" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d57586da719aacc905042eea71ff2efb52d16c7228a94af155c9ea45fe09c1c7" +checksum = "f035616abe1e4cbc026a1a8094ff8d3900f5063fe6608309098bc745926fdfd8" dependencies = [ "libc", - "mshv-bindings 0.2.1", - "thiserror 1.0.69", - "vmm-sys-util", -] - -[[package]] -name = "mshv-ioctls" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89abe853221fa6f14ad4066affb9abda241a03d65622887d5794e1422d0bd75a" -dependencies = [ - "libc", - "mshv-bindings 0.3.2", - "thiserror 2.0.18", + "mshv-bindings", + "thiserror", "vmm-sys-util", ] @@ -1577,6 +1689,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "os_str_bytes" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63eceb7b5d757011a87d08eb2123db15d87fb0c281f65d101ce30a1e96c3ad5c" +dependencies = [ + "memchr", +] + [[package]] name = "page_size" version = "0.6.0" @@ -1607,7 +1728,7 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -1670,7 +1791,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.42", + "zerocopy", ] [[package]] @@ -1706,7 +1827,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.18", + "thiserror", "tokio", "tracing", "web-time", @@ -1727,7 +1848,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror", "tinyvec", "tracing", "web-time", @@ -1823,7 +1944,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 2.0.18", + "thiserror", ] [[package]] @@ -2100,6 +2221,10 @@ name = "semver" version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +dependencies = [ + "serde", + "serde_core", +] [[package]] name = "serde" @@ -2248,6 +2373,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" version = "2.6.1" @@ -2339,33 +2470,13 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "thiserror-impl", ] [[package]] @@ -2577,6 +2688,12 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -2791,9 +2908,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.238.1" +version = "0.243.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa99c8328024423875ae4a55345cfde8f0371327fb2d0f33b0f52a06fc44408" +checksum = "f6d8db401b0528ec316dfbe579e6ab4152d61739cfe076706d2009127970159d" dependencies = [ "bitflags 2.11.0", "hashbrown 0.15.5", @@ -2843,6 +2960,16 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "which" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" +dependencies = [ + "libc", + "regex", +] + [[package]] name = "winapi" version = "0.3.9" @@ -2876,37 +3003,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.61.3" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", - "windows-core 0.61.2", + "windows-core", "windows-future", - "windows-link 0.1.3", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-core", ] [[package]] @@ -2917,19 +3030,19 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] name = "windows-future" -version = "0.2.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", + "windows-core", + "windows-link", "windows-threading", ] @@ -2955,12 +3068,6 @@ dependencies = [ "syn", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -2969,12 +3076,12 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", + "windows-core", + "windows-link", ] [[package]] @@ -2983,18 +3090,9 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] @@ -3003,16 +3101,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -3021,7 +3110,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3048,7 +3137,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3073,7 +3162,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -3086,11 +3175,11 @@ dependencies = [ [[package]] name = "windows-threading" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -3099,7 +3188,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3325,34 +3414,13 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", -] - [[package]] name = "zerocopy" version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" dependencies = [ - "zerocopy-derive 0.8.42", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "zerocopy-derive", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 81382a0..4d774a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,16 +3,18 @@ name = "hyperlight-wasm-http-example" edition = "2024" [dependencies] -hyperlight-component-macro = { version = "0.9.0" } -hyperlight-common = { version = "0.9.0" } -hyperlight-host = { version = "0.9.0", default-features = false, features = [ "kvm", "mshv2" ] } -hyperlight-wasm = { version = "0.9.0" } - -hyper = "1.7" -reqwest = { version = "0.12", features = ["stream", "gzip", "brotli", "deflate", "rustls-tls", "blocking"] } -bytes = "1" -tokio = { version = "1.47", features = ["full"] } anyhow = "1.0" +bytes = "1" +clap = { version = "4.5.60", features = ["derive"] } +getrandom = "0.3.3" http-body-util = "0.1" +hyper = "1.7" hyper-util = { version = "0.1", features = ["full"] } -getrandom = "0.3.3" +hyperlight-component-macro = { version = "0.12.0" } +hyperlight-common = { version = "0.12.0" } +hyperlight-host = { version = "0.12.0", default-features = false, features = [ "kvm", "mshv3" ] } +hyperlight-wasm = { version = "0.12.0" } +once_cell = "1.21.3" +reqwest = { version = "0.12", features = ["stream", "gzip", "brotli", "deflate", "rustls-tls", "blocking"] } +tokio = { version = "1.47", features = ["full"] } + diff --git a/README.md b/README.md index 28ce412..c8732a2 100644 --- a/README.md +++ b/README.md @@ -94,10 +94,10 @@ You can then run the server: Rust: ```sh -cargo run -- out/sample_wasi_http_rust.aot +cargo run -- serve --addr 0.0.0.0:9999 {{ OUT_DIR }}/sample_wasi_http_rust.aot ``` JS: ```sh -cargo run -- out/sample_wasi_http_js.aot +cargo run -- serve --addr 0.0.0.0:8888 {{ OUT_DIR }}/sample_wasi_http_js.aot ``` diff --git a/justfile b/justfile index f15436b..71edff9 100644 --- a/justfile +++ b/justfile @@ -12,7 +12,7 @@ install-hyperlight-wasm-aot: test -f {{ BIN_DIR }}/hyperlight-wasm-aot || \ cargo install hyperlight-wasm-aot \ --locked \ - --version 0.9.0 \ + --version 0.12.0 \ --root {{ TARGET_DIR }} build-js-component: make-out-dir install-hyperlight-wasm-aot @@ -39,7 +39,7 @@ build: make-wit-world cargo build run-rust: build build-rust-component - cargo run -- {{ OUT_DIR }}/sample_wasi_http_rust.aot + cargo run -- serve --addr 0.0.0.0:9999 {{ OUT_DIR }}/sample_wasi_http_rust.aot run-js: build build-js-component - cargo run -- {{ OUT_DIR }}/sample-wasi-http-js.aot + cargo run -- serve --addr 0.0.0.0:8888 {{ OUT_DIR }}/sample-wasi-http-js.aot diff --git a/src/bindings.rs b/src/bindings.rs deleted file mode 100644 index 7a62163..0000000 --- a/src/bindings.rs +++ /dev/null @@ -1,9933 +0,0 @@ -#![allow( - clippy::all, - dead_code, - unused_variables, - non_snake_case, - unused_braces, - unused_mut -)] -pub mod r#root { - pub mod r#component { - pub trait RootExports { - type IncomingHandler: super::super::r#wasi::r#http::IncomingHandler< - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >>::T, - >; - fn r#incoming_handler( - &mut self, - ) -> impl ::core::borrow::BorrowMut; - } - pub trait RootImports { - type Poll: super::super::r#wasi::r#io::Poll; - fn r#poll(&mut self) -> impl ::core::borrow::BorrowMut; - type MonotonicClock: super::super::r#wasi::r#clocks::MonotonicClock< - ::T, - >; - fn r#monotonic_clock( - &mut self, - ) -> impl ::core::borrow::BorrowMut; - type Random: super::super::r#wasi::r#random::Random; - fn r#random(&mut self) -> impl ::core::borrow::BorrowMut; - type Error: super::super::r#wasi::r#io::Error; - fn r#error(&mut self) -> impl ::core::borrow::BorrowMut; - type Streams: super::super::r#wasi::r#io::Streams< - ::T, - ::T, - >; - fn r#streams(&mut self) -> impl ::core::borrow::BorrowMut; - type Stdout: super::super::r#wasi::r#cli::Stdout< - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >; - fn r#stdout(&mut self) -> impl ::core::borrow::BorrowMut; - type Stderr: super::super::r#wasi::r#cli::Stderr< - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >; - fn r#stderr(&mut self) -> impl ::core::borrow::BorrowMut; - type Stdin: super::super::r#wasi::r#cli::Stdin< - ::T, - ::T, - >>::T, - >; - fn r#stdin(&mut self) -> impl ::core::borrow::BorrowMut; - type Types: super::super::r#wasi::r#http::Types< - super::super::r#wasi::r#clocks::r#monotonic_clock::Duration, - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - ::T, - >; - fn r#types(&mut self) -> impl ::core::borrow::BorrowMut; - type OutgoingHandler: super::super::r#wasi::r#http::OutgoingHandler< - super::super::r#wasi::r#http::r#types::ErrorCode, - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - ::T, - >>::T, - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >::T, - >; - fn r#outgoing_handler( - &mut self, - ) -> impl ::core::borrow::BorrowMut; - } - pub trait Root { - type Exports: RootExports; - fn instantiate( - self, - imports: I, - ) -> Self::Exports; - } - } -} -pub mod r#wasi { - pub mod r#cli { - pub mod r#stderr { - pub type OutputStream = OutputStream; - } - pub mod r#stdin { - pub type InputStream = InputStream; - } - pub mod r#stdout { - pub type OutputStream = OutputStream; - } - pub trait Stderr { - fn r#get_stderr(&mut self) -> r#stderr::OutputStream; - } - pub trait Stdin { - fn r#get_stdin(&mut self) -> r#stdin::InputStream; - } - pub trait Stdout { - fn r#get_stdout(&mut self) -> r#stdout::OutputStream; - } - } - pub mod r#clocks { - pub mod r#monotonic_clock { - pub type Pollable = Pollable; - pub type Instant = u64; - pub type Duration = u64; - } - pub trait MonotonicClock { - fn r#now(&mut self) -> r#monotonic_clock::Instant; - fn r#resolution(&mut self) -> r#monotonic_clock::Duration; - fn r#subscribe_instant( - &mut self, - r#when: r#monotonic_clock::Instant, - ) -> r#monotonic_clock::Pollable; - fn r#subscribe_duration( - &mut self, - r#when: r#monotonic_clock::Duration, - ) -> r#monotonic_clock::Pollable; - } - } - pub mod r#http { - pub mod r#incoming_handler { - pub type IncomingRequest = IncomingRequest; - pub type ResponseOutparam = ResponseOutparam; - } - pub mod r#outgoing_handler { - pub type OutgoingRequest = OutgoingRequest; - pub type RequestOptions = RequestOptions; - pub type FutureIncomingResponse = FutureIncomingResponse; - pub type ErrorCode = ErrorCode; - } - pub mod r#types { - pub trait Fields { - type T: ::core::marker::Send; - fn new(&mut self) -> Self::T; - fn r#from_list( - &mut self, - r#entries: alloc::vec::Vec<(self::FieldName, self::FieldValue)>, - ) -> ::core::result::Result; - fn r#get( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#name: self::FieldName, - ) -> alloc::vec::Vec; - fn r#has( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#name: self::FieldName, - ) -> bool; - fn r#set( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#name: self::FieldName, - r#value: alloc::vec::Vec, - ) -> ::core::result::Result<(), self::HeaderError>; - fn r#delete( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#name: self::FieldName, - ) -> ::core::result::Result<(), self::HeaderError>; - fn r#append( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#name: self::FieldName, - r#value: self::FieldValue, - ) -> ::core::result::Result<(), self::HeaderError>; - fn r#entries( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> alloc::vec::Vec<(self::FieldName, self::FieldValue)>; - fn r#clone( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> Self::T; - } - pub trait FutureIncomingResponse { - type T: ::core::marker::Send; - fn r#subscribe( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Pollable; - fn r#get( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option< - ::core::result::Result< - ::core::result::Result, - (), - >, - >; - } - pub trait FutureTrailers { - type T: ::core::marker::Send; - fn r#subscribe( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Pollable; - fn r#get( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option< - ::core::result::Result< - ::core::result::Result< - ::core::option::Option>, - self::ErrorCode, - >, - (), - >, - >; - } - pub trait IncomingBody { - type T: ::core::marker::Send; - fn r#stream( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result, ()>; - fn r#finish(&mut self, r#this: Self::T) -> FutureTrailers; - } - pub trait IncomingRequest { - type T: ::core::marker::Send; - fn r#method( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Method; - fn r#path_with_query( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option; - fn r#scheme( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option; - fn r#authority( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option; - fn r#headers( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Headers; - fn r#consume( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result; - } - pub trait IncomingResponse { - type T: ::core::marker::Send; - fn r#status( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::StatusCode; - fn r#headers( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Headers; - fn r#consume( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result; - } - pub trait OutgoingBody { - type T: ::core::marker::Send; - fn r#write( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result, ()>; - fn r#finish( - &mut self, - r#this: Self::T, - r#trailers: ::core::option::Option>, - ) -> ::core::result::Result<(), self::ErrorCode>; - } - pub trait OutgoingRequest { - type T: ::core::marker::Send; - fn new(&mut self, r#headers: self::Headers) -> Self::T; - fn r#body( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result; - fn r#method( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Method; - fn r#set_method( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#method: self::Method, - ) -> ::core::result::Result<(), ()>; - fn r#path_with_query( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option; - fn r#set_path_with_query( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#path_with_query: ::core::option::Option, - ) -> ::core::result::Result<(), ()>; - fn r#scheme( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option; - fn r#set_scheme( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#scheme: ::core::option::Option, - ) -> ::core::result::Result<(), ()>; - fn r#authority( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option; - fn r#set_authority( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#authority: ::core::option::Option, - ) -> ::core::result::Result<(), ()>; - fn r#headers( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Headers; - } - pub trait OutgoingResponse { - type T: ::core::marker::Send; - fn new(&mut self, r#headers: self::Headers) -> Self::T; - fn r#status_code( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::StatusCode; - fn r#set_status_code( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#status_code: self::StatusCode, - ) -> ::core::result::Result<(), ()>; - fn r#headers( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Headers; - fn r#body( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result; - } - pub trait RequestOptions { - type T: ::core::marker::Send; - fn new(&mut self) -> Self::T; - fn r#connect_timeout( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option>; - fn r#set_connect_timeout( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#duration: ::core::option::Option>, - ) -> ::core::result::Result<(), ()>; - fn r#first_byte_timeout( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option>; - fn r#set_first_byte_timeout( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#duration: ::core::option::Option>, - ) -> ::core::result::Result<(), ()>; - fn r#between_bytes_timeout( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::option::Option>; - fn r#set_between_bytes_timeout( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#duration: ::core::option::Option>, - ) -> ::core::result::Result<(), ()>; - } - pub trait ResponseOutparam { - type T: ::core::marker::Send; - fn r#set( - &mut self, - r#param: Self::T, - r#response: ::core::result::Result, - ) -> (); - } - pub type Duration = Duration; - pub type InputStream = InputStream; - pub type Pollable = Pollable; - pub type OutputStream = OutputStream; - pub type IoError = Error; - pub type FieldKey = alloc::string::String; - pub type FieldName = self::FieldKey; - pub type FieldValue = alloc::vec::Vec; - #[derive(Debug)] - pub enum HeaderError { - InvalidSyntax, - Forbidden, - Immutable, - } - #[derive(Debug)] - pub enum Method { - Get, - Head, - Post, - Put, - Delete, - Connect, - Options, - Trace, - Patch, - Other(alloc::string::String), - } - #[derive(Debug)] - pub enum Scheme { - HTTP, - HTTPS, - Other(alloc::string::String), - } - pub type Headers = Fields; - #[derive(Debug)] - pub struct DNSErrorPayload { - pub r#rcode: ::core::option::Option, - pub r#info_code: ::core::option::Option, - } - #[derive(Debug)] - pub struct TLSAlertReceivedPayload { - pub r#alert_id: ::core::option::Option, - pub r#alert_message: ::core::option::Option, - } - #[derive(Debug)] - pub struct FieldSizePayload { - pub r#field_name: ::core::option::Option, - pub r#field_size: ::core::option::Option, - } - #[derive(Debug)] - pub enum ErrorCode { - DNSTimeout, - DNSError(self::DNSErrorPayload), - DestinationNotFound, - DestinationUnavailable, - DestinationIPProhibited, - DestinationIPUnroutable, - ConnectionRefused, - ConnectionTerminated, - ConnectionTimeout, - ConnectionReadTimeout, - ConnectionWriteTimeout, - ConnectionLimitReached, - TLSProtocolError, - TLSCertificateError, - TLSAlertReceived(self::TLSAlertReceivedPayload), - HTTPRequestDenied, - HTTPRequestLengthRequired, - HTTPRequestBodySize(::core::option::Option), - HTTPRequestMethodInvalid, - HTTPRequestURIInvalid, - HTTPRequestURITooLong, - HTTPRequestHeaderSectionSize(::core::option::Option), - HTTPRequestHeaderSize(::core::option::Option), - HTTPRequestTrailerSectionSize(::core::option::Option), - HTTPRequestTrailerSize(self::FieldSizePayload), - HTTPResponseIncomplete, - HTTPResponseHeaderSectionSize(::core::option::Option), - HTTPResponseHeaderSize(self::FieldSizePayload), - HTTPResponseBodySize(::core::option::Option), - HTTPResponseTrailerSectionSize(::core::option::Option), - HTTPResponseTrailerSize(self::FieldSizePayload), - HTTPResponseTransferCoding( - ::core::option::Option, - ), - HTTPResponseContentCoding(::core::option::Option), - HTTPResponseTimeout, - HTTPUpgradeFailed, - HTTPProtocolError, - LoopDetected, - ConfigurationError, - InternalError(::core::option::Option), - } - pub type StatusCode = u16; - pub type Trailers = Fields; - } - pub trait IncomingHandler { - fn r#handle( - &mut self, - r#request: r#incoming_handler::IncomingRequest, - r#response_out: r#incoming_handler::ResponseOutparam, - ) -> (); - } - pub trait OutgoingHandler< - ErrorCode, - FutureIncomingResponse, - OutgoingRequest, - RequestOptions, - > { - fn r#handle( - &mut self, - r#request: r#outgoing_handler::OutgoingRequest, - r#options: ::core::option::Option< - r#outgoing_handler::RequestOptions, - >, - ) -> ::core::result::Result< - r#outgoing_handler::FutureIncomingResponse, - r#outgoing_handler::ErrorCode, - >; - } - pub trait Types< - Duration, - Error, - InputStream, - OutputStream, - Pollable, - >: r#types::Fields + r#types::FutureIncomingResponse< - ::T, - ::T, - Pollable, - >>::T, - InputStream, - >>::T, - >>::T, - Pollable, - > + r#types::FutureTrailers< - ::T, - Pollable, - > + r#types::IncomingBody< - ::T, - Pollable, - >>::T, - InputStream, - > + r#types::IncomingRequest< - ::T, - ::T, - Pollable, - >>::T, - InputStream, - >>::T, - > + r#types::IncomingResponse< - ::T, - ::T, - Pollable, - >>::T, - InputStream, - >>::T, - > + r#types::OutgoingBody< - ::T, - OutputStream, - > + r#types::OutgoingRequest< - ::T, - ::T, - OutputStream, - >>::T, - > + r#types::OutgoingResponse< - ::T, - ::T, - OutputStream, - >>::T, - > + r#types::RequestOptions< - Duration, - > + r#types::ResponseOutparam< - ::T, - ::T, - OutputStream, - >>::T, - >>::T, - > { - fn r#http_error_code( - &mut self, - r#err: ::hyperlight_common::resource::BorrowedResourceGuard< - r#types::IoError, - >, - ) -> ::core::option::Option; - } - } - pub mod r#io { - pub mod r#error { - pub trait Error { - type T: ::core::marker::Send; - fn r#to_debug_string( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> alloc::string::String; - } - } - pub mod r#poll { - pub trait Pollable { - type T: ::core::marker::Send; - fn r#ready( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> bool; - fn r#block( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> (); - } - } - pub mod r#streams { - pub trait InputStream { - type T: ::core::marker::Send; - fn r#read( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#len: u64, - ) -> ::core::result::Result< - alloc::vec::Vec, - self::StreamError, - >; - fn r#blocking_read( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#len: u64, - ) -> ::core::result::Result< - alloc::vec::Vec, - self::StreamError, - >; - fn r#skip( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#len: u64, - ) -> ::core::result::Result>; - fn r#blocking_skip( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#len: u64, - ) -> ::core::result::Result>; - fn r#subscribe( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Pollable; - } - pub trait OutputStream { - type T: ::core::marker::Send; - fn r#check_write( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result>; - fn r#write( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#contents: alloc::vec::Vec, - ) -> ::core::result::Result<(), self::StreamError>; - fn r#blocking_write_and_flush( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#contents: alloc::vec::Vec, - ) -> ::core::result::Result<(), self::StreamError>; - fn r#flush( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result<(), self::StreamError>; - fn r#blocking_flush( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> ::core::result::Result<(), self::StreamError>; - fn r#subscribe( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - ) -> self::Pollable; - fn r#write_zeroes( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#len: u64, - ) -> ::core::result::Result<(), self::StreamError>; - fn r#blocking_write_zeroes_and_flush( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#len: u64, - ) -> ::core::result::Result<(), self::StreamError>; - fn r#splice( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#src: ::hyperlight_common::resource::BorrowedResourceGuard< - InputStream, - >, - r#len: u64, - ) -> ::core::result::Result>; - fn r#blocking_splice( - &mut self, - self_: ::hyperlight_common::resource::BorrowedResourceGuard, - r#src: ::hyperlight_common::resource::BorrowedResourceGuard< - InputStream, - >, - r#len: u64, - ) -> ::core::result::Result>; - } - pub type Error = Error; - pub type Pollable = Pollable; - #[derive(Debug)] - pub enum StreamError { - LastOperationFailed(self::Error), - Closed, - } - } - pub trait Error: r#error::Error {} - pub trait Poll: r#poll::Pollable { - fn r#poll( - &mut self, - r#in: alloc::vec::Vec< - ::hyperlight_common::resource::BorrowedResourceGuard< - ::T, - >, - >, - ) -> alloc::vec::Vec; - } - pub trait Streams< - Error, - Pollable, - >: r#streams::InputStream< - Error, - Pollable, - > + r#streams::OutputStream< - Error, - >::T, - Pollable, - > {} - } - pub mod r#random { - pub trait Random { - fn r#get_random_bytes(&mut self, r#len: u64) -> alloc::vec::Vec; - } - } -} -pub(crate) struct RootResources { - resource0: (), - resource1: (), - resource2: (), - resource3: (), - resource4: (), - resource5: (), - resource6: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - ::T, - >>::T, - >, - >, - resource7: (), - resource8: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - >>::T, - >, - >, - resource9: (), - resource10: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - >, - >, - resource11: (), - resource12: (), - resource13: (), - resource14: (), - resource15: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >, - >, - resource16: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >>::T, - >, - >, - resource17: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - >::T, - >, - >, - resource18: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >, - >, - resource19: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >, - >, - resource20: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >, - >, - resource21: (), - resource22: (), - resource23: (), - resource24: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - >, - >, - resource25: (), - resource26: (), - resource27: (), - resource28: (), - resource29: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - >, - >, - resource30: (), - resource31: (), - resource32: (), - resource33: (), - resource34: (), - resource35: (), - resource36: (), - resource37: (), - resource38: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >, - >, - resource39: (), - resource40: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - ::T, - >>::T, - >, - >, - resource41: (), - resource42: (), - resource43: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - >, - >, - resource44: (), - resource45: (), - resource46: (), - resource47: ::std::collections::VecDeque< - ::hyperlight_common::resource::ResourceEntry< - ::T, - >, - >, - _phantomI: ::core::marker::PhantomData, -} -impl RootResources { - fn new() -> Self { - RootResources { - resource0: (), - resource1: (), - resource2: (), - resource3: (), - resource4: (), - resource5: (), - resource6: ::std::collections::VecDeque::new(), - resource7: (), - resource8: ::std::collections::VecDeque::new(), - resource9: (), - resource10: ::std::collections::VecDeque::new(), - resource11: (), - resource12: (), - resource13: (), - resource14: (), - resource15: ::std::collections::VecDeque::new(), - resource16: ::std::collections::VecDeque::new(), - resource17: ::std::collections::VecDeque::new(), - resource18: ::std::collections::VecDeque::new(), - resource19: ::std::collections::VecDeque::new(), - resource20: ::std::collections::VecDeque::new(), - resource21: (), - resource22: (), - resource23: (), - resource24: ::std::collections::VecDeque::new(), - resource25: (), - resource26: (), - resource27: (), - resource28: (), - resource29: ::std::collections::VecDeque::new(), - resource30: (), - resource31: (), - resource32: (), - resource33: (), - resource34: (), - resource35: (), - resource36: (), - resource37: (), - resource38: ::std::collections::VecDeque::new(), - resource39: (), - resource40: ::std::collections::VecDeque::new(), - resource41: (), - resource42: (), - resource43: ::std::collections::VecDeque::new(), - resource44: (), - resource45: (), - resource46: (), - resource47: ::std::collections::VecDeque::new(), - _phantomI: ::core::marker::PhantomData, - } - } -} -impl< - I: r#root::r#component::RootImports, - S: ::hyperlight_host::sandbox::Callable, -> r#wasi::r#http::IncomingHandler< - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >>::T, -> for RootSandbox { - fn r#handle( - &mut self, - r#request: r#wasi::r#http::r#incoming_handler::IncomingRequest< - ::T, - ::T, - ::T, - >>::T, - ::T, - ::T, - >>::T, - >>::T, - >>::T, - >, - r#response_out: r#wasi::r#http::r#incoming_handler::ResponseOutparam< - ::T, - ::T, - ::T, - ::T, - ::T, - >>::T, - ::T, - >>::T, - >>::T, - >>::T, - >>::T, - >, - ) -> () { - let args = { - let mut rts = self.rt.lock().unwrap(); - ( - { - let i = rts.resource24.len(); - rts.resource24 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(r#request), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }, - { - let i = rts.resource16.len(); - rts.resource16 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - r#response_out, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }, - ) - }; - let ret = ::hyperlight_host::sandbox::Callable::call::< - ::std::vec::Vec, - >(&mut self.sb, "r#wasi::r#http::handle", args); - let ::std::result::Result::Ok(ret) = ret else { - panic!("bad return from guest {:?}", ret) - }; - #[allow(clippy::unused_unit)] () - } -} -pub struct RootSandbox< - T: r#root::r#component::RootImports, - S: ::hyperlight_host::sandbox::Callable, -> { - pub(crate) sb: S, - pub(crate) rt: ::std::sync::Arc<::std::sync::Mutex>>, -} -pub(crate) fn register_host_functions< - I: r#root::r#component::RootImports + ::std::marker::Send + 'static, - S: ::hyperlight_host::func::Registerable, ->(sb: &mut S, i: I) -> ::std::sync::Arc<::std::sync::Mutex>> { - let rts = ::std::sync::Arc::new(::std::sync::Mutex::new(RootResources::new())); - let imports = ::std::sync::Arc::new(::std::sync::Mutex::new(i)); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]pollable.ready", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#poll( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#poll::Pollable::r#ready( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource47[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ alloc::vec![if ret { 1u8 } else { 0u8 }] }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]pollable.block", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#poll( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#poll::Pollable::r#block( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource47[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok(::alloc::vec::Vec::new()) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::poll", - move |r#in: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#poll( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::Poll::r#poll( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let n = u32::from_ne_bytes(r#in[0..4].try_into().unwrap()) - as usize; - let mut in_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let in_elem = &r#in[cursor..]; - let (x, b) = { - let i = u32::from_ne_bytes( - in_elem[0..4].try_into().unwrap(), - ); - let Some(v) = rts.resource47[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - }; - cursor += b; - in_list.push(x); - } - (in_list, cursor) - } - .0, - ); - Ok({ - let mut ret_list = alloc::vec::Vec::new(); - let n = ret.len(); - ret_list.extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_elem in ret { - ret_list - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_elem)) - }) - } - ret_list - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#clocks::now", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#monotonic_clock( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#clocks::MonotonicClock::r#now( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ alloc::vec::Vec::from(u64::to_ne_bytes(ret)) }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#clocks::resolution", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#monotonic_clock( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#clocks::MonotonicClock::r#resolution( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ alloc::vec::Vec::from(u64::to_ne_bytes(ret)) }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#clocks::subscribe-instant", - move |r#when: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#monotonic_clock( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#clocks::MonotonicClock::r#subscribe_instant( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - ( - u64::from_ne_bytes(r#when[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - let i = rts.resource47.len(); - rts.resource47 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#clocks::subscribe-duration", - move |r#when: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#monotonic_clock( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#clocks::MonotonicClock::r#subscribe_duration( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - ( - u64::from_ne_bytes(r#when[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - let i = rts.resource47.len(); - rts.resource47 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#random::get-random-bytes", - move |r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#random( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#random::Random::r#get_random_bytes( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - let mut ret_list = alloc::vec::Vec::new(); - let n = ret.len(); - ret_list.extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_elem in ret { - ret_list - .extend({ alloc::vec::Vec::from(u8::to_ne_bytes(ret_elem)) }) - } - ret_list - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]error.to-debug-string", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#error( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#error::Error::r#to_debug_string( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource43[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let mut ret_string = alloc::vec::Vec::new(); - let ret_bytes = ret.into_bytes(); - ret_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_bytes.len() as u32), - ), - ); - ret_string.extend(ret_bytes); - ret_string - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]input-stream.read", - move |self_: ::std::vec::Vec, r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::InputStream::r#read( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let mut ret_body_list = alloc::vec::Vec::new(); - let n = ret_body.len(); - ret_body_list - .extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_body_elem in ret_body { - ret_body_list - .extend({ - alloc::vec::Vec::from(u8::to_ne_bytes(ret_body_elem)) - }) - } - ret_body_list - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]input-stream.blocking-read", - move |self_: ::std::vec::Vec, r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::InputStream::r#blocking_read( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let mut ret_body_list = alloc::vec::Vec::new(); - let n = ret_body.len(); - ret_body_list - .extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_body_elem in ret_body { - ret_body_list - .extend({ - alloc::vec::Vec::from(u8::to_ne_bytes(ret_body_elem)) - }) - } - ret_body_list - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]input-stream.skip", - move |self_: ::std::vec::Vec, r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::InputStream::r#skip( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]input-stream.blocking-skip", - move |self_: ::std::vec::Vec, r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::InputStream::r#blocking_skip( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]input-stream.subscribe", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::InputStream::r#subscribe( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource47.len(); - rts.resource47 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.check-write", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#check_write( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.write", - move |self_: ::std::vec::Vec, r#contents: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#write( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#contents[0..4].try_into().unwrap()) - as usize; - let mut contents_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let contents_elem = &r#contents[cursor..]; - let (x, b) = { - ( - u8::from_ne_bytes( - contents_elem[0..1usize].try_into().unwrap(), - ), - 1usize, - ) - }; - cursor += b; - contents_list.push(x); - } - (contents_list, cursor) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.blocking-write-and-flush", - move |self_: ::std::vec::Vec, r#contents: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#blocking_write_and_flush( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#contents[0..4].try_into().unwrap()) - as usize; - let mut contents_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let contents_elem = &r#contents[cursor..]; - let (x, b) = { - ( - u8::from_ne_bytes( - contents_elem[0..1usize].try_into().unwrap(), - ), - 1usize, - ) - }; - cursor += b; - contents_list.push(x); - } - (contents_list, cursor) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.flush", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#flush( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.blocking-flush", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#blocking_flush( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.subscribe", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#subscribe( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource47.len(); - rts.resource47 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.write-zeroes", - move |self_: ::std::vec::Vec, r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#write_zeroes( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.blocking-write-zeroes-and-flush", - move |self_: ::std::vec::Vec, r#len: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#blocking_write_zeroes_and_flush( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.splice", - move | - self_: ::std::vec::Vec, - r#src: ::std::vec::Vec, - r#len: ::std::vec::Vec| - { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#splice( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let i = u32::from_ne_bytes(r#src[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#io::[method]output-stream.blocking-splice", - move | - self_: ::std::vec::Vec, - r#src: ::std::vec::Vec, - r#len: ::std::vec::Vec| - { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#streams( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#io::r#streams::OutputStream::r#blocking_splice( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource38[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let i = u32::from_ne_bytes(r#src[0..4].try_into().unwrap()); - let Some(v) = rts.resource40[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u64::from_ne_bytes(r#len[0..8usize].try_into().unwrap()), - 8usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::LastOperationFailed(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - ret_body_ret - .extend({ - let i = rts.resource43.len(); - rts.resource43 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - } - r#wasi::r#io::r#streams::StreamError::< - ::T, - >::Closed => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#cli::get-stdout", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#stdout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#cli::Stdout::r#get_stdout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ - let i = rts.resource38.len(); - rts.resource38 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#cli::get-stderr", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#stderr( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#cli::Stderr::r#get_stderr( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ - let i = rts.resource38.len(); - rts.resource38 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#cli::get-stdin", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#stdin( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#cli::Stdin::r#get_stdin( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ - let i = rts.resource40.len(); - rts.resource40 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[constructor]fields", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::new( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[static]fields.from-list", - move |r#entries: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#from_list( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let n = u32::from_ne_bytes(r#entries[0..4].try_into().unwrap()) - as usize; - let mut entries_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let entries_elem = &r#entries[cursor..]; - let (x, b) = { - let entries_elem_elem = &entries_elem[0..]; - let mut entries_elem_len = 0; - let (entries_elem_elem0, b) = { - let n = u32::from_ne_bytes( - entries_elem_elem[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&entries_elem_elem[4..4 + n]) - .unwrap(), - ); - (s, n + 4) - }; - entries_elem_len += b; - let entries_elem_elem = &entries_elem_elem[b..]; - let (entries_elem_elem1, b) = { - let n = u32::from_ne_bytes( - entries_elem_elem[0..4].try_into().unwrap(), - ) as usize; - let mut entries_elem_elem_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let entries_elem_elem_elem = &entries_elem_elem[cursor..]; - let (x, b) = { - ( - u8::from_ne_bytes( - entries_elem_elem_elem[0..1usize].try_into().unwrap(), - ), - 1usize, - ) - }; - cursor += b; - entries_elem_elem_list.push(x); - } - (entries_elem_elem_list, cursor) - }; - entries_elem_len += b; - let entries_elem_elem = &entries_elem_elem[b..]; - ((entries_elem_elem0, entries_elem_elem1), entries_elem_len) - }; - cursor += b; - entries_list.push(x); - } - (entries_list, cursor) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::HeaderError::InvalidSyntax => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::HeaderError::Forbidden => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::HeaderError::Immutable => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.get", - move |self_: ::std::vec::Vec, r#name: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#get( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#name[0..4].try_into().unwrap()) - as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&r#name[4..4 + n]).unwrap(), - ); - (s, n + 4) - } - .0, - ); - Ok({ - let mut ret_list = alloc::vec::Vec::new(); - let n = ret.len(); - ret_list.extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_elem in ret { - ret_list - .extend({ - let mut ret_elem_list = alloc::vec::Vec::new(); - let n = ret_elem.len(); - ret_elem_list - .extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_elem_elem in ret_elem { - ret_elem_list - .extend({ - alloc::vec::Vec::from(u8::to_ne_bytes(ret_elem_elem)) - }) - } - ret_elem_list - }) - } - ret_list - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.has", - move |self_: ::std::vec::Vec, r#name: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#has( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#name[0..4].try_into().unwrap()) - as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&r#name[4..4 + n]).unwrap(), - ); - (s, n + 4) - } - .0, - ); - Ok({ alloc::vec![if ret { 1u8 } else { 0u8 }] }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.set", - move | - self_: ::std::vec::Vec, - r#name: ::std::vec::Vec, - r#value: ::std::vec::Vec| - { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#set( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#name[0..4].try_into().unwrap()) - as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&r#name[4..4 + n]).unwrap(), - ); - (s, n + 4) - } - .0, - { - let n = u32::from_ne_bytes(r#value[0..4].try_into().unwrap()) - as usize; - let mut value_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let value_elem = &r#value[cursor..]; - let (x, b) = { - let n = u32::from_ne_bytes( - value_elem[0..4].try_into().unwrap(), - ) as usize; - let mut value_elem_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let value_elem_elem = &value_elem[cursor..]; - let (x, b) = { - ( - u8::from_ne_bytes( - value_elem_elem[0..1usize].try_into().unwrap(), - ), - 1usize, - ) - }; - cursor += b; - value_elem_list.push(x); - } - (value_elem_list, cursor) - }; - cursor += b; - value_list.push(x); - } - (value_list, cursor) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::HeaderError::InvalidSyntax => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::HeaderError::Forbidden => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::HeaderError::Immutable => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.delete", - move |self_: ::std::vec::Vec, r#name: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#delete( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#name[0..4].try_into().unwrap()) - as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&r#name[4..4 + n]).unwrap(), - ); - (s, n + 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::HeaderError::InvalidSyntax => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::HeaderError::Forbidden => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::HeaderError::Immutable => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.append", - move | - self_: ::std::vec::Vec, - r#name: ::std::vec::Vec, - r#value: ::std::vec::Vec| - { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#append( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#name[0..4].try_into().unwrap()) - as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&r#name[4..4 + n]).unwrap(), - ); - (s, n + 4) - } - .0, - { - let n = u32::from_ne_bytes(r#value[0..4].try_into().unwrap()) - as usize; - let mut value_list = alloc::vec::Vec::new(); - let mut cursor = 4; - for i in 0..n { - let value_elem = &r#value[cursor..]; - let (x, b) = { - ( - u8::from_ne_bytes( - value_elem[0..1usize].try_into().unwrap(), - ), - 1usize, - ) - }; - cursor += b; - value_list.push(x); - } - (value_list, cursor) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::HeaderError::InvalidSyntax => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::HeaderError::Forbidden => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::HeaderError::Immutable => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.entries", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#entries( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let mut ret_list = alloc::vec::Vec::new(); - let n = ret.len(); - ret_list.extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_elem in ret { - ret_list - .extend({ - let mut ret_elem_tuple = alloc::vec::Vec::new(); - let ret_elem_elem = ret_elem.0; - ret_elem_tuple - .extend({ - let mut ret_elem_elem_string = alloc::vec::Vec::new(); - let ret_elem_elem_bytes = ret_elem_elem.into_bytes(); - ret_elem_elem_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_elem_elem_bytes.len() as u32), - ), - ); - ret_elem_elem_string.extend(ret_elem_elem_bytes); - ret_elem_elem_string - }); - let ret_elem_elem = ret_elem.1; - ret_elem_tuple - .extend({ - let mut ret_elem_elem_list = alloc::vec::Vec::new(); - let n = ret_elem_elem.len(); - ret_elem_elem_list - .extend(alloc::vec::Vec::from(u32::to_ne_bytes(n as u32))); - for ret_elem_elem_elem in ret_elem_elem { - ret_elem_elem_list - .extend({ - alloc::vec::Vec::from(u8::to_ne_bytes(ret_elem_elem_elem)) - }) - } - ret_elem_elem_list - }); - ret_elem_tuple - }) - } - ret_list - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]fields.clone", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::Fields::r#clone( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-request.method", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingRequest::r#method( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource24[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let mut ret_ret = alloc::vec::Vec::new(); - match ret { - r#wasi::r#http::r#types::Method::Get => { - ret_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::Method::Head => { - ret_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::Method::Post => { - ret_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::Method::Put => { - ret_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::Method::Delete => { - ret_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::Method::Connect => { - ret_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::Method::Options => { - ret_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::Method::Trace => { - ret_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::Method::Patch => { - ret_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::Method::Other(ret_body) => { - ret_ret.extend(u32::to_ne_bytes(9u32)); - ret_ret - .extend({ - let mut ret_body_string = alloc::vec::Vec::new(); - let ret_body_bytes = ret_body.into_bytes(); - ret_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_bytes.len() as u32), - ), - ); - ret_body_string.extend(ret_body_bytes); - ret_body_string - }) - } - } - ret_ret - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-request.path-with-query", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingRequest::r#path_with_query( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource24[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_string = alloc::vec::Vec::new(); - let ret_body_bytes = ret_body.into_bytes(); - ret_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_bytes.len() as u32), - ), - ); - ret_body_string.extend(ret_body_bytes); - ret_body_string - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-request.scheme", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingRequest::r#scheme( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource24[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::Scheme::HTTP => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::Scheme::HTTPS => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::Scheme::Other(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - ret_body_ret - .extend({ - let mut ret_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_bytes = ret_body_body.into_bytes(); - ret_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_bytes.len() as u32), - ), - ); - ret_body_body_string.extend(ret_body_body_bytes); - ret_body_body_string - }) - } - } - ret_body_ret - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-request.authority", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingRequest::r#authority( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource24[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_string = alloc::vec::Vec::new(); - let ret_body_bytes = ret_body.into_bytes(); - ret_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_bytes.len() as u32), - ), - ); - ret_body_string.extend(ret_body_bytes); - ret_body_string - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-request.headers", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingRequest::r#headers( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource24[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-request.consume", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingRequest::r#consume( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource24[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource20.len(); - rts.resource20 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-body.stream", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingBody::r#stream( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource20[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource40.len(); - rts.resource40 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[static]incoming-body.finish", - move |r#this: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingBody::r#finish( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#this[0..4].try_into().unwrap()); - let Some(v) = rts.resource20[i as usize].take() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource8.len(); - rts.resource8 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[constructor]outgoing-request", - move |r#headers: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::new( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#headers[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].take() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource19.len(); - rts.resource19 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.body", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#body( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource18.len(); - rts.resource18 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.method", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#method( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let mut ret_ret = alloc::vec::Vec::new(); - match ret { - r#wasi::r#http::r#types::Method::Get => { - ret_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::Method::Head => { - ret_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::Method::Post => { - ret_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::Method::Put => { - ret_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::Method::Delete => { - ret_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::Method::Connect => { - ret_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::Method::Options => { - ret_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::Method::Trace => { - ret_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::Method::Patch => { - ret_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::Method::Other(ret_body) => { - ret_ret.extend(u32::to_ne_bytes(9u32)); - ret_ret - .extend({ - let mut ret_body_string = alloc::vec::Vec::new(); - let ret_body_bytes = ret_body.into_bytes(); - ret_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_bytes.len() as u32), - ), - ); - ret_body_string.extend(ret_body_bytes); - ret_body_string - }) - } - } - ret_ret - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.set-method", - move |self_: ::std::vec::Vec, r#method: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#set_method( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u32::from_ne_bytes(r#method[0..4].try_into().unwrap()); - let method_body = &r#method[4..]; - match n { - 0u32 => (r#wasi::r#http::r#types::Method::Get, 4), - 1u32 => (r#wasi::r#http::r#types::Method::Head, 4), - 2u32 => (r#wasi::r#http::r#types::Method::Post, 4), - 3u32 => (r#wasi::r#http::r#types::Method::Put, 4), - 4u32 => (r#wasi::r#http::r#types::Method::Delete, 4), - 5u32 => (r#wasi::r#http::r#types::Method::Connect, 4), - 6u32 => (r#wasi::r#http::r#types::Method::Options, 4), - 7u32 => (r#wasi::r#http::r#types::Method::Trace, 4), - 8u32 => (r#wasi::r#http::r#types::Method::Patch, 4), - 9u32 => { - let (method_case_Other, b) = { - let n = u32::from_ne_bytes( - method_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&method_body[4..4 + n]).unwrap(), - ); - (s, n + 4) - }; - ( - r#wasi::r#http::r#types::Method::Other(method_case_Other), - b + 4, - ) - } - _ => panic!("invalid value for variant"), - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.path-with-query", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#path_with_query( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_string = alloc::vec::Vec::new(); - let ret_body_bytes = ret_body.into_bytes(); - ret_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_bytes.len() as u32), - ), - ); - ret_body_string.extend(ret_body_bytes); - ret_body_string - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.set-path-with-query", - move |self_: ::std::vec::Vec, r#path_with_query: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#set_path_with_query( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes( - r#path_with_query[0..1].try_into().unwrap(), - ); - if n != 0 { - let path_with_query_body = &r#path_with_query[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - path_with_query_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&path_with_query_body[4..4 + n]) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.scheme", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#scheme( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::Scheme::HTTP => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::Scheme::HTTPS => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - } - r#wasi::r#http::r#types::Scheme::Other(ret_body_body) => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - ret_body_ret - .extend({ - let mut ret_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_bytes = ret_body_body.into_bytes(); - ret_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_bytes.len() as u32), - ), - ); - ret_body_body_string.extend(ret_body_body_bytes); - ret_body_body_string - }) - } - } - ret_body_ret - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.set-scheme", - move |self_: ::std::vec::Vec, r#scheme: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#set_scheme( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#scheme[0..1].try_into().unwrap()); - if n != 0 { - let scheme_body = &r#scheme[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - scheme_body[0..4].try_into().unwrap(), - ); - let scheme_body_body = &scheme_body[4..]; - match n { - 0u32 => (r#wasi::r#http::r#types::Scheme::HTTP, 4), - 1u32 => (r#wasi::r#http::r#types::Scheme::HTTPS, 4), - 2u32 => { - let (scheme_body_case_Other, b) = { - let n = u32::from_ne_bytes( - scheme_body_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&scheme_body_body[4..4 + n]).unwrap(), - ); - (s, n + 4) - }; - ( - r#wasi::r#http::r#types::Scheme::Other( - scheme_body_case_Other, - ), - b + 4, - ) - } - _ => panic!("invalid value for variant"), - } - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.authority", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#authority( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_string = alloc::vec::Vec::new(); - let ret_body_bytes = ret_body.into_bytes(); - ret_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_bytes.len() as u32), - ), - ); - ret_body_string.extend(ret_body_bytes); - ret_body_string - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.set-authority", - move |self_: ::std::vec::Vec, r#authority: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#set_authority( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#authority[0..1].try_into().unwrap()); - if n != 0 { - let authority_body = &r#authority[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - authority_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&authority_body[4..4 + n]).unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-request.headers", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingRequest::r#headers( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-body.write", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingBody::r#write( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource18[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource38.len(); - rts.resource38 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[static]outgoing-body.finish", - move |r#this: ::std::vec::Vec, r#trailers: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingBody::r#finish( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#this[0..4].try_into().unwrap()); - let Some(v) = rts.resource18[i as usize].take() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#trailers[0..1].try_into().unwrap()); - if n != 0 { - let trailers_body = &r#trailers[1..]; - let (x, b) = { - let i = u32::from_ne_bytes( - trailers_body[0..4].try_into().unwrap(), - ); - let Some(v) = rts.resource29[i as usize].take() else { - panic!(""); - }; - (v, 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::ErrorCode::DNSTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::ErrorCode::DNSError( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_rcode = ret_body_body.r#rcode; - ret_body_body_record - .extend({ - match ret_body_body_field_rcode { - ::core::option::Option::Some( - ret_body_body_field_rcode_body, - ) => { - let mut ret_body_body_field_rcode_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_rcode_ret - .extend({ - let mut ret_body_body_field_rcode_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_rcode_body_bytes = ret_body_body_field_rcode_body - .into_bytes(); - ret_body_body_field_rcode_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_rcode_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_rcode_body_string - .extend(ret_body_body_field_rcode_body_bytes); - ret_body_body_field_rcode_body_string - }); - ret_body_body_field_rcode_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_info_code = ret_body_body - .r#info_code; - ret_body_body_record - .extend({ - match ret_body_body_field_info_code { - ::core::option::Option::Some( - ret_body_body_field_info_code_body, - ) => { - let mut ret_body_body_field_info_code_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_info_code_ret - .extend({ - alloc::vec::Vec::from( - u16::to_ne_bytes(ret_body_body_field_info_code_body), - ) - }); - ret_body_body_field_info_code_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::DestinationNotFound => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationUnavailable => { - ret_body_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPProhibited => { - ret_body_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPUnroutable => { - ret_body_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionRefused => { - ret_body_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTerminated => { - ret_body_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionReadTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(9u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionWriteTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(10u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionLimitReached => { - ret_body_ret.extend(u32::to_ne_bytes(11u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSProtocolError => { - ret_body_ret.extend(u32::to_ne_bytes(12u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSCertificateError => { - ret_body_ret.extend(u32::to_ne_bytes(13u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSAlertReceived( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(14u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_alert_id = ret_body_body.r#alert_id; - ret_body_body_record - .extend({ - match ret_body_body_field_alert_id { - ::core::option::Option::Some( - ret_body_body_field_alert_id_body, - ) => { - let mut ret_body_body_field_alert_id_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_alert_id_ret - .extend({ - alloc::vec::Vec::from( - u8::to_ne_bytes(ret_body_body_field_alert_id_body), - ) - }); - ret_body_body_field_alert_id_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_alert_message = ret_body_body - .r#alert_message; - ret_body_body_record - .extend({ - match ret_body_body_field_alert_message { - ::core::option::Option::Some( - ret_body_body_field_alert_message_body, - ) => { - let mut ret_body_body_field_alert_message_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_alert_message_ret - .extend({ - let mut ret_body_body_field_alert_message_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_alert_message_body_bytes = ret_body_body_field_alert_message_body - .into_bytes(); - ret_body_body_field_alert_message_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_alert_message_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_alert_message_body_string - .extend(ret_body_body_field_alert_message_body_bytes); - ret_body_body_field_alert_message_body_string - }); - ret_body_body_field_alert_message_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestDenied => { - ret_body_ret.extend(u32::to_ne_bytes(15u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestLengthRequired => { - ret_body_ret.extend(u32::to_ne_bytes(16u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestBodySize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(17u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestMethodInvalid => { - ret_body_ret.extend(u32::to_ne_bytes(18u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURIInvalid => { - ret_body_ret.extend(u32::to_ne_bytes(19u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURITooLong => { - ret_body_ret.extend(u32::to_ne_bytes(20u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(21u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(22u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_field_field_name = ret_body_body_body - .r#field_name; - ret_body_body_body_record - .extend({ - match ret_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_field_field_name_body_bytes = ret_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_field_field_name_body_string - .extend(ret_body_body_body_field_field_name_body_bytes); - ret_body_body_body_field_field_name_body_string - }); - ret_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_field_field_size = ret_body_body_body - .r#field_size; - ret_body_body_body_record - .extend({ - match ret_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_field_field_size_body), - ) - }); - ret_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_record - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(23u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(24u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseIncomplete => { - ret_body_ret.extend(u32::to_ne_bytes(25u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(26u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(27u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseBodySize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(28u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(29u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(30u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTransferCoding( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(31u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseContentCoding( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(32u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(33u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPUpgradeFailed => { - ret_body_ret.extend(u32::to_ne_bytes(34u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPProtocolError => { - ret_body_ret.extend(u32::to_ne_bytes(35u32)); - } - r#wasi::r#http::r#types::ErrorCode::LoopDetected => { - ret_body_ret.extend(u32::to_ne_bytes(36u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConfigurationError => { - ret_body_ret.extend(u32::to_ne_bytes(37u32)); - } - r#wasi::r#http::r#types::ErrorCode::InternalError( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(38u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[constructor]request-options", - move || { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::new( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - Ok({ - let i = rts.resource17.len(); - rts.resource17 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]request-options.connect-timeout", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::r#connect_timeout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource17[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]request-options.set-connect-timeout", - move |self_: ::std::vec::Vec, r#duration: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::r#set_connect_timeout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource17[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#duration[0..1].try_into().unwrap()); - if n != 0 { - let duration_body = &r#duration[1..]; - let (x, b) = { - ( - u64::from_ne_bytes( - duration_body[0..8usize].try_into().unwrap(), - ), - 8usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]request-options.first-byte-timeout", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::r#first_byte_timeout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource17[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]request-options.set-first-byte-timeout", - move |self_: ::std::vec::Vec, r#duration: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::r#set_first_byte_timeout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource17[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#duration[0..1].try_into().unwrap()); - if n != 0 { - let duration_body = &r#duration[1..]; - let (x, b) = { - ( - u64::from_ne_bytes( - duration_body[0..8usize].try_into().unwrap(), - ), - 8usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]request-options.between-bytes-timeout", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::r#between_bytes_timeout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource17[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body)) - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]request-options.set-between-bytes-timeout", - move |self_: ::std::vec::Vec, r#duration: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::RequestOptions::r#set_between_bytes_timeout( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource17[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#duration[0..1].try_into().unwrap()); - if n != 0 { - let duration_body = &r#duration[1..]; - let (x, b) = { - ( - u64::from_ne_bytes( - duration_body[0..8usize].try_into().unwrap(), - ), - 8usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[static]response-outparam.set", - move |r#param: ::std::vec::Vec, r#response: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::ResponseOutparam::r#set( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#param[0..4].try_into().unwrap()); - let Some(v) = rts.resource16[i as usize].take() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let i = u8::from_ne_bytes(r#response[0..1].try_into().unwrap()); - let response_body = &r#response[1..]; - if i == 0 { - let (x, b) = { - let i = u32::from_ne_bytes( - response_body[0..4].try_into().unwrap(), - ); - let Some(v) = rts.resource15[i as usize].take() else { - panic!(""); - }; - (v, 4) - }; - (::core::result::Result::Ok(x), b + 1) - } else { - let (x, b) = { - let n = u32::from_ne_bytes( - response_body[0..4].try_into().unwrap(), - ); - let response_body_body = &response_body[4..]; - match n { - 0u32 => (r#wasi::r#http::r#types::ErrorCode::DNSTimeout, 4), - 1u32 => { - let (response_body_case_DNSError, b) = { - let mut response_body_body_cursor = 0; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_rcode, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_field_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8( - &response_body_body_field_body[4..4 + n], - ) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_info_code, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - ( - u16::from_ne_bytes( - response_body_body_field_body[0..2usize].try_into().unwrap(), - ), - 2usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - ( - r#wasi::r#http::r#types::DNSErrorPayload { - r#rcode: response_body_body_field_rcode, - r#info_code: response_body_body_field_info_code, - }, - response_body_body_cursor, - ) - }; - ( - r#wasi::r#http::r#types::ErrorCode::DNSError( - response_body_case_DNSError, - ), - b + 4, - ) - } - 2u32 => { - (r#wasi::r#http::r#types::ErrorCode::DestinationNotFound, 4) - } - 3u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::DestinationUnavailable, - 4, - ) - } - 4u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::DestinationIPProhibited, - 4, - ) - } - 5u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::DestinationIPUnroutable, - 4, - ) - } - 6u32 => { - (r#wasi::r#http::r#types::ErrorCode::ConnectionRefused, 4) - } - 7u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::ConnectionTerminated, - 4, - ) - } - 8u32 => { - (r#wasi::r#http::r#types::ErrorCode::ConnectionTimeout, 4) - } - 9u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::ConnectionReadTimeout, - 4, - ) - } - 10u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::ConnectionWriteTimeout, - 4, - ) - } - 11u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::ConnectionLimitReached, - 4, - ) - } - 12u32 => { - (r#wasi::r#http::r#types::ErrorCode::TLSProtocolError, 4) - } - 13u32 => { - (r#wasi::r#http::r#types::ErrorCode::TLSCertificateError, 4) - } - 14u32 => { - let (response_body_case_TLSAlertReceived, b) = { - let mut response_body_body_cursor = 0; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_alert_id, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - ( - u8::from_ne_bytes( - response_body_body_field_body[0..1usize].try_into().unwrap(), - ), - 1usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_alert_message, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_field_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8( - &response_body_body_field_body[4..4 + n], - ) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - ( - r#wasi::r#http::r#types::TLSAlertReceivedPayload { - r#alert_id: response_body_body_field_alert_id, - r#alert_message: response_body_body_field_alert_message, - }, - response_body_body_cursor, - ) - }; - ( - r#wasi::r#http::r#types::ErrorCode::TLSAlertReceived( - response_body_case_TLSAlertReceived, - ), - b + 4, - ) - } - 15u32 => { - (r#wasi::r#http::r#types::ErrorCode::HTTPRequestDenied, 4) - } - 16u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestLengthRequired, - 4, - ) - } - 17u32 => { - let (response_body_case_HTTPRequestBodySize, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - ( - u64::from_ne_bytes( - response_body_body_body[0..8usize].try_into().unwrap(), - ), - 8usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestBodySize( - response_body_case_HTTPRequestBodySize, - ), - b + 4, - ) - } - 18u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestMethodInvalid, - 4, - ) - } - 19u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURIInvalid, - 4, - ) - } - 20u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURITooLong, - 4, - ) - } - 21u32 => { - let (response_body_case_HTTPRequestHeaderSectionSize, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSectionSize( - response_body_case_HTTPRequestHeaderSectionSize, - ), - b + 4, - ) - } - 22u32 => { - let (response_body_case_HTTPRequestHeaderSize, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - let mut response_body_body_body_cursor = 0; - let response_body_body_body_field = &response_body_body_body[response_body_body_body_cursor..]; - let (response_body_body_body_field_field_name, b) = { - let n = u8::from_ne_bytes( - response_body_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body_field_body = &response_body_body_body_field[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_body_field_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8( - &response_body_body_body_field_body[4..4 + n], - ) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_body_cursor += b; - let response_body_body_body_field = &response_body_body_body[response_body_body_body_cursor..]; - let (response_body_body_body_field_field_size, b) = { - let n = u8::from_ne_bytes( - response_body_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body_field_body = &response_body_body_body_field[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_body_field_body[0..4usize] - .try_into() - .unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_body_cursor += b; - ( - r#wasi::r#http::r#types::FieldSizePayload { - r#field_name: response_body_body_body_field_field_name, - r#field_size: response_body_body_body_field_field_size, - }, - response_body_body_body_cursor, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSize( - response_body_case_HTTPRequestHeaderSize, - ), - b + 4, - ) - } - 23u32 => { - let (response_body_case_HTTPRequestTrailerSectionSize, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSectionSize( - response_body_case_HTTPRequestTrailerSectionSize, - ), - b + 4, - ) - } - 24u32 => { - let (response_body_case_HTTPRequestTrailerSize, b) = { - let mut response_body_body_cursor = 0; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_field_name, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_field_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8( - &response_body_body_field_body[4..4 + n], - ) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_field_size, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_field_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - ( - r#wasi::r#http::r#types::FieldSizePayload { - r#field_name: response_body_body_field_field_name, - r#field_size: response_body_body_field_field_size, - }, - response_body_body_cursor, - ) - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSize( - response_body_case_HTTPRequestTrailerSize, - ), - b + 4, - ) - } - 25u32 => { - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseIncomplete, - 4, - ) - } - 26u32 => { - let (response_body_case_HTTPResponseHeaderSectionSize, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSectionSize( - response_body_case_HTTPResponseHeaderSectionSize, - ), - b + 4, - ) - } - 27u32 => { - let (response_body_case_HTTPResponseHeaderSize, b) = { - let mut response_body_body_cursor = 0; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_field_name, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_field_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8( - &response_body_body_field_body[4..4 + n], - ) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_field_size, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_field_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - ( - r#wasi::r#http::r#types::FieldSizePayload { - r#field_name: response_body_body_field_field_name, - r#field_size: response_body_body_field_field_size, - }, - response_body_body_cursor, - ) - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSize( - response_body_case_HTTPResponseHeaderSize, - ), - b + 4, - ) - } - 28u32 => { - let (response_body_case_HTTPResponseBodySize, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - ( - u64::from_ne_bytes( - response_body_body_body[0..8usize].try_into().unwrap(), - ), - 8usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseBodySize( - response_body_case_HTTPResponseBodySize, - ), - b + 4, - ) - } - 29u32 => { - let ( - response_body_case_HTTPResponseTrailerSectionSize, - b, - ) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSectionSize( - response_body_case_HTTPResponseTrailerSectionSize, - ), - b + 4, - ) - } - 30u32 => { - let (response_body_case_HTTPResponseTrailerSize, b) = { - let mut response_body_body_cursor = 0; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_field_name, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_field_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8( - &response_body_body_field_body[4..4 + n], - ) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - let response_body_body_field = &response_body_body[response_body_body_cursor..]; - let (response_body_body_field_field_size, b) = { - let n = u8::from_ne_bytes( - response_body_body_field[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_field_body = &response_body_body_field[1..]; - let (x, b) = { - ( - u32::from_ne_bytes( - response_body_body_field_body[0..4usize].try_into().unwrap(), - ), - 4usize, - ) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - response_body_body_cursor += b; - ( - r#wasi::r#http::r#types::FieldSizePayload { - r#field_name: response_body_body_field_field_name, - r#field_size: response_body_body_field_field_size, - }, - response_body_body_cursor, - ) - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSize( - response_body_case_HTTPResponseTrailerSize, - ), - b + 4, - ) - } - 31u32 => { - let (response_body_case_HTTPResponseTransferCoding, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&response_body_body_body[4..4 + n]) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTransferCoding( - response_body_case_HTTPResponseTransferCoding, - ), - b + 4, - ) - } - 32u32 => { - let (response_body_case_HTTPResponseContentCoding, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&response_body_body_body[4..4 + n]) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::HTTPResponseContentCoding( - response_body_case_HTTPResponseContentCoding, - ), - b + 4, - ) - } - 33u32 => { - (r#wasi::r#http::r#types::ErrorCode::HTTPResponseTimeout, 4) - } - 34u32 => { - (r#wasi::r#http::r#types::ErrorCode::HTTPUpgradeFailed, 4) - } - 35u32 => { - (r#wasi::r#http::r#types::ErrorCode::HTTPProtocolError, 4) - } - 36u32 => { - (r#wasi::r#http::r#types::ErrorCode::LoopDetected, 4) - } - 37u32 => { - (r#wasi::r#http::r#types::ErrorCode::ConfigurationError, 4) - } - 38u32 => { - let (response_body_case_InternalError, b) = { - let n = u8::from_ne_bytes( - response_body_body[0..1].try_into().unwrap(), - ); - if n != 0 { - let response_body_body_body = &response_body_body[1..]; - let (x, b) = { - let n = u32::from_ne_bytes( - response_body_body_body[0..4].try_into().unwrap(), - ) as usize; - let s = ::alloc::string::ToString::to_string( - ::core::str::from_utf8(&response_body_body_body[4..4 + n]) - .unwrap(), - ); - (s, n + 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - }; - ( - r#wasi::r#http::r#types::ErrorCode::InternalError( - response_body_case_InternalError, - ), - b + 4, - ) - } - _ => panic!("invalid value for variant"), - } - }; - (::core::result::Result::Err(x), b + 1) - } - } - .0, - ); - Ok(::alloc::vec::Vec::new()) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[constructor]outgoing-response", - move |r#headers: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingResponse::new( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#headers[0..4].try_into().unwrap()); - let Some(v) = rts.resource29[i as usize].take() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource15.len(); - rts.resource15 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-response.status-code", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingResponse::r#status_code( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource15[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ alloc::vec::Vec::from(u16::to_ne_bytes(ret)) }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-response.set-status-code", - move |self_: ::std::vec::Vec, r#status_code: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingResponse::r#set_status_code( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource15[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - { - ( - u16::from_ne_bytes( - r#status_code[0..2usize].try_into().unwrap(), - ), - 2usize, - ) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-response.headers", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingResponse::r#headers( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource15[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]outgoing-response.body", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::OutgoingResponse::r#body( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource15[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource18.len(); - rts.resource18 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-response.status", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingResponse::r#status( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource10[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ alloc::vec::Vec::from(u16::to_ne_bytes(ret)) }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-response.headers", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingResponse::r#headers( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource10[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]incoming-response.consume", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::IncomingResponse::r#consume( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource10[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource20.len(); - rts.resource20 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]future-trailers.subscribe", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::FutureTrailers::r#subscribe( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource8[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource47.len(); - rts.resource47 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]future-trailers.get", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::FutureTrailers::r#get( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource8[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - match ret_body { - ::core::result::Result::Ok(ret_body_body) => { - let mut ret_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(0), - ); - ret_body_ret - .extend({ - match ret_body_body { - ::core::result::Result::Ok(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(0), - ); - ret_body_body_ret - .extend({ - match ret_body_body_body { - ::core::option::Option::Some(ret_body_body_body_body) => { - let mut ret_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_ret - .extend({ - let i = rts.resource29.len(); - rts.resource29 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_ret - } - ::core::result::Result::Err(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_ret = alloc::vec::Vec::new(); - match ret_body_body_body { - r#wasi::r#http::r#types::ErrorCode::DNSTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::ErrorCode::DNSError( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(1u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_rcode = ret_body_body_body_body - .r#rcode; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_rcode { - ::core::option::Option::Some( - ret_body_body_body_body_field_rcode_body, - ) => { - let mut ret_body_body_body_body_field_rcode_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_rcode_ret - .extend({ - let mut ret_body_body_body_body_field_rcode_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_rcode_body_bytes = ret_body_body_body_body_field_rcode_body - .into_bytes(); - ret_body_body_body_body_field_rcode_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_rcode_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_field_rcode_body_string - .extend(ret_body_body_body_body_field_rcode_body_bytes); - ret_body_body_body_body_field_rcode_body_string - }); - ret_body_body_body_body_field_rcode_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_info_code = ret_body_body_body_body - .r#info_code; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_info_code { - ::core::option::Option::Some( - ret_body_body_body_body_field_info_code_body, - ) => { - let mut ret_body_body_body_body_field_info_code_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_info_code_ret - .extend({ - alloc::vec::Vec::from( - u16::to_ne_bytes( - ret_body_body_body_body_field_info_code_body, - ), - ) - }); - ret_body_body_body_body_field_info_code_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::DestinationNotFound => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationUnavailable => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPProhibited => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPUnroutable => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionRefused => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTerminated => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionReadTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(9u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionWriteTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(10u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionLimitReached => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(11u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSProtocolError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(12u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSCertificateError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(13u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSAlertReceived( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(14u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_alert_id = ret_body_body_body_body - .r#alert_id; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_alert_id { - ::core::option::Option::Some( - ret_body_body_body_body_field_alert_id_body, - ) => { - let mut ret_body_body_body_body_field_alert_id_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_alert_id_ret - .extend({ - alloc::vec::Vec::from( - u8::to_ne_bytes(ret_body_body_body_body_field_alert_id_body), - ) - }); - ret_body_body_body_body_field_alert_id_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_alert_message = ret_body_body_body_body - .r#alert_message; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_alert_message { - ::core::option::Option::Some( - ret_body_body_body_body_field_alert_message_body, - ) => { - let mut ret_body_body_body_body_field_alert_message_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_alert_message_ret - .extend({ - let mut ret_body_body_body_body_field_alert_message_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_alert_message_body_bytes = ret_body_body_body_body_field_alert_message_body - .into_bytes(); - ret_body_body_body_body_field_alert_message_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_alert_message_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_alert_message_body_string - .extend( - ret_body_body_body_body_field_alert_message_body_bytes, - ); - ret_body_body_body_body_field_alert_message_body_string - }); - ret_body_body_body_body_field_alert_message_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestDenied => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(15u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestLengthRequired => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(16u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestBodySize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(17u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u64::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestMethodInvalid => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(18u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURIInvalid => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(19u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURITooLong => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(20u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(21u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(22u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_field_field_name = ret_body_body_body_body_body - .r#field_name; - ret_body_body_body_body_body_record - .extend({ - match ret_body_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_field_field_name_body_bytes - .len() as u32, - ), - ), - ); - ret_body_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_body_field_field_size = ret_body_body_body_body_body - .r#field_size; - ret_body_body_body_body_body_record - .extend({ - match ret_body_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_body_record - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(23u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(24u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name = ret_body_body_body_body - .r#field_name; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_name_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_field_size = ret_body_body_body_body - .r#field_size; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseIncomplete => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(25u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(26u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(27u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name = ret_body_body_body_body - .r#field_name; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_name_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_field_size = ret_body_body_body_body - .r#field_size; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseBodySize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(28u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u64::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(29u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(30u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name = ret_body_body_body_body - .r#field_name; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_name_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_field_size = ret_body_body_body_body - .r#field_size; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTransferCoding( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(31u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_bytes = ret_body_body_body_body_body - .into_bytes(); - ret_body_body_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_body_string - .extend(ret_body_body_body_body_body_bytes); - ret_body_body_body_body_body_string - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseContentCoding( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(32u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_bytes = ret_body_body_body_body_body - .into_bytes(); - ret_body_body_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_body_string - .extend(ret_body_body_body_body_body_bytes); - ret_body_body_body_body_body_string - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(33u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPUpgradeFailed => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(34u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPProtocolError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(35u32)); - } - r#wasi::r#http::r#types::ErrorCode::LoopDetected => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(36u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConfigurationError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(37u32)); - } - r#wasi::r#http::r#types::ErrorCode::InternalError( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(38u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_bytes = ret_body_body_body_body_body - .into_bytes(); - ret_body_body_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_body_string - .extend(ret_body_body_body_body_body_bytes); - ret_body_body_body_body_body_string - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - } - ret_body_body_body_ret - }); - ret_body_body_ret - } - } - }); - ret_body_ret - } - ::core::result::Result::Err(ret_body_body) => { - let mut ret_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_ret - } - } - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]future-incoming-response.subscribe", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::FutureIncomingResponse::r#subscribe( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource6[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - let i = rts.resource47.len(); - rts.resource47 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::[method]future-incoming-response.get", - move |self_: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::r#types::FutureIncomingResponse::r#get( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(self_[0..4].try_into().unwrap()); - let Some(v) = rts.resource6[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - match ret_body { - ::core::result::Result::Ok(ret_body_body) => { - let mut ret_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(0), - ); - ret_body_ret - .extend({ - match ret_body_body { - ::core::result::Result::Ok(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(0), - ); - ret_body_body_ret - .extend({ - let i = rts.resource10.len(); - rts.resource10 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give( - ret_body_body_body, - ), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_body_body_ret - } - ::core::result::Result::Err(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_ret = alloc::vec::Vec::new(); - match ret_body_body_body { - r#wasi::r#http::r#types::ErrorCode::DNSTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::ErrorCode::DNSError( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(1u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_rcode = ret_body_body_body_body - .r#rcode; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_rcode { - ::core::option::Option::Some( - ret_body_body_body_body_field_rcode_body, - ) => { - let mut ret_body_body_body_body_field_rcode_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_rcode_ret - .extend({ - let mut ret_body_body_body_body_field_rcode_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_rcode_body_bytes = ret_body_body_body_body_field_rcode_body - .into_bytes(); - ret_body_body_body_body_field_rcode_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_rcode_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_field_rcode_body_string - .extend(ret_body_body_body_body_field_rcode_body_bytes); - ret_body_body_body_body_field_rcode_body_string - }); - ret_body_body_body_body_field_rcode_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_info_code = ret_body_body_body_body - .r#info_code; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_info_code { - ::core::option::Option::Some( - ret_body_body_body_body_field_info_code_body, - ) => { - let mut ret_body_body_body_body_field_info_code_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_info_code_ret - .extend({ - alloc::vec::Vec::from( - u16::to_ne_bytes( - ret_body_body_body_body_field_info_code_body, - ), - ) - }); - ret_body_body_body_body_field_info_code_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::DestinationNotFound => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationUnavailable => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPProhibited => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPUnroutable => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionRefused => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTerminated => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionReadTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(9u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionWriteTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(10u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionLimitReached => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(11u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSProtocolError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(12u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSCertificateError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(13u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSAlertReceived( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(14u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_alert_id = ret_body_body_body_body - .r#alert_id; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_alert_id { - ::core::option::Option::Some( - ret_body_body_body_body_field_alert_id_body, - ) => { - let mut ret_body_body_body_body_field_alert_id_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_alert_id_ret - .extend({ - alloc::vec::Vec::from( - u8::to_ne_bytes(ret_body_body_body_body_field_alert_id_body), - ) - }); - ret_body_body_body_body_field_alert_id_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_alert_message = ret_body_body_body_body - .r#alert_message; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_alert_message { - ::core::option::Option::Some( - ret_body_body_body_body_field_alert_message_body, - ) => { - let mut ret_body_body_body_body_field_alert_message_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_alert_message_ret - .extend({ - let mut ret_body_body_body_body_field_alert_message_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_alert_message_body_bytes = ret_body_body_body_body_field_alert_message_body - .into_bytes(); - ret_body_body_body_body_field_alert_message_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_alert_message_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_alert_message_body_string - .extend( - ret_body_body_body_body_field_alert_message_body_bytes, - ); - ret_body_body_body_body_field_alert_message_body_string - }); - ret_body_body_body_body_field_alert_message_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestDenied => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(15u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestLengthRequired => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(16u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestBodySize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(17u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u64::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestMethodInvalid => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(18u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURIInvalid => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(19u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURITooLong => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(20u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(21u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(22u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_field_field_name = ret_body_body_body_body_body - .r#field_name; - ret_body_body_body_body_body_record - .extend({ - match ret_body_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_field_field_name_body_bytes - .len() as u32, - ), - ), - ); - ret_body_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_body_field_field_size = ret_body_body_body_body_body - .r#field_size; - ret_body_body_body_body_body_record - .extend({ - match ret_body_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_body_record - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(23u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(24u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name = ret_body_body_body_body - .r#field_name; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_name_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_field_size = ret_body_body_body_body - .r#field_size; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseIncomplete => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(25u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(26u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(27u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name = ret_body_body_body_body - .r#field_name; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_name_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_field_size = ret_body_body_body_body - .r#field_size; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseBodySize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(28u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u64::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSectionSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(29u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_body_body), - ) - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSize( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(30u32)); - ret_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name = ret_body_body_body_body - .r#field_name; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_field_field_name_body_bytes = ret_body_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_name_body_bytes.len() - as u32, - ), - ), - ); - ret_body_body_body_body_field_field_name_body_string - .extend( - ret_body_body_body_body_field_field_name_body_bytes, - ); - ret_body_body_body_body_field_field_name_body_string - }); - ret_body_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_body_field_field_size = ret_body_body_body_body - .r#field_size; - ret_body_body_body_body_record - .extend({ - match ret_body_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_field_field_size_body, - ), - ) - }); - ret_body_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTransferCoding( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(31u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_bytes = ret_body_body_body_body_body - .into_bytes(); - ret_body_body_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_body_string - .extend(ret_body_body_body_body_body_bytes); - ret_body_body_body_body_body_string - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseContentCoding( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(32u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_bytes = ret_body_body_body_body_body - .into_bytes(); - ret_body_body_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_body_string - .extend(ret_body_body_body_body_body_bytes); - ret_body_body_body_body_body_string - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTimeout => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(33u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPUpgradeFailed => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(34u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPProtocolError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(35u32)); - } - r#wasi::r#http::r#types::ErrorCode::LoopDetected => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(36u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConfigurationError => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(37u32)); - } - r#wasi::r#http::r#types::ErrorCode::InternalError( - ret_body_body_body_body, - ) => { - ret_body_body_body_ret.extend(u32::to_ne_bytes(38u32)); - ret_body_body_body_ret - .extend({ - match ret_body_body_body_body { - ::core::option::Option::Some( - ret_body_body_body_body_body, - ) => { - let mut ret_body_body_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_body_ret - .extend({ - let mut ret_body_body_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_body_body_bytes = ret_body_body_body_body_body - .into_bytes(); - ret_body_body_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_body_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_body_body_string - .extend(ret_body_body_body_body_body_bytes); - ret_body_body_body_body_body_string - }); - ret_body_body_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - } - ret_body_body_body_ret - }); - ret_body_body_ret - } - } - }); - ret_body_ret - } - ::core::result::Result::Err(ret_body_body) => { - let mut ret_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_ret - } - } - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::http-error-code", - move |r#err: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#types( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::Types::r#http_error_code( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#err[0..4].try_into().unwrap()); - let Some(v) = rts.resource43[i as usize].borrow() else { - panic!(""); - }; - (v, 4) - } - .0, - ); - Ok({ - match ret { - ::core::option::Option::Some(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::ErrorCode::DNSTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::ErrorCode::DNSError( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_rcode = ret_body_body.r#rcode; - ret_body_body_record - .extend({ - match ret_body_body_field_rcode { - ::core::option::Option::Some( - ret_body_body_field_rcode_body, - ) => { - let mut ret_body_body_field_rcode_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_rcode_ret - .extend({ - let mut ret_body_body_field_rcode_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_rcode_body_bytes = ret_body_body_field_rcode_body - .into_bytes(); - ret_body_body_field_rcode_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_rcode_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_rcode_body_string - .extend(ret_body_body_field_rcode_body_bytes); - ret_body_body_field_rcode_body_string - }); - ret_body_body_field_rcode_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_info_code = ret_body_body - .r#info_code; - ret_body_body_record - .extend({ - match ret_body_body_field_info_code { - ::core::option::Option::Some( - ret_body_body_field_info_code_body, - ) => { - let mut ret_body_body_field_info_code_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_info_code_ret - .extend({ - alloc::vec::Vec::from( - u16::to_ne_bytes(ret_body_body_field_info_code_body), - ) - }); - ret_body_body_field_info_code_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::DestinationNotFound => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationUnavailable => { - ret_body_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPProhibited => { - ret_body_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPUnroutable => { - ret_body_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionRefused => { - ret_body_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTerminated => { - ret_body_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionReadTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(9u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionWriteTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(10u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionLimitReached => { - ret_body_ret.extend(u32::to_ne_bytes(11u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSProtocolError => { - ret_body_ret.extend(u32::to_ne_bytes(12u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSCertificateError => { - ret_body_ret.extend(u32::to_ne_bytes(13u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSAlertReceived( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(14u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_alert_id = ret_body_body.r#alert_id; - ret_body_body_record - .extend({ - match ret_body_body_field_alert_id { - ::core::option::Option::Some( - ret_body_body_field_alert_id_body, - ) => { - let mut ret_body_body_field_alert_id_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_alert_id_ret - .extend({ - alloc::vec::Vec::from( - u8::to_ne_bytes(ret_body_body_field_alert_id_body), - ) - }); - ret_body_body_field_alert_id_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_alert_message = ret_body_body - .r#alert_message; - ret_body_body_record - .extend({ - match ret_body_body_field_alert_message { - ::core::option::Option::Some( - ret_body_body_field_alert_message_body, - ) => { - let mut ret_body_body_field_alert_message_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_alert_message_ret - .extend({ - let mut ret_body_body_field_alert_message_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_alert_message_body_bytes = ret_body_body_field_alert_message_body - .into_bytes(); - ret_body_body_field_alert_message_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_alert_message_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_alert_message_body_string - .extend(ret_body_body_field_alert_message_body_bytes); - ret_body_body_field_alert_message_body_string - }); - ret_body_body_field_alert_message_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestDenied => { - ret_body_ret.extend(u32::to_ne_bytes(15u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestLengthRequired => { - ret_body_ret.extend(u32::to_ne_bytes(16u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestBodySize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(17u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestMethodInvalid => { - ret_body_ret.extend(u32::to_ne_bytes(18u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURIInvalid => { - ret_body_ret.extend(u32::to_ne_bytes(19u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURITooLong => { - ret_body_ret.extend(u32::to_ne_bytes(20u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(21u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(22u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_field_field_name = ret_body_body_body - .r#field_name; - ret_body_body_body_record - .extend({ - match ret_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_field_field_name_body_bytes = ret_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_field_field_name_body_string - .extend(ret_body_body_body_field_field_name_body_bytes); - ret_body_body_body_field_field_name_body_string - }); - ret_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_field_field_size = ret_body_body_body - .r#field_size; - ret_body_body_body_record - .extend({ - match ret_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_field_field_size_body), - ) - }); - ret_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_record - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(23u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(24u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseIncomplete => { - ret_body_ret.extend(u32::to_ne_bytes(25u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(26u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(27u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseBodySize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(28u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(29u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(30u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTransferCoding( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(31u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseContentCoding( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(32u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(33u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPUpgradeFailed => { - ret_body_ret.extend(u32::to_ne_bytes(34u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPProtocolError => { - ret_body_ret.extend(u32::to_ne_bytes(35u32)); - } - r#wasi::r#http::r#types::ErrorCode::LoopDetected => { - ret_body_ret.extend(u32::to_ne_bytes(36u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConfigurationError => { - ret_body_ret.extend(u32::to_ne_bytes(37u32)); - } - r#wasi::r#http::r#types::ErrorCode::InternalError( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(38u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - } - ret_body_ret - }); - ret_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - }, - ) - .unwrap(); - let captured_imports = imports.clone(); - let captured_rts = rts.clone(); - sb.register_host_function( - "r#wasi::r#http::handle", - move |r#request: ::std::vec::Vec, r#options: ::std::vec::Vec| { - let mut rts = captured_rts.lock().unwrap(); - let mut slf = captured_imports.lock().unwrap(); - let mut slf = ::std::ops::DerefMut::deref_mut(&mut slf); - let mut slf = r#root::r#component::RootImports::r#outgoing_handler( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - ); - let ret = r#wasi::r#http::OutgoingHandler::r#handle( - ::std::borrow::BorrowMut::::borrow_mut(&mut slf), - { - let i = u32::from_ne_bytes(r#request[0..4].try_into().unwrap()); - let Some(v) = rts.resource19[i as usize].take() else { - panic!(""); - }; - (v, 4) - } - .0, - { - let n = u8::from_ne_bytes(r#options[0..1].try_into().unwrap()); - if n != 0 { - let options_body = &r#options[1..]; - let (x, b) = { - let i = u32::from_ne_bytes( - options_body[0..4].try_into().unwrap(), - ); - let Some(v) = rts.resource17[i as usize].take() else { - panic!(""); - }; - (v, 4) - }; - (::core::option::Option::Some(x), b + 1) - } else { - (::core::option::Option::None, 1) - } - } - .0, - ); - Ok({ - match ret { - ::core::result::Result::Ok(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(0)); - ret_ret - .extend({ - let i = rts.resource6.len(); - rts.resource6 - .push_back( - ::hyperlight_common::resource::ResourceEntry::give(ret_body), - ); - alloc::vec::Vec::from(u32::to_ne_bytes(i as u32)) - }); - ret_ret - } - ::core::result::Result::Err(ret_body) => { - let mut ret_ret = alloc::vec::Vec::from(u8::to_ne_bytes(1)); - ret_ret - .extend({ - let mut ret_body_ret = alloc::vec::Vec::new(); - match ret_body { - r#wasi::r#http::r#types::ErrorCode::DNSTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(0u32)); - } - r#wasi::r#http::r#types::ErrorCode::DNSError( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(1u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_rcode = ret_body_body.r#rcode; - ret_body_body_record - .extend({ - match ret_body_body_field_rcode { - ::core::option::Option::Some( - ret_body_body_field_rcode_body, - ) => { - let mut ret_body_body_field_rcode_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_rcode_ret - .extend({ - let mut ret_body_body_field_rcode_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_rcode_body_bytes = ret_body_body_field_rcode_body - .into_bytes(); - ret_body_body_field_rcode_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_rcode_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_rcode_body_string - .extend(ret_body_body_field_rcode_body_bytes); - ret_body_body_field_rcode_body_string - }); - ret_body_body_field_rcode_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_info_code = ret_body_body - .r#info_code; - ret_body_body_record - .extend({ - match ret_body_body_field_info_code { - ::core::option::Option::Some( - ret_body_body_field_info_code_body, - ) => { - let mut ret_body_body_field_info_code_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_info_code_ret - .extend({ - alloc::vec::Vec::from( - u16::to_ne_bytes(ret_body_body_field_info_code_body), - ) - }); - ret_body_body_field_info_code_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::DestinationNotFound => { - ret_body_ret.extend(u32::to_ne_bytes(2u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationUnavailable => { - ret_body_ret.extend(u32::to_ne_bytes(3u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPProhibited => { - ret_body_ret.extend(u32::to_ne_bytes(4u32)); - } - r#wasi::r#http::r#types::ErrorCode::DestinationIPUnroutable => { - ret_body_ret.extend(u32::to_ne_bytes(5u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionRefused => { - ret_body_ret.extend(u32::to_ne_bytes(6u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTerminated => { - ret_body_ret.extend(u32::to_ne_bytes(7u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(8u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionReadTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(9u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionWriteTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(10u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConnectionLimitReached => { - ret_body_ret.extend(u32::to_ne_bytes(11u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSProtocolError => { - ret_body_ret.extend(u32::to_ne_bytes(12u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSCertificateError => { - ret_body_ret.extend(u32::to_ne_bytes(13u32)); - } - r#wasi::r#http::r#types::ErrorCode::TLSAlertReceived( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(14u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_alert_id = ret_body_body.r#alert_id; - ret_body_body_record - .extend({ - match ret_body_body_field_alert_id { - ::core::option::Option::Some( - ret_body_body_field_alert_id_body, - ) => { - let mut ret_body_body_field_alert_id_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_alert_id_ret - .extend({ - alloc::vec::Vec::from( - u8::to_ne_bytes(ret_body_body_field_alert_id_body), - ) - }); - ret_body_body_field_alert_id_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_alert_message = ret_body_body - .r#alert_message; - ret_body_body_record - .extend({ - match ret_body_body_field_alert_message { - ::core::option::Option::Some( - ret_body_body_field_alert_message_body, - ) => { - let mut ret_body_body_field_alert_message_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_alert_message_ret - .extend({ - let mut ret_body_body_field_alert_message_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_alert_message_body_bytes = ret_body_body_field_alert_message_body - .into_bytes(); - ret_body_body_field_alert_message_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_alert_message_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_alert_message_body_string - .extend(ret_body_body_field_alert_message_body_bytes); - ret_body_body_field_alert_message_body_string - }); - ret_body_body_field_alert_message_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestDenied => { - ret_body_ret.extend(u32::to_ne_bytes(15u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestLengthRequired => { - ret_body_ret.extend(u32::to_ne_bytes(16u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestBodySize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(17u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestMethodInvalid => { - ret_body_ret.extend(u32::to_ne_bytes(18u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURIInvalid => { - ret_body_ret.extend(u32::to_ne_bytes(19u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestURITooLong => { - ret_body_ret.extend(u32::to_ne_bytes(20u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(21u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestHeaderSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(22u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_body_field_field_name = ret_body_body_body - .r#field_name; - ret_body_body_body_record - .extend({ - match ret_body_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_body_field_field_name_body, - ) => { - let mut ret_body_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_field_field_name_body_bytes = ret_body_body_body_field_field_name_body - .into_bytes(); - ret_body_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_body_field_field_name_body_string - .extend(ret_body_body_body_field_field_name_body_bytes); - ret_body_body_body_field_field_name_body_string - }); - ret_body_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_body_field_field_size = ret_body_body_body - .r#field_size; - ret_body_body_body_record - .extend({ - match ret_body_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_body_field_field_size_body, - ) => { - let mut ret_body_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_field_field_size_body), - ) - }); - ret_body_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_body_record - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(23u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPRequestTrailerSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(24u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseIncomplete => { - ret_body_ret.extend(u32::to_ne_bytes(25u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(26u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseHeaderSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(27u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseBodySize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(28u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u64::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSectionSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(29u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - alloc::vec::Vec::from(u32::to_ne_bytes(ret_body_body_body)) - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTrailerSize( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(30u32)); - ret_body_ret - .extend({ - let mut ret_body_body_record = alloc::vec::Vec::new(); - let ret_body_body_field_field_name = ret_body_body - .r#field_name; - ret_body_body_record - .extend({ - match ret_body_body_field_field_name { - ::core::option::Option::Some( - ret_body_body_field_field_name_body, - ) => { - let mut ret_body_body_field_field_name_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_name_ret - .extend({ - let mut ret_body_body_field_field_name_body_string = alloc::vec::Vec::new(); - let ret_body_body_field_field_name_body_bytes = ret_body_body_field_field_name_body - .into_bytes(); - ret_body_body_field_field_name_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes( - ret_body_body_field_field_name_body_bytes.len() as u32, - ), - ), - ); - ret_body_body_field_field_name_body_string - .extend(ret_body_body_field_field_name_body_bytes); - ret_body_body_field_field_name_body_string - }); - ret_body_body_field_field_name_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - let ret_body_body_field_field_size = ret_body_body - .r#field_size; - ret_body_body_record - .extend({ - match ret_body_body_field_field_size { - ::core::option::Option::Some( - ret_body_body_field_field_size_body, - ) => { - let mut ret_body_body_field_field_size_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_field_field_size_ret - .extend({ - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_field_field_size_body), - ) - }); - ret_body_body_field_field_size_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }); - ret_body_body_record - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTransferCoding( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(31u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseContentCoding( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(32u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - r#wasi::r#http::r#types::ErrorCode::HTTPResponseTimeout => { - ret_body_ret.extend(u32::to_ne_bytes(33u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPUpgradeFailed => { - ret_body_ret.extend(u32::to_ne_bytes(34u32)); - } - r#wasi::r#http::r#types::ErrorCode::HTTPProtocolError => { - ret_body_ret.extend(u32::to_ne_bytes(35u32)); - } - r#wasi::r#http::r#types::ErrorCode::LoopDetected => { - ret_body_ret.extend(u32::to_ne_bytes(36u32)); - } - r#wasi::r#http::r#types::ErrorCode::ConfigurationError => { - ret_body_ret.extend(u32::to_ne_bytes(37u32)); - } - r#wasi::r#http::r#types::ErrorCode::InternalError( - ret_body_body, - ) => { - ret_body_ret.extend(u32::to_ne_bytes(38u32)); - ret_body_ret - .extend({ - match ret_body_body { - ::core::option::Option::Some(ret_body_body_body) => { - let mut ret_body_body_ret = alloc::vec::Vec::from( - u8::to_ne_bytes(1), - ); - ret_body_body_ret - .extend({ - let mut ret_body_body_body_string = alloc::vec::Vec::new(); - let ret_body_body_body_bytes = ret_body_body_body - .into_bytes(); - ret_body_body_body_string - .extend( - alloc::vec::Vec::from( - u32::to_ne_bytes(ret_body_body_body_bytes.len() as u32), - ), - ); - ret_body_body_body_string.extend(ret_body_body_body_bytes); - ret_body_body_body_string - }); - ret_body_body_ret - } - ::core::option::Option::None => { - alloc::vec::Vec::from(u8::to_ne_bytes(0)) - } - } - }) - } - } - ret_body_ret - }); - ret_ret - } - } - }) - }, - ) - .unwrap(); - rts -} -impl< - I: r#root::r#component::RootImports + ::std::marker::Send, - S: ::hyperlight_host::sandbox::Callable, -> r#root::r#component::RootExports for RootSandbox { - type IncomingHandler = Self; - #[allow(refining_impl_trait)] - fn r#incoming_handler<'a>(&'a mut self) -> &'a mut Self { - self - } -} -impl r#root::r#component::Root for ::hyperlight_host::sandbox::UninitializedSandbox { - type Exports = RootSandbox< - I, - ::hyperlight_host::sandbox::initialized_multi_use::MultiUseSandbox, - >; - fn instantiate( - mut self, - i: I, - ) -> Self::Exports { - let rts = register_host_functions(&mut self, i); - let sb = self.evolve().unwrap(); - RootSandbox { sb, rt: rts } - } -} diff --git a/src/main.rs b/src/main.rs index 8f25a1d..63312ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,62 +1,119 @@ extern crate alloc; -mod bindings { - hyperlight_component_macro::host_bindgen!(); -} +mod sandbox_pool; +mod wasi_impl; -mod resource; -mod types; -mod worker; +use wasi_impl::Resource; +use wasi_impl::bindings::wasi::cli::Run; +use wasi_impl::bindings::wasi::http::IncomingHandler; +use wasi_impl::types::{WasiImpl, http_incoming_body::IncomingBody, io_stream::Stream}; +use wasi_impl::worker::RUNTIME; use std::{convert::Infallible, net::SocketAddr, str::FromStr, sync::Arc}; -use bindings::RootSandbox; use bytes::Bytes; +use clap::{Args, Parser, Subcommand}; use http_body_util::{BodyExt, Full}; use hyper::{server::conn::http1, service::service_fn}; use hyper_util::rt::TokioIo; -use hyperlight_host::sandbox::SandboxConfiguration; -use hyperlight_wasm::LoadedWasmSandbox; -use resource::Resource; +use once_cell::sync::Lazy; +use sandbox_pool::SandboxPool; use tokio::{net::TcpListener, sync::Mutex}; -use types::{WasiImpl, http_incoming_body::IncomingBody, io_stream::Stream}; -use worker::RUNTIME; -use crate::bindings::wasi::http::IncomingHandler; +// Pool of sandboxes that are used at runtime to handle incoming HTTP requests. +static SANDBOX_POOL: Lazy>> = + Lazy::new(|| Arc::new(Mutex::new(SandboxPool::default()))); -fn main() { - let args = std::env::args().collect::>(); - if args.len() != 2 { - eprintln!("Usage: {} ", args[0]); - std::process::exit(1); - } +/// Common options shared between subcommands (modeled after wasmtime). +#[derive(Args, Debug, Clone)] +struct CliOptions { + /// Not used, it needs `wasi:filesystem` implementation which is not + /// possible at the moment because `wasi:filesystem/types` conflicts with + /// `wasi:http/types`. + /// This is here for compatibility with `wasmtime` cli + #[arg(long = "dir", value_name = "HOST_DIR::GUEST_DIR")] + dirs: Vec, - let wasm_path = &args[1]; + /// Pass an environment variable to the guest. + /// Format: `KEY=VALUE` + #[arg(long = "env", value_name = "KEY=VALUE")] + envs: Vec, - let builder = hyperlight_wasm::SandboxBuilder::new() - .with_guest_heap_size(30 * 1024 * 1024) - .with_guest_stack_size(1 * 1024 * 1024); + /// Path to the AOT-compiled WASM component file + wasm_file: String, +} - // hyperlight wasm currently doesn't expose a way to set the host - // function definition size, so we do it manually here with a - // horrible hack to get a mutable reference to the config - let config = builder.get_config() as *const _ as *mut SandboxConfiguration; - let config = unsafe { config.as_mut().unwrap() }; - config.set_host_function_definition_size(20 * 1024); +#[derive(Subcommand, Debug)] +enum Command { + /// Run a WASM component (guest exports wasi:cli/run) + Run { + #[command(flatten)] + options: CliOptions, + }, + /// Serve an HTTP component (guest exports wasi:http/incoming-handler) + Serve { + #[command(flatten)] + options: CliOptions, - let mut sb = builder.build().unwrap(); + /// Socket address to listen on + #[arg(long, default_value = "0.0.0.0:8080", value_name = "ADDR")] + addr: String, + }, +} - let state = types::WasiImpl::new(); - let rt = bindings::register_host_functions(&mut sb, state); +#[derive(Parser, Debug)] +#[command(name = "hyperlight-wasm-debug")] +#[command(about = "Run a WASM component with Hyperlight")] +struct Cli { + #[command(subcommand)] + command: Command, +} - let sb = sb.load_runtime().unwrap(); - let sb = sb.load_module(wasm_path).unwrap(); +fn main() { + let cli = Cli::parse(); - let sb = bindings::RootSandbox { sb, rt }; - let sb = Arc::new(Mutex::new(sb)); + match cli.command { + Command::Run { options } => { + run_cli(options); + } + Command::Serve { options, addr } => { + run_http(options, &addr); + } + } +} + +/// Run the guest component via `wasi:cli/run`. +/// +/// The guest manages its own I/O (TCP, UDP, stdio, etc.) through the WASI +/// imports it was compiled against. +fn run_cli(options: CliOptions) { + println!("Running component..."); + RUNTIME.block_on(async { + SANDBOX_POOL.lock().await.from_options(options); + let mut sb = SANDBOX_POOL.lock().await.get_sandbox(); + tokio::task::block_in_place(|| { + let inst = wasi_impl::bindings::root::component::RootExports::run(&mut sb); + match inst.run() { + Ok(()) => println!("Component exited successfully."), + Err(()) => eprintln!("Component exited with an error."), + } + }); + SANDBOX_POOL.lock().await.return_sandbox(sb); + }); +} + +/// Run an HTTP proxy server that forwards requests to the guest component's +/// `wasi:http/incoming-handler` export. +fn run_http(options: CliOptions, addr: &str) { + let addr: SocketAddr = addr.parse().unwrap_or_else(|e| { + eprintln!("Invalid address '{addr}': {e}"); + std::process::exit(1); + }); RUNTIME.block_on(async move { - let addr = SocketAddr::from(([127, 0, 0, 1], 3000)); + SANDBOX_POOL.lock().await.from_options(options); + println!("Starting server on http://{addr}"); + let listener = TcpListener::bind(addr).await.unwrap(); loop { @@ -66,17 +123,13 @@ fn main() { // `hyper::rt` IO traits. let io = TokioIo::new(stream); - let sb = sb.clone(); - RUNTIME.spawn(async move { // Finally, we bind the incoming connection to our `hello` service if let Err(err) = http1::Builder::new() // `service_fn` converts our function in a `Service` .serve_connection( io, - service_fn(move |req: hyper::Request| { - hello(sb.clone(), req) - }), + service_fn(move |req: hyper::Request| hello(req)), ) .await { @@ -88,11 +141,11 @@ fn main() { } async fn hello( - sb: Arc>>, mut req: hyper::Request, ) -> Result>, Infallible> { - let mut sb = sb.lock().await; - let inst = bindings::root::component::RootExports::incoming_handler(&mut *sb); + let mut sb = SANDBOX_POOL.lock().await.get_sandbox(); + let snapshot = sb.sb.snapshot().unwrap(); + let inst = wasi_impl::bindings::root::component::RootExports::incoming_handler(&mut sb); let body = req.body_mut(); let mut full_body = Vec::new(); @@ -115,7 +168,7 @@ async fn hello( let _ = body_stream.write(&full_body); body_stream.close(); - let req = types::http_incoming_request::IncomingRequest { + let req = wasi_impl::types::http_incoming_request::IncomingRequest { method: req.method().into(), path_with_query: Some( req.uri() @@ -124,9 +177,9 @@ async fn hello( .unwrap_or_default(), ), scheme: Some(if req.uri().scheme_str() == Some("https") { - bindings::wasi::http::types::Scheme::HTTPS + wasi_impl::bindings::wasi::http::types::Scheme::HTTPS } else { - bindings::wasi::http::types::Scheme::HTTP + wasi_impl::bindings::wasi::http::types::Scheme::HTTP }), authority: req .uri() @@ -151,6 +204,12 @@ async fn hello( inst.handle(req, outparam.clone()); }); + sb.sb.restore(&snapshot).unwrap(); + + // Return the sandbox to the pool immediately after the call, so it's available for the next + // request while we wait for the guest to produce a response. + SANDBOX_POOL.lock().await.return_sandbox(sb); + let Some(response) = outparam.write().await.response.take() else { let body = Full::new(Bytes::from("Error reading body")); let mut res = hyper::Response::new(body); @@ -188,19 +247,19 @@ async fn hello( } } -impl From<&hyper::Method> for bindings::wasi::http::types::Method { +impl From<&hyper::Method> for wasi_impl::bindings::wasi::http::types::Method { fn from(method: &hyper::Method) -> Self { match method.as_str() { - "GET" => bindings::wasi::http::types::Method::Get, - "POST" => bindings::wasi::http::types::Method::Post, - "PUT" => bindings::wasi::http::types::Method::Put, - "DELETE" => bindings::wasi::http::types::Method::Delete, - "HEAD" => bindings::wasi::http::types::Method::Head, - "OPTIONS" => bindings::wasi::http::types::Method::Options, - "CONNECT" => bindings::wasi::http::types::Method::Connect, - "TRACE" => bindings::wasi::http::types::Method::Trace, - "PATCH" => bindings::wasi::http::types::Method::Patch, - other => bindings::wasi::http::types::Method::Other(other.to_string()), + "GET" => wasi_impl::bindings::wasi::http::types::Method::Get, + "POST" => wasi_impl::bindings::wasi::http::types::Method::Post, + "PUT" => wasi_impl::bindings::wasi::http::types::Method::Put, + "DELETE" => wasi_impl::bindings::wasi::http::types::Method::Delete, + "HEAD" => wasi_impl::bindings::wasi::http::types::Method::Head, + "OPTIONS" => wasi_impl::bindings::wasi::http::types::Method::Options, + "CONNECT" => wasi_impl::bindings::wasi::http::types::Method::Connect, + "TRACE" => wasi_impl::bindings::wasi::http::types::Method::Trace, + "PATCH" => wasi_impl::bindings::wasi::http::types::Method::Patch, + other => wasi_impl::bindings::wasi::http::types::Method::Other(other.to_string()), } } } diff --git a/src/sandbox_pool.rs b/src/sandbox_pool.rs new file mode 100644 index 0000000..4c44b37 --- /dev/null +++ b/src/sandbox_pool.rs @@ -0,0 +1,85 @@ +use crate::CliOptions; +use crate::WasiImpl; +use crate::wasi_impl; +use crate::wasi_impl::bindings::RootSandbox; +use hyperlight_wasm::LoadedWasmSandbox; + +const INITIAL_POOL_SIZE: usize = 10; + +/// Sandbox pool state shared across all requests. +#[derive(Default)] +pub struct SandboxPool { + options: Option, + pool: Vec>, +} + +impl SandboxPool { + pub fn from_options(&mut self, options: CliOptions) { + let mut pool = Vec::with_capacity(INITIAL_POOL_SIZE); + for _ in 0..INITIAL_POOL_SIZE { + let sandbox = build_sandbox(&options); + pool.push(sandbox); + } + println!("Initialized sandbox pool with {} sandboxes", pool.len()); + self.options = Some(options); + self.pool = pool; + } + + pub fn get_sandbox(&mut self) -> RootSandbox { + if let Some(sandbox) = self.pool.pop() { + sandbox + } else { + println!("Sandbox pool is empty, building a new sandbox"); + build_sandbox( + &self + .options + .as_ref() + .expect("SandboxPool not initialized with options"), + ) + } + } + + pub fn return_sandbox(&mut self, sandbox: RootSandbox) { + self.pool.push(sandbox); + } +} + +fn builder(wasm_size: u64) -> hyperlight_wasm::SandboxBuilder { + let builder = hyperlight_wasm::SandboxBuilder::new() + .with_guest_heap_size((1.2 * wasm_size as f64) as u64); + + builder + .with_guest_stack_size(10 * 1024) + .with_guest_input_buffer_size(10 * 1024) + .with_guest_output_buffer_size(10 * 1024) + .with_function_definition_size(20 * 1024) +} + +/// Parse `--env KEY=VALUE` entries into (key, value) pairs. +fn parse_envs(envs: &[String]) -> Vec<(String, String)> { + envs.iter() + .filter_map(|e| { + let (k, v) = e.split_once('=')?; + Some((k.to_string(), v.to_string())) + }) + .collect() +} + +fn build_sandbox(options: &CliOptions) -> RootSandbox { + let wasm_size = std::fs::metadata(&options.wasm_file) + .unwrap_or_else(|e| panic!("cannot stat wasm file '{}': {e}", options.wasm_file)) + .len(); + + let builder = builder(wasm_size); + let mut sb = builder.build().unwrap(); + + let mut state = WasiImpl::new(); + state.env_vars = parse_envs(&options.envs); + + let rt = wasi_impl::bindings::register_host_functions(&mut sb, state); + + let sb = sb.load_runtime().unwrap(); + let sb = sb.load_module(&options.wasm_file).unwrap(); + + RootSandbox { sb, rt } +} diff --git a/src/wasi_impl/mod.rs b/src/wasi_impl/mod.rs new file mode 100644 index 0000000..f1218c9 --- /dev/null +++ b/src/wasi_impl/mod.rs @@ -0,0 +1,11 @@ +extern crate alloc; + +pub mod bindings { + hyperlight_component_macro::host_bindgen!(); +} + +pub mod resource; +pub mod types; +pub mod worker; + +pub use resource::Resource; diff --git a/src/resource.rs b/src/wasi_impl/resource.rs similarity index 98% rename from src/resource.rs rename to src/wasi_impl/resource.rs index cab55c7..cc2c4b7 100644 --- a/src/resource.rs +++ b/src/wasi_impl/resource.rs @@ -4,7 +4,7 @@ use std::{ sync::Arc, }; -use crate::{types::io_poll::AnyPollable, worker::RUNTIME}; +use crate::wasi_impl::{types::io_poll::AnyPollable, worker::RUNTIME}; pub struct Resource { inner: Arc>, diff --git a/src/types.rs b/src/wasi_impl/types.rs similarity index 93% rename from src/types.rs rename to src/wasi_impl/types.rs index 4f6aed8..bbf9ce3 100644 --- a/src/types.rs +++ b/src/wasi_impl/types.rs @@ -1,6 +1,6 @@ use std::borrow::BorrowMut; -use crate::bindings::root::component::RootImports; +use crate::wasi_impl::bindings::root::component::RootImports; pub mod buffer; pub mod cli; @@ -29,12 +29,14 @@ pub mod types; #[derive(Default)] pub struct WasiImpl { client: reqwest::Client, + pub env_vars: Vec<(String, String)>, } impl WasiImpl { pub fn new() -> Self { Self { client: reqwest::Client::new(), + env_vars: Vec::new(), } } } diff --git a/src/types/buffer.rs b/src/wasi_impl/types/buffer.rs similarity index 100% rename from src/types/buffer.rs rename to src/wasi_impl/types/buffer.rs diff --git a/src/types/cli.rs b/src/wasi_impl/types/cli.rs similarity index 96% rename from src/types/cli.rs rename to src/wasi_impl/types/cli.rs index d36d0ce..2b534c4 100644 --- a/src/types/cli.rs +++ b/src/wasi_impl/types/cli.rs @@ -2,7 +2,7 @@ use std::sync::LazyLock; use tokio::io::{AsyncReadExt as _, AsyncWriteExt as _, stderr, stdin, stdout}; -use crate::{bindings::wasi, resource::Resource, worker::RUNTIME}; +use crate::wasi_impl::{bindings::wasi, resource::Resource, worker::RUNTIME}; use super::{WasiImpl, io_stream::Stream}; @@ -77,7 +77,7 @@ impl wasi::cli::Stderr> for WasiImpl { impl wasi::cli::Environment for WasiImpl { fn get_environment(&mut self) -> Vec<(String, String)> { - vec![] + self.env_vars.clone() } fn get_arguments(&mut self) -> Vec { diff --git a/src/types/clocks_monotonic_clock.rs b/src/wasi_impl/types/clocks_monotonic_clock.rs similarity index 93% rename from src/types/clocks_monotonic_clock.rs rename to src/wasi_impl/types/clocks_monotonic_clock.rs index d4e70c3..39b9b08 100644 --- a/src/types/clocks_monotonic_clock.rs +++ b/src/wasi_impl/types/clocks_monotonic_clock.rs @@ -1,6 +1,6 @@ use std::{sync::LazyLock, time::Duration}; -use crate::{bindings::wasi, resource::Resource}; +use crate::wasi_impl::{bindings::wasi, resource::Resource}; use super::{WasiImpl, io_poll::AnyPollable}; diff --git a/src/types/clocks_wall_clock.rs b/src/wasi_impl/types/clocks_wall_clock.rs similarity index 93% rename from src/types/clocks_wall_clock.rs rename to src/wasi_impl/types/clocks_wall_clock.rs index 5edd602..98fafde 100644 --- a/src/types/clocks_wall_clock.rs +++ b/src/wasi_impl/types/clocks_wall_clock.rs @@ -1,5 +1,5 @@ use super::WasiImpl; -use crate::bindings::wasi; +use crate::wasi_impl::bindings::wasi; impl wasi::clocks::WallClock for WasiImpl { fn now(&mut self) -> wasi::clocks::wall_clock::Datetime { diff --git a/src/types/headers.rs b/src/wasi_impl/types/headers.rs similarity index 100% rename from src/types/headers.rs rename to src/wasi_impl/types/headers.rs diff --git a/src/types/http_future.rs b/src/wasi_impl/types/http_future.rs similarity index 100% rename from src/types/http_future.rs rename to src/wasi_impl/types/http_future.rs diff --git a/src/types/http_future_headers.rs b/src/wasi_impl/types/http_future_headers.rs similarity index 97% rename from src/types/http_future_headers.rs rename to src/wasi_impl/types/http_future_headers.rs index 21fcac4..fd69759 100644 --- a/src/types/http_future_headers.rs +++ b/src/wasi_impl/types/http_future_headers.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn, Resource}, }; diff --git a/src/types/http_future_incoming_response.rs b/src/wasi_impl/types/http_future_incoming_response.rs similarity index 97% rename from src/types/http_future_incoming_response.rs rename to src/wasi_impl/types/http_future_incoming_response.rs index f6174a1..8dcc434 100644 --- a/src/types/http_future_incoming_response.rs +++ b/src/wasi_impl/types/http_future_incoming_response.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn as _, Resource}, }; diff --git a/src/types/http_headers.rs b/src/wasi_impl/types/http_headers.rs similarity index 98% rename from src/types/http_headers.rs rename to src/wasi_impl/types/http_headers.rs index 7859371..5e1b91a 100644 --- a/src/types/http_headers.rs +++ b/src/wasi_impl/types/http_headers.rs @@ -4,7 +4,7 @@ use super::{ WasiImpl, headers::{HeaderError, Headers}, }; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn, Resource}, }; diff --git a/src/types/http_incoming_body.rs b/src/wasi_impl/types/http_incoming_body.rs similarity index 97% rename from src/types/http_incoming_body.rs rename to src/wasi_impl/types/http_incoming_body.rs index ad5d93b..09e7dc7 100644 --- a/src/types/http_incoming_body.rs +++ b/src/wasi_impl/types/http_incoming_body.rs @@ -1,4 +1,4 @@ -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn, Resource}, }; diff --git a/src/types/http_incoming_request.rs b/src/wasi_impl/types/http_incoming_request.rs similarity index 98% rename from src/types/http_incoming_request.rs rename to src/wasi_impl/types/http_incoming_request.rs index eb2070f..a887782 100644 --- a/src/types/http_incoming_request.rs +++ b/src/wasi_impl/types/http_incoming_request.rs @@ -1,4 +1,4 @@ -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn as _, Resource}, }; diff --git a/src/types/http_incoming_response.rs b/src/wasi_impl/types/http_incoming_response.rs similarity index 97% rename from src/types/http_incoming_response.rs rename to src/wasi_impl/types/http_incoming_response.rs index 3df1c09..3b1b404 100644 --- a/src/types/http_incoming_response.rs +++ b/src/wasi_impl/types/http_incoming_response.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn, Resource}, }; diff --git a/src/types/http_outgoing_body.rs b/src/wasi_impl/types/http_outgoing_body.rs similarity index 98% rename from src/types/http_outgoing_body.rs rename to src/wasi_impl/types/http_outgoing_body.rs index 58b574e..c0a688a 100644 --- a/src/types/http_outgoing_body.rs +++ b/src/wasi_impl/types/http_outgoing_body.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn as _, Resource}, }; diff --git a/src/types/http_outgoing_handler.rs b/src/wasi_impl/types/http_outgoing_handler.rs similarity index 98% rename from src/types/http_outgoing_handler.rs rename to src/wasi_impl/types/http_outgoing_handler.rs index faad04d..ba2a3b1 100644 --- a/src/types/http_outgoing_handler.rs +++ b/src/wasi_impl/types/http_outgoing_handler.rs @@ -1,5 +1,5 @@ -use crate::bindings::wasi::{self}; -use crate::resource::{BlockOn, Resource}; +use crate::wasi_impl::bindings::wasi; +use crate::wasi_impl::resource::{BlockOn, Resource}; use wasi::http::types::ErrorCode; diff --git a/src/types/http_outgoing_request.rs b/src/wasi_impl/types/http_outgoing_request.rs similarity index 99% rename from src/types/http_outgoing_request.rs rename to src/wasi_impl/types/http_outgoing_request.rs index a90e226..84bf8c3 100644 --- a/src/types/http_outgoing_request.rs +++ b/src/wasi_impl/types/http_outgoing_request.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn as _, Resource}, }; diff --git a/src/types/http_outgoing_response.rs b/src/wasi_impl/types/http_outgoing_response.rs similarity index 98% rename from src/types/http_outgoing_response.rs rename to src/wasi_impl/types/http_outgoing_response.rs index 64784b0..d71e953 100644 --- a/src/types/http_outgoing_response.rs +++ b/src/wasi_impl/types/http_outgoing_response.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn, Resource}, }; diff --git a/src/types/http_request_options.rs b/src/wasi_impl/types/http_request_options.rs similarity index 98% rename from src/types/http_request_options.rs rename to src/wasi_impl/types/http_request_options.rs index 2118907..375d91f 100644 --- a/src/types/http_request_options.rs +++ b/src/wasi_impl/types/http_request_options.rs @@ -4,7 +4,7 @@ use hyperlight_common::resource::BorrowedResourceGuard; use super::WasiImpl; -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn, Resource}, }; diff --git a/src/types/http_response_outparam.rs b/src/wasi_impl/types/http_response_outparam.rs similarity index 96% rename from src/types/http_response_outparam.rs rename to src/wasi_impl/types/http_response_outparam.rs index 287688e..cc34e47 100644 --- a/src/types/http_response_outparam.rs +++ b/src/wasi_impl/types/http_response_outparam.rs @@ -1,4 +1,4 @@ -use crate::{ +use crate::wasi_impl::{ bindings::wasi, resource::{BlockOn as _, Resource}, }; diff --git a/src/types/io_error.rs b/src/wasi_impl/types/io_error.rs similarity index 78% rename from src/types/io_error.rs rename to src/wasi_impl/types/io_error.rs index 3e29318..ca6d059 100644 --- a/src/types/io_error.rs +++ b/src/wasi_impl/types/io_error.rs @@ -1,8 +1,8 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::types::WasiImpl; +use crate::wasi_impl::types::WasiImpl; -use crate::bindings::wasi; +use crate::wasi_impl::bindings::wasi; impl wasi::io::error::Error for WasiImpl { type T = anyhow::Error; diff --git a/src/types/io_poll.rs b/src/wasi_impl/types/io_poll.rs similarity index 99% rename from src/types/io_poll.rs rename to src/wasi_impl/types/io_poll.rs index 5cd0b1b..6e2d06d 100644 --- a/src/types/io_poll.rs +++ b/src/wasi_impl/types/io_poll.rs @@ -6,7 +6,7 @@ use std::{ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi::{self}, resource::{BlockOn, Resource}, }; diff --git a/src/types/io_stream.rs b/src/wasi_impl/types/io_stream.rs similarity index 99% rename from src/types/io_stream.rs rename to src/wasi_impl/types/io_stream.rs index dae84d9..7c2dff5 100644 --- a/src/types/io_stream.rs +++ b/src/wasi_impl/types/io_stream.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{ +use crate::wasi_impl::{ bindings::wasi::{self, io::streams::StreamError}, resource::{BlockOn, Resource}, }; diff --git a/src/types/random.rs b/src/wasi_impl/types/random.rs similarity index 89% rename from src/types/random.rs rename to src/wasi_impl/types/random.rs index f334807..f1a7ad0 100644 --- a/src/types/random.rs +++ b/src/wasi_impl/types/random.rs @@ -1,4 +1,4 @@ -use crate::bindings::wasi; +use crate::wasi_impl::bindings::wasi; use super::WasiImpl; diff --git a/src/types/types.rs b/src/wasi_impl/types/types.rs similarity index 89% rename from src/types/types.rs rename to src/wasi_impl/types/types.rs index 188de7e..da54018 100644 --- a/src/types/types.rs +++ b/src/wasi_impl/types/types.rs @@ -1,6 +1,6 @@ use hyperlight_common::resource::BorrowedResourceGuard; -use crate::{bindings::wasi, resource::Resource}; +use crate::wasi_impl::{bindings::wasi, resource::Resource}; use super::{WasiImpl, io_poll::AnyPollable, io_stream::Stream}; diff --git a/src/worker.rs b/src/wasi_impl/worker.rs similarity index 100% rename from src/worker.rs rename to src/wasi_impl/worker.rs