This commit is contained in:
John Smith 2022-11-26 16:17:30 -05:00
parent 25ace50d45
commit 5df46aecae
76 changed files with 3107 additions and 3127 deletions

263
Cargo.lock generated
View File

@ -63,9 +63,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
version = "0.7.19"
version = "0.7.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
dependencies = [
"memchr",
]
@ -218,13 +218,13 @@ dependencies = [
[[package]]
name = "async-io"
version = "1.10.0"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7"
checksum = "6fe557ebe0829511ddff4ad3011d159c0e6f144e05e3e8c3ab5095a131900a7b"
dependencies = [
"async-lock",
"autocfg",
"concurrent-queue 1.2.4",
"concurrent-queue 2.0.0",
"futures-lite",
"libc",
"log",
@ -399,7 +399,7 @@ dependencies = [
"futures-util",
"pin-project 1.0.12",
"rustc_version",
"tokio 1.21.2",
"tokio 1.22.0",
"wasm-bindgen-futures",
]
@ -467,7 +467,7 @@ dependencies = [
"async-trait",
"axum-core",
"bitflags",
"bytes 1.2.1",
"bytes 1.3.0",
"futures-util",
"http",
"http-body",
@ -480,7 +480,7 @@ dependencies = [
"pin-project-lite 0.2.9",
"serde",
"sync_wrapper",
"tokio 1.21.2",
"tokio 1.22.0",
"tower",
"tower-http",
"tower-layer",
@ -494,7 +494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37e5939e02c56fecd5c017c37df4238c0a839fa76b7f97acdd7efb804fd181cc"
dependencies = [
"async-trait",
"bytes 1.2.1",
"bytes 1.3.0",
"futures-util",
"http",
"http-body",
@ -513,7 +513,7 @@ dependencies = [
"cc",
"cfg-if 1.0.0",
"libc",
"miniz_oxide",
"miniz_oxide 0.5.4",
"object",
"rustc-demangle",
]
@ -569,9 +569,9 @@ dependencies = [
[[package]]
name = "blake3"
version = "1.3.1"
version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f"
checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef"
dependencies = [
"arrayref",
"arrayvec",
@ -627,16 +627,16 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
[[package]]
name = "blocking"
version = "1.2.0"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc"
checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8"
dependencies = [
"async-channel",
"async-lock",
"async-task",
"atomic-waker",
"fastrand",
"futures-lite",
"once_cell",
]
[[package]]
@ -707,9 +707,9 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
[[package]]
name = "bytes"
version = "1.2.1"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
[[package]]
name = "cache-padded"
@ -719,9 +719,9 @@ checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
[[package]]
name = "capnp"
version = "0.15.0"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e850735c543306805e2ba8ee0a9632b0f62bb05872a8be2e2674e9903a1c048"
checksum = "f4929d71efc55aa42759793d853ecdfa6bb034419d22884e3e9871f0f593ac8d"
[[package]]
name = "capnp-futures"
@ -761,9 +761,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
version = "1.0.76"
version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f"
checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
[[package]]
name = "cesu8"
@ -830,15 +830,15 @@ dependencies = [
[[package]]
name = "chrono"
version = "0.4.22"
version = "0.4.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1"
checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
dependencies = [
"iana-time-zone",
"js-sys",
"num-integer",
"num-traits",
"time 0.1.44",
"time 0.1.45",
"wasm-bindgen",
"winapi 0.3.9",
]
@ -962,7 +962,7 @@ version = "4.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"memchr",
]
@ -1031,7 +1031,7 @@ dependencies = [
"serde",
"serde_json",
"thread_local",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-stream",
"tonic",
"tracing",
@ -1061,9 +1061,9 @@ dependencies = [
[[package]]
name = "constant_time_eq"
version = "0.1.5"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
checksum = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279"
[[package]]
name = "core-foundation"
@ -1174,22 +1174,22 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
version = "0.9.11"
version = "0.9.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
dependencies = [
"autocfg",
"cfg-if 1.0.0",
"crossbeam-utils",
"memoffset",
"memoffset 0.7.1",
"scopeguard",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.12"
version = "0.8.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
dependencies = [
"cfg-if 1.0.0",
]
@ -1285,7 +1285,7 @@ dependencies = [
"libc",
"log",
"signal-hook",
"tokio 1.21.2",
"tokio 1.22.0",
"unicode-segmentation",
"unicode-width",
]
@ -1330,7 +1330,7 @@ dependencies = [
"num",
"owning_ref",
"time 0.3.17",
"tokio 1.21.2",
"tokio 1.22.0",
"toml",
"unicode-segmentation",
"unicode-width",
@ -1374,9 +1374,9 @@ dependencies = [
[[package]]
name = "cxx"
version = "1.0.81"
version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888"
checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453"
dependencies = [
"cc",
"cxxbridge-flags",
@ -1386,9 +1386,9 @@ dependencies = [
[[package]]
name = "cxx-build"
version = "1.0.81"
version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3"
checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0"
dependencies = [
"cc",
"codespan-reporting",
@ -1401,15 +1401,15 @@ dependencies = [
[[package]]
name = "cxxbridge-flags"
version = "1.0.81"
version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f"
checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71"
[[package]]
name = "cxxbridge-macro"
version = "1.0.81"
version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704"
checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470"
dependencies = [
"proc-macro2",
"quote",
@ -1536,9 +1536,9 @@ dependencies = [
[[package]]
name = "digest"
version = "0.10.5"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
dependencies = [
"block-buffer 0.10.3",
"crypto-common",
@ -1813,12 +1813,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "flate2"
version = "1.0.24"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
dependencies = [
"crc32fast",
"miniz_oxide",
"miniz_oxide 0.6.2",
]
[[package]]
@ -2120,7 +2120,7 @@ version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"fnv",
"futures-core",
"futures-sink",
@ -2128,7 +2128,7 @@ dependencies = [
"http",
"indexmap",
"slab",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-util",
"tracing",
]
@ -2236,7 +2236,7 @@ version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"fnv",
"itoa",
]
@ -2247,7 +2247,7 @@ version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"http",
"pin-project-lite 0.2.9",
]
@ -2282,7 +2282,7 @@ version = "0.14.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"futures-channel",
"futures-core",
"futures-util",
@ -2294,7 +2294,7 @@ dependencies = [
"itoa",
"pin-project-lite 0.2.9",
"socket2",
"tokio 1.21.2",
"tokio 1.22.0",
"tower-service",
"tracing",
"want",
@ -2308,7 +2308,7 @@ checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
dependencies = [
"hyper",
"pin-project-lite 0.2.9",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-io-timeout",
]
@ -2378,7 +2378,7 @@ name = "igd"
version = "0.12.0"
dependencies = [
"attohttpc",
"bytes 1.2.1",
"bytes 1.3.0",
"futures",
"http",
"hyper",
@ -2387,7 +2387,7 @@ dependencies = [
"simplelog 0.9.0",
"tokio 0.2.25",
"tokio 0.3.7",
"tokio 1.21.2",
"tokio 1.22.0",
"url",
"xmltree",
]
@ -2438,9 +2438,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
[[package]]
name = "indexmap"
version = "1.9.1"
version = "1.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
dependencies = [
"autocfg",
"hashbrown",
@ -2487,9 +2487,9 @@ dependencies = [
[[package]]
name = "ipconfig"
version = "0.3.0"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98"
checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be"
dependencies = [
"socket2",
"widestring 0.5.1",
@ -2842,6 +2842,15 @@ dependencies = [
"autocfg",
]
[[package]]
name = "memoffset"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
dependencies = [
"autocfg",
]
[[package]]
name = "memory_units"
version = "0.4.0"
@ -2869,6 +2878,15 @@ dependencies = [
"adler",
]
[[package]]
name = "miniz_oxide"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
dependencies = [
"adler",
]
[[package]]
name = "mio"
version = "0.6.23"
@ -2991,7 +3009,7 @@ checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0"
dependencies = [
"bitflags",
"jni-sys",
"ndk-sys 0.4.0",
"ndk-sys 0.4.1+23.1.7779620",
"num_enum",
"raw-window-handle",
"thiserror",
@ -3015,7 +3033,7 @@ dependencies = [
"ndk 0.7.0",
"ndk-context",
"ndk-macro",
"ndk-sys 0.4.0",
"ndk-sys 0.4.1+23.1.7779620",
"once_cell",
"parking_lot 0.12.1",
]
@ -3044,9 +3062,9 @@ dependencies = [
[[package]]
name = "ndk-sys"
version = "0.4.0"
version = "0.4.1+23.1.7779620"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21d83ec9c63ec5bf950200a8e508bdad6659972187b625469f58ef8c08e29046"
checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3"
dependencies = [
"jni-sys",
]
@ -3098,12 +3116,12 @@ dependencies = [
name = "netlink-proto"
version = "0.9.1"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"futures",
"log",
"netlink-packet-core",
"netlink-sys",
"tokio 1.21.2",
"tokio 1.22.0",
]
[[package]]
@ -3111,11 +3129,11 @@ name = "netlink-sys"
version = "0.8.1"
dependencies = [
"async-io",
"bytes 1.2.1",
"bytes 1.3.0",
"futures",
"libc",
"log",
"tokio 1.21.2",
"tokio 1.22.0",
]
[[package]]
@ -3128,7 +3146,7 @@ dependencies = [
"cc",
"cfg-if 1.0.0",
"libc",
"memoffset",
"memoffset 0.6.5",
]
[[package]]
@ -3141,7 +3159,7 @@ dependencies = [
"bitflags",
"cfg-if 1.0.0",
"libc",
"memoffset",
"memoffset 0.6.5",
"pin-utils",
]
@ -3362,7 +3380,7 @@ dependencies = [
"prost",
"protobuf",
"thiserror",
"tokio 1.21.2",
"tokio 1.22.0",
"tonic",
]
@ -3426,7 +3444,7 @@ dependencies = [
"percent-encoding",
"rand 0.8.5",
"thiserror",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-stream",
]
@ -3442,9 +3460,9 @@ dependencies = [
[[package]]
name = "os_str_bytes"
version = "6.4.0"
version = "6.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b5bf27447411e9ee3ff51186bf7a08e16c341efdde93f4d823e8844429bed7e"
checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
[[package]]
name = "overload"
@ -3573,9 +3591,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8"
checksum = "5f400b0f7905bf702f9f3dc3df5a121b16c54e9e8012c082905fdf09a931861a"
dependencies = [
"thiserror",
"ucd-trie",
@ -3583,9 +3601,9 @@ dependencies = [
[[package]]
name = "pest_derive"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5fd9bc6500181952d34bd0b2b0163a54d794227b498be0b7afa7698d0a7b18f"
checksum = "423c2ba011d6e27b02b482a3707c773d19aec65cc024637aec44e19652e66f63"
dependencies = [
"pest",
"pest_generator",
@ -3593,9 +3611,9 @@ dependencies = [
[[package]]
name = "pest_generator"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2610d5ac5156217b4ff8e46ddcef7cdf44b273da2ac5bca2ecbfa86a330e7c4"
checksum = "3e64e6c2c85031c02fdbd9e5c72845445ca0a724d419aa0bc068ac620c9935c1"
dependencies = [
"pest",
"pest_meta",
@ -3606,9 +3624,9 @@ dependencies = [
[[package]]
name = "pest_meta"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "824749bf7e21dd66b36fbe26b3f45c713879cccd4a009a917ab8e045ca8246fe"
checksum = "57959b91f0a133f89a68be874a5c88ed689c19cd729ecdb5d762ebf16c64d662"
dependencies = [
"once_cell",
"pest",
@ -3840,7 +3858,7 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"prost-derive",
]
@ -3850,7 +3868,7 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d8b442418ea0822409d9e7d047cbf1e7e9e1760b172bf9982cf29d517c93511"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"heck",
"itertools",
"lazy_static",
@ -3885,7 +3903,7 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"prost",
]
@ -4018,11 +4036,10 @@ dependencies = [
[[package]]
name = "rayon"
version = "1.5.3"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b"
dependencies = [
"autocfg",
"crossbeam-deque",
"either",
"rayon-core",
@ -4030,9 +4047,9 @@ dependencies = [
[[package]]
name = "rayon-core"
version = "1.9.3"
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
@ -4158,7 +4175,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"rustc-hex",
]
@ -4206,7 +4223,7 @@ dependencies = [
"netlink-proto",
"nix 0.22.3",
"thiserror",
"tokio 1.21.2",
"tokio 1.22.0",
]
[[package]]
@ -4476,9 +4493,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.87"
version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
dependencies = [
"itoa",
"ryu",
@ -4556,7 +4573,7 @@ checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest 0.10.5",
"digest 0.10.6",
]
[[package]]
@ -4567,7 +4584,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest 0.10.5",
"digest 0.10.6",
]
[[package]]
@ -4791,9 +4808,9 @@ dependencies = [
[[package]]
name = "sysinfo"
version = "0.26.7"
version = "0.26.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c375d5fd899e32847b8566e10598d6e9f1d9b55ec6de3cdf9e7da4bdc51371bc"
checksum = "29ddf41e393a9133c81d5f0974195366bd57082deac6e0eb02ed39b8341c2bb6"
dependencies = [
"cfg-if 1.0.0",
"core-foundation-sys 0.8.3",
@ -4870,9 +4887,9 @@ dependencies = [
[[package]]
name = "time"
version = "0.1.44"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
dependencies = [
"libc",
"wasi 0.10.0+wasi-snapshot-preview1",
@ -4972,12 +4989,12 @@ dependencies = [
[[package]]
name = "tokio"
version = "1.21.2"
version = "1.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3"
dependencies = [
"autocfg",
"bytes 1.2.1",
"bytes 1.3.0",
"libc",
"memchr",
"mio 0.8.5",
@ -4998,7 +5015,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
dependencies = [
"pin-project-lite 0.2.9",
"tokio 1.21.2",
"tokio 1.22.0",
]
[[package]]
@ -5020,7 +5037,7 @@ checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce"
dependencies = [
"futures-core",
"pin-project-lite 0.2.9",
"tokio 1.21.2",
"tokio 1.22.0",
]
[[package]]
@ -5029,12 +5046,12 @@ version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740"
dependencies = [
"bytes 1.2.1",
"bytes 1.3.0",
"futures-core",
"futures-io",
"futures-sink",
"pin-project-lite 0.2.9",
"tokio 1.21.2",
"tokio 1.22.0",
"tracing",
]
@ -5057,7 +5074,7 @@ dependencies = [
"async-trait",
"axum",
"base64 0.13.1",
"bytes 1.2.1",
"bytes 1.3.0",
"futures-core",
"futures-util",
"h2",
@ -5069,7 +5086,7 @@ dependencies = [
"pin-project 1.0.12",
"prost",
"prost-derive",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-stream",
"tokio-util",
"tower",
@ -5105,7 +5122,7 @@ dependencies = [
"pin-project-lite 0.2.9",
"rand 0.8.5",
"slab",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-util",
"tower-layer",
"tower-service",
@ -5119,7 +5136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba"
dependencies = [
"bitflags",
"bytes 1.2.1",
"bytes 1.3.0",
"futures-core",
"futures-util",
"http",
@ -5304,7 +5321,7 @@ dependencies = [
"smallvec",
"thiserror",
"tinyvec",
"tokio 1.21.2",
"tokio 1.22.0",
"tracing",
"url",
]
@ -5324,7 +5341,7 @@ dependencies = [
"resolv-conf",
"smallvec",
"thiserror",
"tokio 1.21.2",
"tokio 1.22.0",
"tracing",
"trust-dns-proto",
]
@ -5362,7 +5379,7 @@ checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0"
dependencies = [
"base64 0.13.1",
"byteorder",
"bytes 1.2.1",
"bytes 1.3.0",
"http",
"httparse",
"log",
@ -5532,7 +5549,7 @@ dependencies = [
"serde_derive",
"serial_test",
"thiserror",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-util",
"veilid-core",
]
@ -5611,7 +5628,7 @@ dependencies = [
"static_assertions",
"stop-token",
"thiserror",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-stream",
"tokio-util",
"tracing",
@ -5655,7 +5672,7 @@ dependencies = [
"parking_lot 0.12.1",
"serde",
"serde_json",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-stream",
"tokio-util",
"tracing",
@ -5702,7 +5719,7 @@ dependencies = [
"signal-hook",
"signal-hook-async-std",
"stop-token",
"tokio 1.21.2",
"tokio 1.22.0",
"tokio-stream",
"tokio-util",
"tracing",
@ -6201,9 +6218,9 @@ checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
[[package]]
name = "winreg"
version = "0.7.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69"
checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
dependencies = [
"winapi 0.3.9",
]
@ -6238,9 +6255,9 @@ dependencies = [
[[package]]
name = "wyz"
version = "0.5.0"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e"
checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
dependencies = [
"tap",
]

View File

@ -4,6 +4,7 @@ use crate::crypto::Crypto;
use crate::veilid_api::*;
use crate::veilid_config::*;
use crate::xx::*;
use crate::*;
pub type UpdateCallback = Arc<dyn Fn(VeilidUpdate) + Send + Sync>;
@ -203,7 +204,7 @@ impl VeilidCoreContext {
if #[cfg(target_os = "android")] {
if crate::intf::utils::android::ANDROID_GLOBALS.lock().is_none() {
error!("Android globals are not set up");
return Err(VeilidAPIError::Internal { message: "Android globals are not set up".to_owned() });
apibail_internal!("Android globals are not set up");
}
}
}
@ -251,7 +252,7 @@ pub async fn api_startup(
// See if we have an API started up already
let mut initialized_lock = INITIALIZED.lock().await;
if *initialized_lock {
return Err(VeilidAPIError::AlreadyInitialized);
apibail_already_initialized!();
}
// Create core context
@ -274,7 +275,7 @@ pub async fn api_startup_json(
// See if we have an API started up already
let mut initialized_lock = INITIALIZED.lock().await;
if *initialized_lock {
return Err(VeilidAPIError::AlreadyInitialized);
apibail_already_initialized!();
}
// Create core context

View File

@ -1,7 +1,6 @@
use super::*;
use crate::tests::common::test_veilid_config::*;
use crate::xx::*;
use crate::*;
static LOREM_IPSUM:&[u8] = b"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ";

View File

@ -1,7 +1,6 @@
use super::*;
use crate::tests::common::test_veilid_config::*;
use crate::xx::*;
use crate::*;
pub async fn test_envelope_round_trip() {
info!("--- test envelope round trip ---");

View File

@ -1,5 +1,4 @@
use super::*;
use crate::xx::*;
use connection_table::*;
use network_connection::*;
use stop_token::future::FutureExt;

View File

@ -1,4 +1,5 @@
use crate::*;
use crate::xx::*;
#[cfg(not(target_arch = "wasm32"))]
mod native;
@ -33,7 +34,6 @@ use routing_table::*;
use rpc_processor::*;
#[cfg(target_arch = "wasm32")]
use wasm::*;
use xx::*;
////////////////////////////////////////////////////////////////////////////////////////

View File

@ -1,5 +1,4 @@
use super::*;
use crate::xx::*;
use igd::*;
use std::net::UdpSocket;

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
impl NetworkManager {
// Clean up the public address check tables, removing entries that have timed out

View File

@ -1,6 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
impl NetworkManager {
// Compute transfer statistics for the low level network

View File

@ -1,8 +1,7 @@
use super::*;
use super::connection_table::*;
use super::network_connection::*;
use crate::tests::common::test_veilid_config::*;
use crate::xx::*;
use crate::*;
pub async fn test_add_get_remove() {
let config = get_config();

View File

@ -1,6 +1,7 @@
mod protocol;
use super::*;
use crate::routing_table::*;
use connection_manager::*;
use protocol::ws::WebsocketProtocolHandler;

View File

@ -2,7 +2,6 @@ pub mod wrtc;
pub mod ws;
use super::*;
use crate::xx::*;
use std::io;
#[derive(Debug)]

View File

@ -11,11 +11,12 @@ mod routing_table_inner;
mod stats_accounting;
mod tasks;
use crate::xx::*;
use crate::*;
use crate::crypto::*;
use crate::network_manager::*;
use crate::rpc_processor::*;
use crate::xx::*;
use crate::*;
use bucket::*;
pub use bucket_entry::*;
pub use debug::*;

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
use futures_util::stream::{FuturesUnordered, StreamExt};
use stop_token::future::FutureExt as StopFutureExt;

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
impl RoutingTable {
// Kick the queued buckets in the routing table to free dead nodes if necessary

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
use futures_util::stream::{FuturesOrdered, StreamExt};
use stop_token::future::FutureExt as StopFutureExt;

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
use futures_util::stream::{FuturesUnordered, StreamExt};
use futures_util::FutureExt;

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
use futures_util::stream::{FuturesUnordered, StreamExt};
use futures_util::FutureExt;

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
impl RoutingTable {
// Keep relays assigned and accessible

View File

@ -1,5 +1,4 @@
use super::super::*;
use crate::xx::*;
use super::*;
impl RoutingTable {
// Compute transfer statistics to determine how 'fast' a node is

View File

@ -1,7 +1,5 @@
use crate::xx::*;
use crate::*;
use super::*;
use core::convert::TryInto;
use rpc_processor::*;
pub fn encode_address(
address: &Address,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_address_type_set(
address_type_set: &AddressTypeSet,

View File

@ -1,7 +1,5 @@
use crate::crypto::*;
use crate::*;
use super::*;
use core::convert::TryInto;
use rpc_processor::*;
pub fn decode_dht_key(public_key: &veilid_capnp::key256::Reader) -> DHTKey {
let u0 = public_key.get_u0().to_be_bytes();

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_signature(sig: &DHTSignature, builder: &mut veilid_capnp::signature512::Builder) {
let sig = &sig.bytes;

View File

@ -1,7 +1,5 @@
use crate::xx::*;
use crate::*;
use super::*;
use core::convert::TryInto;
use rpc_processor::*;
pub fn decode_dial_info(reader: &veilid_capnp::dial_info::Reader) -> Result<DialInfo, RPCError> {
match reader

View File

@ -1,4 +1,4 @@
use crate::*;
use super::*;
pub fn encode_dial_info_class(dial_info_class: DialInfoClass) -> veilid_capnp::DialInfoClass {
match dial_info_class {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_dial_info_detail(
dial_info_detail: &DialInfoDetail,

View File

@ -1,4 +1,4 @@
use crate::*;
use super::*;
pub fn encode_network_class(network_class: NetworkClass) -> veilid_capnp::NetworkClass {
match network_class {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_node_info(
node_info: &NodeInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_public_internet_node_status(
public_internet_node_status: &PublicInternetNodeStatus,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_nonce(nonce: &Nonce, builder: &mut veilid_capnp::nonce24::Builder) {
builder.set_u0(u64::from_be_bytes(

View File

@ -1,6 +1,4 @@
use super::*;
use crate::*;
use rpc_processor::*;
#[derive(Debug, Clone)]
pub struct RPCAnswer {

View File

@ -45,3 +45,5 @@ pub use operation_watch_value::*;
pub use question::*;
pub use respond_to::*;
pub use statement::*;
use super::*;

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub enum RPCOperationKind {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationAppCallQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationAppMessage {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationCancelTunnelQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationCompleteTunnelQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationFindBlockQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationFindNodeQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationGetValueQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationNodeInfoUpdate {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationReturnReceipt {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RoutedOperation {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationSetValueQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationSignal {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationStartTunnelQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationStatusQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationSupplyBlockQ {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationValidateDialInfo {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationValueChanged {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub struct RPCOperationWatchValueQ {

View File

@ -1,6 +1,4 @@
use super::*;
use crate::*;
use rpc_processor::*;
#[derive(Debug, Clone)]
pub struct RPCQuestion {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
#[derive(Debug, Clone)]
pub enum RespondTo {

View File

@ -1,6 +1,4 @@
use super::*;
use crate::*;
use rpc_processor::*;
#[derive(Debug, Clone)]
pub struct RPCStatement {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_peer_info(
peer_info: &PeerInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_protocol_type_set(
protocol_type_set: &ProtocolTypeSet,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_sender_info(
sender_info: &SenderInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_signal_info(
signal_info: &SignalInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_signed_direct_node_info(
signed_direct_node_info: &SignedDirectNodeInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_signed_node_info(
signed_node_info: &SignedNodeInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_signed_relayed_node_info(
signed_relayed_node_info: &SignedRelayedNodeInfo,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_socket_address(
socket_address: &SocketAddress,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_tunnel_mode(tunnel_mode: TunnelMode) -> veilid_capnp::TunnelEndpointMode {
match tunnel_mode {

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_value_data(
value_data: &ValueData,

View File

@ -1,5 +1,4 @@
use crate::*;
use rpc_processor::*;
use super::*;
pub fn encode_value_key(
value_key: &ValueKey,

View File

@ -4,8 +4,3 @@ pub mod test_protected_store;
pub mod test_table_store;
pub mod test_veilid_config;
pub mod test_veilid_core;
use super::*;
pub use crypto::tests::*;
pub use network_manager::tests::*;

View File

@ -1,5 +1,3 @@
pub mod common;
#[cfg(not(target_arch = "wasm32"))]
mod native;
use super::*;

View File

@ -3,10 +3,11 @@
mod test_async_peek_stream;
use crate::xx::*;
use crate::crypto::tests::*;
use crate::network_manager::tests::*;
use crate::tests::common::*;
use crate::xx::*;
#[cfg(all(target_os = "android", feature = "android_tests"))]
use jni::{objects::JClass, objects::JObject, JNIEnv};

View File

@ -1,4 +1,4 @@
use super::*;
use crate::xx::*;
cfg_if! {
if #[cfg(feature="rt-async-std")] {

View File

@ -0,0 +1,284 @@
use super::*;
/////////////////////////////////////////////////////////////////////////////////////////////////////
struct VeilidAPIInner {
context: Option<VeilidCoreContext>,
}
impl fmt::Debug for VeilidAPIInner {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "VeilidAPIInner")
}
}
impl Drop for VeilidAPIInner {
fn drop(&mut self) {
if let Some(context) = self.context.take() {
intf::spawn_detached(api_shutdown(context));
}
}
}
#[derive(Clone, Debug)]
pub struct VeilidAPI {
inner: Arc<Mutex<VeilidAPIInner>>,
}
impl VeilidAPI {
#[instrument(skip_all)]
pub(crate) fn new(context: VeilidCoreContext) -> Self {
Self {
inner: Arc::new(Mutex::new(VeilidAPIInner {
context: Some(context),
})),
}
}
#[instrument(skip_all)]
pub async fn shutdown(self) {
let context = { self.inner.lock().context.take() };
if let Some(context) = context {
api_shutdown(context).await;
}
}
pub fn is_shutdown(&self) -> bool {
self.inner.lock().context.is_none()
}
////////////////////////////////////////////////////////////////
// Accessors
pub fn config(&self) -> Result<VeilidConfig, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.config.clone());
}
Err(VeilidAPIError::NotInitialized)
}
pub fn crypto(&self) -> Result<Crypto, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.crypto.clone());
}
Err(VeilidAPIError::NotInitialized)
}
pub fn table_store(&self) -> Result<TableStore, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.table_store.clone());
}
Err(VeilidAPIError::not_initialized())
}
pub fn block_store(&self) -> Result<BlockStore, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.block_store.clone());
}
Err(VeilidAPIError::not_initialized())
}
pub fn protected_store(&self) -> Result<ProtectedStore, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.protected_store.clone());
}
Err(VeilidAPIError::not_initialized())
}
pub fn attachment_manager(&self) -> Result<AttachmentManager, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.attachment_manager.clone());
}
Err(VeilidAPIError::not_initialized())
}
pub fn network_manager(&self) -> Result<NetworkManager, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.attachment_manager.network_manager());
}
Err(VeilidAPIError::not_initialized())
}
pub fn rpc_processor(&self) -> Result<RPCProcessor, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.attachment_manager.network_manager().rpc_processor());
}
Err(VeilidAPIError::NotInitialized)
}
pub fn routing_table(&self) -> Result<RoutingTable, VeilidAPIError> {
let inner = self.inner.lock();
if let Some(context) = &inner.context {
return Ok(context.attachment_manager.network_manager().routing_table());
}
Err(VeilidAPIError::NotInitialized)
}
////////////////////////////////////////////////////////////////
// Attach/Detach
// get a full copy of the current state
pub async fn get_state(&self) -> Result<VeilidState, VeilidAPIError> {
let attachment_manager = self.attachment_manager()?;
let network_manager = attachment_manager.network_manager();
let config = self.config()?;
let attachment = attachment_manager.get_veilid_state();
let network = network_manager.get_veilid_state();
let config = config.get_veilid_state();
Ok(VeilidState {
attachment,
network,
config,
})
}
// get network connectedness
// connect to the network
#[instrument(level = "debug", err, skip_all)]
pub async fn attach(&self) -> Result<(), VeilidAPIError> {
let attachment_manager = self.attachment_manager()?;
attachment_manager
.request_attach()
.await
.map_err(|e| VeilidAPIError::internal(e))
}
// disconnect from the network
#[instrument(level = "debug", err, skip_all)]
pub async fn detach(&self) -> Result<(), VeilidAPIError> {
let attachment_manager = self.attachment_manager()?;
attachment_manager
.request_detach()
.await
.map_err(|e| VeilidAPIError::internal(e))
}
////////////////////////////////////////////////////////////////
// Routing Context
#[instrument(level = "debug", skip(self))]
pub fn routing_context(&self) -> RoutingContext {
RoutingContext::new(self.clone())
}
////////////////////////////////////////////////////////////////
// Private route allocation
#[instrument(level = "debug", skip(self))]
pub async fn new_private_route(&self) -> Result<(DHTKey, Vec<u8>), VeilidAPIError> {
self.new_custom_private_route(Stability::default(), Sequencing::default())
.await
}
#[instrument(level = "debug", skip(self))]
pub async fn new_custom_private_route(
&self,
stability: Stability,
sequencing: Sequencing,
) -> Result<(DHTKey, Vec<u8>), VeilidAPIError> {
let default_route_hop_count: usize = {
let config = self.config()?;
let c = config.get();
c.network.rpc.default_route_hop_count.into()
};
let rss = self.routing_table()?.route_spec_store();
let r = rss
.allocate_route(
stability,
sequencing,
default_route_hop_count,
Direction::Inbound.into(),
&[],
)
.map_err(VeilidAPIError::internal)?;
let Some(pr_pubkey) = r else {
apibail_generic!("unable to allocate route");
};
if !rss
.test_route(&pr_pubkey)
.await
.map_err(VeilidAPIError::no_connection)?
{
rss.release_route(&pr_pubkey);
apibail_generic!("allocated route failed to test");
}
let private_route = rss
.assemble_private_route(&pr_pubkey, Some(true))
.map_err(VeilidAPIError::generic)?;
let blob = match RouteSpecStore::private_route_to_blob(&private_route) {
Ok(v) => v,
Err(e) => {
rss.release_route(&pr_pubkey);
apibail_internal!(e);
}
};
rss.mark_route_published(&pr_pubkey, true)
.map_err(VeilidAPIError::internal)?;
Ok((pr_pubkey, blob))
}
#[instrument(level = "debug", skip(self))]
pub fn import_remote_private_route(&self, blob: Vec<u8>) -> Result<DHTKey, VeilidAPIError> {
let rss = self.routing_table()?.route_spec_store();
rss.import_remote_private_route(blob)
.map_err(|e| VeilidAPIError::invalid_argument(e, "blob", "private route blob"))
}
#[instrument(level = "debug", skip(self))]
pub fn release_private_route(&self, key: &DHTKey) -> Result<(), VeilidAPIError> {
let rss = self.routing_table()?.route_spec_store();
if rss.release_route(key) {
Ok(())
} else {
Err(VeilidAPIError::invalid_argument(
"release_private_route",
"key",
key,
))
}
}
////////////////////////////////////////////////////////////////
// App Calls
#[instrument(level = "debug", skip(self))]
pub async fn app_call_reply(&self, id: u64, message: Vec<u8>) -> Result<(), VeilidAPIError> {
let rpc_processor = self.rpc_processor()?;
rpc_processor
.app_call_reply(id, message)
.await
.map_err(|e| e.into())
}
////////////////////////////////////////////////////////////////
// Tunnel Building
#[instrument(level = "debug", err, skip(self))]
pub async fn start_tunnel(
&self,
_endpoint_mode: TunnelMode,
_depth: u8,
) -> Result<PartialTunnel, VeilidAPIError> {
panic!("unimplemented");
}
#[instrument(level = "debug", err, skip(self))]
pub async fn complete_tunnel(
&self,
_endpoint_mode: TunnelMode,
_depth: u8,
_partial_tunnel: PartialTunnel,
) -> Result<FullTunnel, VeilidAPIError> {
panic!("unimplemented");
}
#[instrument(level = "debug", err, skip(self))]
pub async fn cancel_tunnel(&self, _tunnel_id: TunnelId) -> Result<bool, VeilidAPIError> {
panic!("unimplemented");
}
}

View File

@ -276,15 +276,10 @@ fn get_debug_argument<T, G: FnOnce(&str) -> Option<T>>(
argument: &str,
getter: G,
) -> Result<T, VeilidAPIError> {
if let Some(val) = getter(value) {
Ok(val)
} else {
Err(VeilidAPIError::InvalidArgument {
context: context.to_owned(),
argument: argument.to_owned(),
value: value.to_owned(),
})
}
let Some(val) = getter(value) else {
apibail_invalid_argument!(context, argument, value);
};
Ok(val)
}
fn get_debug_argument_at<T, G: FnOnce(&str) -> Option<T>>(
debug_args: &[String],
@ -294,21 +289,13 @@ fn get_debug_argument_at<T, G: FnOnce(&str) -> Option<T>>(
getter: G,
) -> Result<T, VeilidAPIError> {
if pos >= debug_args.len() {
return Err(VeilidAPIError::MissingArgument {
context: context.to_owned(),
argument: argument.to_owned(),
});
apibail_missing_argument!(context, argument);
}
let value = &debug_args[pos];
if let Some(val) = getter(value) {
Ok(val)
} else {
Err(VeilidAPIError::InvalidArgument {
context: context.to_owned(),
argument: argument.to_owned(),
value: value.to_owned(),
})
}
let Some(val) = getter(value) else {
apibail_invalid_argument!(context, argument, value);
};
Ok(val)
}
impl VeilidAPI {
@ -351,11 +338,7 @@ impl VeilidAPI {
} else if let Some(lim) = get_number(&arg) {
limit = lim;
} else {
return Err(VeilidAPIError::InvalidArgument {
context: "debug_entries".to_owned(),
argument: "unknown".to_owned(),
value: arg,
});
apibail_invalid_argument!("debug_entries", "unknown", arg);
}
}
@ -412,7 +395,7 @@ impl VeilidAPI {
async fn debug_restart(&self, args: String) -> Result<String, VeilidAPIError> {
let args = args.trim_start();
if args.is_empty() {
return Err(VeilidAPIError::missing_argument("debug_restart", "arg_0"));
apibail_missing_argument!("debug_restart", "arg_0");
}
let (arg, _rest) = args.split_once(' ').unwrap_or((args, ""));
// let rest = rest.trim_start().to_owned();
@ -431,11 +414,7 @@ impl VeilidAPI {
Ok("Network restarted".to_owned())
} else {
Err(VeilidAPIError::invalid_argument(
"debug_restart",
"arg_1",
arg,
))
apibail_invalid_argument!("debug_restart", "arg_1", arg);
}
}
@ -654,11 +633,7 @@ impl VeilidAPI {
if full_val == "full" {
true
} else {
return Err(VeilidAPIError::invalid_argument(
"debug_route",
"full",
full_val,
));
apibail_invalid_argument!("debug_route", "full", full_val);
}
} else {
false

View File

@ -0,0 +1,186 @@
use super::*;
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_timeout {
() => {
return Err(VeilidAPIError::timeout())
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_generic {
($x:expr) => {
return Err(VeilidAPIError::generic($x))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_internal {
($x:expr) => {
return Err(VeilidAPIError::internal($x))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_parse_error {
($x:expr, $y:expr) => {
return Err(VeilidAPIError::parse_error($x, $y))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_missing_argument {
($x:expr, $y:expr) => {
return Err(VeilidAPIError::missing_argument($x, $y))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_invalid_argument {
($x:expr, $y:expr, $z:expr) => {
return Err(VeilidAPIError::invalid_argument($x, $y, $z))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_no_connection {
($x:expr) => {
return Err(VeilidAPIError::no_connection($x))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_key_not_found {
($x:expr) => {
return Err(VeilidAPIError::key_not_found($x))
};
}
#[allow(unused_macros)]
#[macro_export]
macro_rules! apibail_already_initialized {
() => {
return Err(VeilidAPIError::already_initialized())
};
}
#[derive(
ThisError,
Clone,
Debug,
PartialOrd,
PartialEq,
Eq,
Ord,
Serialize,
Deserialize,
RkyvArchive,
RkyvSerialize,
RkyvDeserialize,
)]
#[archive_attr(repr(u8), derive(CheckBytes))]
#[serde(tag = "kind")]
pub enum VeilidAPIError {
#[error("Not initialized")]
NotInitialized,
#[error("Already initialized")]
AlreadyInitialized,
#[error("Timeout")]
Timeout,
#[error("Shutdown")]
Shutdown,
#[error("Key not found: {key}")]
KeyNotFound { key: DHTKey },
#[error("No connection: {message}")]
NoConnection { message: String },
#[error("No peer info: {node_id}")]
NoPeerInfo { node_id: NodeId },
#[error("Internal: {message}")]
Internal { message: String },
#[error("Unimplemented: {message}")]
Unimplemented { message: String },
#[error("Parse error: '{message}' with value '{value}'")]
ParseError { message: String, value: String },
#[error("Invalid argument: '{argument}' for '{context}' with value '{value}'")]
InvalidArgument {
context: String,
argument: String,
value: String,
},
#[error("Missing argument: '{argument}' for '{context}'")]
MissingArgument { context: String, argument: String },
#[error("Generic: {message}")]
Generic { message: String },
}
impl VeilidAPIError {
pub fn not_initialized() -> Self {
Self::NotInitialized
}
pub fn already_initialized() -> Self {
Self::AlreadyInitialized
}
pub fn timeout() -> Self {
Self::Timeout
}
pub fn shutdown() -> Self {
Self::Shutdown
}
pub fn key_not_found(key: DHTKey) -> Self {
Self::KeyNotFound { key }
}
pub fn no_connection<T: ToString>(msg: T) -> Self {
Self::NoConnection {
message: msg.to_string(),
}
}
pub fn no_peer_info(node_id: NodeId) -> Self {
Self::NoPeerInfo { node_id }
}
pub fn internal<T: ToString>(msg: T) -> Self {
Self::Internal {
message: msg.to_string(),
}
}
pub fn unimplemented<T: ToString>(msg: T) -> Self {
Self::Unimplemented {
message: msg.to_string(),
}
}
pub fn parse_error<T: ToString, S: ToString>(msg: T, value: S) -> Self {
Self::ParseError {
message: msg.to_string(),
value: value.to_string(),
}
}
pub fn invalid_argument<T: ToString, S: ToString, R: ToString>(
context: T,
argument: S,
value: R,
) -> Self {
Self::InvalidArgument {
context: context.to_string(),
argument: argument.to_string(),
value: value.to_string(),
}
}
pub fn missing_argument<T: ToString, S: ToString>(context: T, argument: S) -> Self {
Self::MissingArgument {
context: context.to_string(),
argument: argument.to_string(),
}
}
pub fn generic<T: ToString>(msg: T) -> Self {
Self::Generic {
message: msg.to_string(),
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
use super::*;
///////////////////////////////////////////////////////////////////////////////////////
#[derive(Clone, Debug)]
@ -106,7 +107,7 @@ impl RoutingContext {
// Resolve node
let mut nr = match rpc_processor.resolve_node(node_id.key).await {
Ok(Some(nr)) => nr,
Ok(None) => return Err(VeilidAPIError::KeyNotFound { key: node_id.key }),
Ok(None) => apibail_key_not_found!(node_id.key),
Err(e) => return Err(e.into()),
};
// Apply sequencing to match safety selection
@ -123,7 +124,7 @@ impl RoutingContext {
let Some(private_route) = rss
.get_remote_private_route(&pr)
else {
return Err(VeilidAPIError::KeyNotFound { key: pr });
apibail_key_not_found!(pr);
};
Ok(rpc_processor::Destination::PrivateRoute {
@ -151,15 +152,13 @@ impl RoutingContext {
// Send app message
let answer = match rpc_processor.rpc_call_app_call(dest, request).await {
Ok(NetworkResult::Value(v)) => v,
Ok(NetworkResult::Timeout) => return Err(VeilidAPIError::Timeout),
Ok(NetworkResult::Timeout) => apibail_timeout!(),
Ok(NetworkResult::NoConnection(e)) | Ok(NetworkResult::AlreadyExists(e)) => {
return Err(VeilidAPIError::NoConnection {
message: e.to_string(),
})
apibail_no_connection!(e);
}
Ok(NetworkResult::InvalidMessage(message)) => {
return Err(VeilidAPIError::Generic { message })
apibail_generic!(message);
}
Err(e) => return Err(e.into()),
};
@ -181,14 +180,12 @@ impl RoutingContext {
// Send app message
match rpc_processor.rpc_call_app_message(dest, message).await {
Ok(NetworkResult::Value(())) => {}
Ok(NetworkResult::Timeout) => return Err(VeilidAPIError::Timeout),
Ok(NetworkResult::Timeout) => apibail_timeout!(),
Ok(NetworkResult::NoConnection(e)) | Ok(NetworkResult::AlreadyExists(e)) => {
return Err(VeilidAPIError::NoConnection {
message: e.to_string(),
})
apibail_no_connection!(e);
}
Ok(NetworkResult::InvalidMessage(message)) => {
return Err(VeilidAPIError::Generic { message })
apibail_generic!(message);
}
Err(e) => return Err(e.into()),
};

File diff suppressed because it is too large Load Diff