Demonstrating core cloud concepts, starting with CaaS. Not for production use.

Initial worker manager

+1414
+1
worker-plane/worker-manager/.env
··· 1 + CONTROL_PLANE_URL=ws://127.0.0.1:9001
+1
worker-plane/worker-manager/.env.example
··· 1 + CONTROL_PLANE_URL=ws://127.0.0.1:9001
+1
worker-plane/worker-manager/.gitignore
··· 1 + target
+1282
worker-plane/worker-manager/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "bitflags" 7 + version = "2.10.0" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 10 + 11 + [[package]] 12 + name = "block-buffer" 13 + version = "0.10.4" 14 + source = "registry+https://github.com/rust-lang/crates.io-index" 15 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 16 + dependencies = [ 17 + "generic-array", 18 + ] 19 + 20 + [[package]] 21 + name = "byteorder" 22 + version = "1.5.0" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 25 + 26 + [[package]] 27 + name = "bytes" 28 + version = "1.10.1" 29 + source = "registry+https://github.com/rust-lang/crates.io-index" 30 + checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 31 + 32 + [[package]] 33 + name = "cc" 34 + version = "1.2.41" 35 + source = "registry+https://github.com/rust-lang/crates.io-index" 36 + checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" 37 + dependencies = [ 38 + "find-msvc-tools", 39 + "shlex", 40 + ] 41 + 42 + [[package]] 43 + name = "cfg-if" 44 + version = "1.0.4" 45 + source = "registry+https://github.com/rust-lang/crates.io-index" 46 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 47 + 48 + [[package]] 49 + name = "core-foundation" 50 + version = "0.9.4" 51 + source = "registry+https://github.com/rust-lang/crates.io-index" 52 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 53 + dependencies = [ 54 + "core-foundation-sys", 55 + "libc", 56 + ] 57 + 58 + [[package]] 59 + name = "core-foundation-sys" 60 + version = "0.8.7" 61 + source = "registry+https://github.com/rust-lang/crates.io-index" 62 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 63 + 64 + [[package]] 65 + name = "cpufeatures" 66 + version = "0.2.17" 67 + source = "registry+https://github.com/rust-lang/crates.io-index" 68 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 69 + dependencies = [ 70 + "libc", 71 + ] 72 + 73 + [[package]] 74 + name = "crypto-common" 75 + version = "0.1.6" 76 + source = "registry+https://github.com/rust-lang/crates.io-index" 77 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 78 + dependencies = [ 79 + "generic-array", 80 + "typenum", 81 + ] 82 + 83 + [[package]] 84 + name = "data-encoding" 85 + version = "2.9.0" 86 + source = "registry+https://github.com/rust-lang/crates.io-index" 87 + checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 88 + 89 + [[package]] 90 + name = "digest" 91 + version = "0.10.7" 92 + source = "registry+https://github.com/rust-lang/crates.io-index" 93 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 94 + dependencies = [ 95 + "block-buffer", 96 + "crypto-common", 97 + ] 98 + 99 + [[package]] 100 + name = "displaydoc" 101 + version = "0.2.5" 102 + source = "registry+https://github.com/rust-lang/crates.io-index" 103 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 104 + dependencies = [ 105 + "proc-macro2", 106 + "quote", 107 + "syn", 108 + ] 109 + 110 + [[package]] 111 + name = "dotenvy" 112 + version = "0.15.7" 113 + source = "registry+https://github.com/rust-lang/crates.io-index" 114 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 115 + 116 + [[package]] 117 + name = "errno" 118 + version = "0.3.14" 119 + source = "registry+https://github.com/rust-lang/crates.io-index" 120 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 121 + dependencies = [ 122 + "libc", 123 + "windows-sys 0.61.2", 124 + ] 125 + 126 + [[package]] 127 + name = "fastrand" 128 + version = "2.3.0" 129 + source = "registry+https://github.com/rust-lang/crates.io-index" 130 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 131 + 132 + [[package]] 133 + name = "find-msvc-tools" 134 + version = "0.1.4" 135 + source = "registry+https://github.com/rust-lang/crates.io-index" 136 + checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" 137 + 138 + [[package]] 139 + name = "fnv" 140 + version = "1.0.7" 141 + source = "registry+https://github.com/rust-lang/crates.io-index" 142 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 143 + 144 + [[package]] 145 + name = "foreign-types" 146 + version = "0.3.2" 147 + source = "registry+https://github.com/rust-lang/crates.io-index" 148 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 149 + dependencies = [ 150 + "foreign-types-shared", 151 + ] 152 + 153 + [[package]] 154 + name = "foreign-types-shared" 155 + version = "0.1.1" 156 + source = "registry+https://github.com/rust-lang/crates.io-index" 157 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 158 + 159 + [[package]] 160 + name = "form_urlencoded" 161 + version = "1.2.2" 162 + source = "registry+https://github.com/rust-lang/crates.io-index" 163 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 164 + dependencies = [ 165 + "percent-encoding", 166 + ] 167 + 168 + [[package]] 169 + name = "futures-core" 170 + version = "0.3.31" 171 + source = "registry+https://github.com/rust-lang/crates.io-index" 172 + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 173 + 174 + [[package]] 175 + name = "futures-macro" 176 + version = "0.3.31" 177 + source = "registry+https://github.com/rust-lang/crates.io-index" 178 + checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 179 + dependencies = [ 180 + "proc-macro2", 181 + "quote", 182 + "syn", 183 + ] 184 + 185 + [[package]] 186 + name = "futures-sink" 187 + version = "0.3.31" 188 + source = "registry+https://github.com/rust-lang/crates.io-index" 189 + checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 190 + 191 + [[package]] 192 + name = "futures-task" 193 + version = "0.3.31" 194 + source = "registry+https://github.com/rust-lang/crates.io-index" 195 + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 196 + 197 + [[package]] 198 + name = "futures-util" 199 + version = "0.3.31" 200 + source = "registry+https://github.com/rust-lang/crates.io-index" 201 + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 202 + dependencies = [ 203 + "futures-core", 204 + "futures-macro", 205 + "futures-sink", 206 + "futures-task", 207 + "pin-project-lite", 208 + "pin-utils", 209 + "slab", 210 + ] 211 + 212 + [[package]] 213 + name = "generic-array" 214 + version = "0.14.9" 215 + source = "registry+https://github.com/rust-lang/crates.io-index" 216 + checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 217 + dependencies = [ 218 + "typenum", 219 + "version_check", 220 + ] 221 + 222 + [[package]] 223 + name = "getrandom" 224 + version = "0.2.16" 225 + source = "registry+https://github.com/rust-lang/crates.io-index" 226 + checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 227 + dependencies = [ 228 + "cfg-if", 229 + "libc", 230 + "wasi", 231 + ] 232 + 233 + [[package]] 234 + name = "getrandom" 235 + version = "0.3.4" 236 + source = "registry+https://github.com/rust-lang/crates.io-index" 237 + checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 238 + dependencies = [ 239 + "cfg-if", 240 + "libc", 241 + "r-efi", 242 + "wasip2", 243 + ] 244 + 245 + [[package]] 246 + name = "http" 247 + version = "1.3.1" 248 + source = "registry+https://github.com/rust-lang/crates.io-index" 249 + checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 250 + dependencies = [ 251 + "bytes", 252 + "fnv", 253 + "itoa", 254 + ] 255 + 256 + [[package]] 257 + name = "httparse" 258 + version = "1.10.1" 259 + source = "registry+https://github.com/rust-lang/crates.io-index" 260 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 261 + 262 + [[package]] 263 + name = "icu_collections" 264 + version = "2.0.0" 265 + source = "registry+https://github.com/rust-lang/crates.io-index" 266 + checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 267 + dependencies = [ 268 + "displaydoc", 269 + "potential_utf", 270 + "yoke", 271 + "zerofrom", 272 + "zerovec", 273 + ] 274 + 275 + [[package]] 276 + name = "icu_locale_core" 277 + version = "2.0.0" 278 + source = "registry+https://github.com/rust-lang/crates.io-index" 279 + checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 280 + dependencies = [ 281 + "displaydoc", 282 + "litemap", 283 + "tinystr", 284 + "writeable", 285 + "zerovec", 286 + ] 287 + 288 + [[package]] 289 + name = "icu_normalizer" 290 + version = "2.0.0" 291 + source = "registry+https://github.com/rust-lang/crates.io-index" 292 + checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 293 + dependencies = [ 294 + "displaydoc", 295 + "icu_collections", 296 + "icu_normalizer_data", 297 + "icu_properties", 298 + "icu_provider", 299 + "smallvec", 300 + "zerovec", 301 + ] 302 + 303 + [[package]] 304 + name = "icu_normalizer_data" 305 + version = "2.0.0" 306 + source = "registry+https://github.com/rust-lang/crates.io-index" 307 + checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 308 + 309 + [[package]] 310 + name = "icu_properties" 311 + version = "2.0.1" 312 + source = "registry+https://github.com/rust-lang/crates.io-index" 313 + checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 314 + dependencies = [ 315 + "displaydoc", 316 + "icu_collections", 317 + "icu_locale_core", 318 + "icu_properties_data", 319 + "icu_provider", 320 + "potential_utf", 321 + "zerotrie", 322 + "zerovec", 323 + ] 324 + 325 + [[package]] 326 + name = "icu_properties_data" 327 + version = "2.0.1" 328 + source = "registry+https://github.com/rust-lang/crates.io-index" 329 + checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 330 + 331 + [[package]] 332 + name = "icu_provider" 333 + version = "2.0.0" 334 + source = "registry+https://github.com/rust-lang/crates.io-index" 335 + checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 336 + dependencies = [ 337 + "displaydoc", 338 + "icu_locale_core", 339 + "stable_deref_trait", 340 + "tinystr", 341 + "writeable", 342 + "yoke", 343 + "zerofrom", 344 + "zerotrie", 345 + "zerovec", 346 + ] 347 + 348 + [[package]] 349 + name = "idna" 350 + version = "1.1.0" 351 + source = "registry+https://github.com/rust-lang/crates.io-index" 352 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 353 + dependencies = [ 354 + "idna_adapter", 355 + "smallvec", 356 + "utf8_iter", 357 + ] 358 + 359 + [[package]] 360 + name = "idna_adapter" 361 + version = "1.2.1" 362 + source = "registry+https://github.com/rust-lang/crates.io-index" 363 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 364 + dependencies = [ 365 + "icu_normalizer", 366 + "icu_properties", 367 + ] 368 + 369 + [[package]] 370 + name = "itoa" 371 + version = "1.0.15" 372 + source = "registry+https://github.com/rust-lang/crates.io-index" 373 + checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 374 + 375 + [[package]] 376 + name = "lazy_static" 377 + version = "1.5.0" 378 + source = "registry+https://github.com/rust-lang/crates.io-index" 379 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 380 + 381 + [[package]] 382 + name = "libc" 383 + version = "0.2.177" 384 + source = "registry+https://github.com/rust-lang/crates.io-index" 385 + checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" 386 + 387 + [[package]] 388 + name = "linux-raw-sys" 389 + version = "0.11.0" 390 + source = "registry+https://github.com/rust-lang/crates.io-index" 391 + checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" 392 + 393 + [[package]] 394 + name = "litemap" 395 + version = "0.8.0" 396 + source = "registry+https://github.com/rust-lang/crates.io-index" 397 + checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 398 + 399 + [[package]] 400 + name = "lock_api" 401 + version = "0.4.14" 402 + source = "registry+https://github.com/rust-lang/crates.io-index" 403 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 404 + dependencies = [ 405 + "scopeguard", 406 + ] 407 + 408 + [[package]] 409 + name = "log" 410 + version = "0.4.28" 411 + source = "registry+https://github.com/rust-lang/crates.io-index" 412 + checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 413 + 414 + [[package]] 415 + name = "memchr" 416 + version = "2.7.6" 417 + source = "registry+https://github.com/rust-lang/crates.io-index" 418 + checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 419 + 420 + [[package]] 421 + name = "mio" 422 + version = "1.1.0" 423 + source = "registry+https://github.com/rust-lang/crates.io-index" 424 + checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 425 + dependencies = [ 426 + "libc", 427 + "wasi", 428 + "windows-sys 0.61.2", 429 + ] 430 + 431 + [[package]] 432 + name = "native-tls" 433 + version = "0.2.14" 434 + source = "registry+https://github.com/rust-lang/crates.io-index" 435 + checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" 436 + dependencies = [ 437 + "libc", 438 + "log", 439 + "openssl", 440 + "openssl-probe", 441 + "openssl-sys", 442 + "schannel", 443 + "security-framework", 444 + "security-framework-sys", 445 + "tempfile", 446 + ] 447 + 448 + [[package]] 449 + name = "nu-ansi-term" 450 + version = "0.50.3" 451 + source = "registry+https://github.com/rust-lang/crates.io-index" 452 + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 453 + dependencies = [ 454 + "windows-sys 0.61.2", 455 + ] 456 + 457 + [[package]] 458 + name = "once_cell" 459 + version = "1.21.3" 460 + source = "registry+https://github.com/rust-lang/crates.io-index" 461 + checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 462 + 463 + [[package]] 464 + name = "openssl" 465 + version = "0.10.74" 466 + source = "registry+https://github.com/rust-lang/crates.io-index" 467 + checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" 468 + dependencies = [ 469 + "bitflags", 470 + "cfg-if", 471 + "foreign-types", 472 + "libc", 473 + "once_cell", 474 + "openssl-macros", 475 + "openssl-sys", 476 + ] 477 + 478 + [[package]] 479 + name = "openssl-macros" 480 + version = "0.1.1" 481 + source = "registry+https://github.com/rust-lang/crates.io-index" 482 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 483 + dependencies = [ 484 + "proc-macro2", 485 + "quote", 486 + "syn", 487 + ] 488 + 489 + [[package]] 490 + name = "openssl-probe" 491 + version = "0.1.6" 492 + source = "registry+https://github.com/rust-lang/crates.io-index" 493 + checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 494 + 495 + [[package]] 496 + name = "openssl-sys" 497 + version = "0.9.110" 498 + source = "registry+https://github.com/rust-lang/crates.io-index" 499 + checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" 500 + dependencies = [ 501 + "cc", 502 + "libc", 503 + "pkg-config", 504 + "vcpkg", 505 + ] 506 + 507 + [[package]] 508 + name = "parking_lot" 509 + version = "0.12.5" 510 + source = "registry+https://github.com/rust-lang/crates.io-index" 511 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 512 + dependencies = [ 513 + "lock_api", 514 + "parking_lot_core", 515 + ] 516 + 517 + [[package]] 518 + name = "parking_lot_core" 519 + version = "0.9.12" 520 + source = "registry+https://github.com/rust-lang/crates.io-index" 521 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 522 + dependencies = [ 523 + "cfg-if", 524 + "libc", 525 + "redox_syscall", 526 + "smallvec", 527 + "windows-link", 528 + ] 529 + 530 + [[package]] 531 + name = "percent-encoding" 532 + version = "2.3.2" 533 + source = "registry+https://github.com/rust-lang/crates.io-index" 534 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 535 + 536 + [[package]] 537 + name = "pin-project-lite" 538 + version = "0.2.16" 539 + source = "registry+https://github.com/rust-lang/crates.io-index" 540 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 541 + 542 + [[package]] 543 + name = "pin-utils" 544 + version = "0.1.0" 545 + source = "registry+https://github.com/rust-lang/crates.io-index" 546 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 547 + 548 + [[package]] 549 + name = "pkg-config" 550 + version = "0.3.32" 551 + source = "registry+https://github.com/rust-lang/crates.io-index" 552 + checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 553 + 554 + [[package]] 555 + name = "potential_utf" 556 + version = "0.1.3" 557 + source = "registry+https://github.com/rust-lang/crates.io-index" 558 + checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" 559 + dependencies = [ 560 + "zerovec", 561 + ] 562 + 563 + [[package]] 564 + name = "ppv-lite86" 565 + version = "0.2.21" 566 + source = "registry+https://github.com/rust-lang/crates.io-index" 567 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 568 + dependencies = [ 569 + "zerocopy", 570 + ] 571 + 572 + [[package]] 573 + name = "proc-macro2" 574 + version = "1.0.101" 575 + source = "registry+https://github.com/rust-lang/crates.io-index" 576 + checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" 577 + dependencies = [ 578 + "unicode-ident", 579 + ] 580 + 581 + [[package]] 582 + name = "quote" 583 + version = "1.0.41" 584 + source = "registry+https://github.com/rust-lang/crates.io-index" 585 + checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" 586 + dependencies = [ 587 + "proc-macro2", 588 + ] 589 + 590 + [[package]] 591 + name = "r-efi" 592 + version = "5.3.0" 593 + source = "registry+https://github.com/rust-lang/crates.io-index" 594 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 595 + 596 + [[package]] 597 + name = "rand" 598 + version = "0.8.5" 599 + source = "registry+https://github.com/rust-lang/crates.io-index" 600 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 601 + dependencies = [ 602 + "libc", 603 + "rand_chacha", 604 + "rand_core", 605 + ] 606 + 607 + [[package]] 608 + name = "rand_chacha" 609 + version = "0.3.1" 610 + source = "registry+https://github.com/rust-lang/crates.io-index" 611 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 612 + dependencies = [ 613 + "ppv-lite86", 614 + "rand_core", 615 + ] 616 + 617 + [[package]] 618 + name = "rand_core" 619 + version = "0.6.4" 620 + source = "registry+https://github.com/rust-lang/crates.io-index" 621 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 622 + dependencies = [ 623 + "getrandom 0.2.16", 624 + ] 625 + 626 + [[package]] 627 + name = "redox_syscall" 628 + version = "0.5.18" 629 + source = "registry+https://github.com/rust-lang/crates.io-index" 630 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 631 + dependencies = [ 632 + "bitflags", 633 + ] 634 + 635 + [[package]] 636 + name = "rustix" 637 + version = "1.1.2" 638 + source = "registry+https://github.com/rust-lang/crates.io-index" 639 + checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" 640 + dependencies = [ 641 + "bitflags", 642 + "errno", 643 + "libc", 644 + "linux-raw-sys", 645 + "windows-sys 0.61.2", 646 + ] 647 + 648 + [[package]] 649 + name = "ryu" 650 + version = "1.0.20" 651 + source = "registry+https://github.com/rust-lang/crates.io-index" 652 + checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 653 + 654 + [[package]] 655 + name = "schannel" 656 + version = "0.1.28" 657 + source = "registry+https://github.com/rust-lang/crates.io-index" 658 + checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" 659 + dependencies = [ 660 + "windows-sys 0.61.2", 661 + ] 662 + 663 + [[package]] 664 + name = "scopeguard" 665 + version = "1.2.0" 666 + source = "registry+https://github.com/rust-lang/crates.io-index" 667 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 668 + 669 + [[package]] 670 + name = "security-framework" 671 + version = "2.11.1" 672 + source = "registry+https://github.com/rust-lang/crates.io-index" 673 + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 674 + dependencies = [ 675 + "bitflags", 676 + "core-foundation", 677 + "core-foundation-sys", 678 + "libc", 679 + "security-framework-sys", 680 + ] 681 + 682 + [[package]] 683 + name = "security-framework-sys" 684 + version = "2.15.0" 685 + source = "registry+https://github.com/rust-lang/crates.io-index" 686 + checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" 687 + dependencies = [ 688 + "core-foundation-sys", 689 + "libc", 690 + ] 691 + 692 + [[package]] 693 + name = "serde" 694 + version = "1.0.228" 695 + source = "registry+https://github.com/rust-lang/crates.io-index" 696 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 697 + dependencies = [ 698 + "serde_core", 699 + "serde_derive", 700 + ] 701 + 702 + [[package]] 703 + name = "serde_core" 704 + version = "1.0.228" 705 + source = "registry+https://github.com/rust-lang/crates.io-index" 706 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 707 + dependencies = [ 708 + "serde_derive", 709 + ] 710 + 711 + [[package]] 712 + name = "serde_derive" 713 + version = "1.0.228" 714 + source = "registry+https://github.com/rust-lang/crates.io-index" 715 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 716 + dependencies = [ 717 + "proc-macro2", 718 + "quote", 719 + "syn", 720 + ] 721 + 722 + [[package]] 723 + name = "serde_json" 724 + version = "1.0.145" 725 + source = "registry+https://github.com/rust-lang/crates.io-index" 726 + checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 727 + dependencies = [ 728 + "itoa", 729 + "memchr", 730 + "ryu", 731 + "serde", 732 + "serde_core", 733 + ] 734 + 735 + [[package]] 736 + name = "sha1" 737 + version = "0.10.6" 738 + source = "registry+https://github.com/rust-lang/crates.io-index" 739 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 740 + dependencies = [ 741 + "cfg-if", 742 + "cpufeatures", 743 + "digest", 744 + ] 745 + 746 + [[package]] 747 + name = "sharded-slab" 748 + version = "0.1.7" 749 + source = "registry+https://github.com/rust-lang/crates.io-index" 750 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 751 + dependencies = [ 752 + "lazy_static", 753 + ] 754 + 755 + [[package]] 756 + name = "shlex" 757 + version = "1.3.0" 758 + source = "registry+https://github.com/rust-lang/crates.io-index" 759 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 760 + 761 + [[package]] 762 + name = "signal-hook-registry" 763 + version = "1.4.6" 764 + source = "registry+https://github.com/rust-lang/crates.io-index" 765 + checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" 766 + dependencies = [ 767 + "libc", 768 + ] 769 + 770 + [[package]] 771 + name = "slab" 772 + version = "0.4.11" 773 + source = "registry+https://github.com/rust-lang/crates.io-index" 774 + checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 775 + 776 + [[package]] 777 + name = "smallvec" 778 + version = "1.15.1" 779 + source = "registry+https://github.com/rust-lang/crates.io-index" 780 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 781 + 782 + [[package]] 783 + name = "socket2" 784 + version = "0.6.1" 785 + source = "registry+https://github.com/rust-lang/crates.io-index" 786 + checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" 787 + dependencies = [ 788 + "libc", 789 + "windows-sys 0.60.2", 790 + ] 791 + 792 + [[package]] 793 + name = "stable_deref_trait" 794 + version = "1.2.1" 795 + source = "registry+https://github.com/rust-lang/crates.io-index" 796 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 797 + 798 + [[package]] 799 + name = "syn" 800 + version = "2.0.107" 801 + source = "registry+https://github.com/rust-lang/crates.io-index" 802 + checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" 803 + dependencies = [ 804 + "proc-macro2", 805 + "quote", 806 + "unicode-ident", 807 + ] 808 + 809 + [[package]] 810 + name = "synstructure" 811 + version = "0.13.2" 812 + source = "registry+https://github.com/rust-lang/crates.io-index" 813 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 814 + dependencies = [ 815 + "proc-macro2", 816 + "quote", 817 + "syn", 818 + ] 819 + 820 + [[package]] 821 + name = "tempfile" 822 + version = "3.23.0" 823 + source = "registry+https://github.com/rust-lang/crates.io-index" 824 + checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" 825 + dependencies = [ 826 + "fastrand", 827 + "getrandom 0.3.4", 828 + "once_cell", 829 + "rustix", 830 + "windows-sys 0.61.2", 831 + ] 832 + 833 + [[package]] 834 + name = "thiserror" 835 + version = "1.0.69" 836 + source = "registry+https://github.com/rust-lang/crates.io-index" 837 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 838 + dependencies = [ 839 + "thiserror-impl", 840 + ] 841 + 842 + [[package]] 843 + name = "thiserror-impl" 844 + version = "1.0.69" 845 + source = "registry+https://github.com/rust-lang/crates.io-index" 846 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 847 + dependencies = [ 848 + "proc-macro2", 849 + "quote", 850 + "syn", 851 + ] 852 + 853 + [[package]] 854 + name = "thread_local" 855 + version = "1.1.9" 856 + source = "registry+https://github.com/rust-lang/crates.io-index" 857 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 858 + dependencies = [ 859 + "cfg-if", 860 + ] 861 + 862 + [[package]] 863 + name = "tinystr" 864 + version = "0.8.1" 865 + source = "registry+https://github.com/rust-lang/crates.io-index" 866 + checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 867 + dependencies = [ 868 + "displaydoc", 869 + "zerovec", 870 + ] 871 + 872 + [[package]] 873 + name = "tokio" 874 + version = "1.48.0" 875 + source = "registry+https://github.com/rust-lang/crates.io-index" 876 + checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" 877 + dependencies = [ 878 + "bytes", 879 + "libc", 880 + "mio", 881 + "parking_lot", 882 + "pin-project-lite", 883 + "signal-hook-registry", 884 + "socket2", 885 + "tokio-macros", 886 + "windows-sys 0.61.2", 887 + ] 888 + 889 + [[package]] 890 + name = "tokio-macros" 891 + version = "2.6.0" 892 + source = "registry+https://github.com/rust-lang/crates.io-index" 893 + checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" 894 + dependencies = [ 895 + "proc-macro2", 896 + "quote", 897 + "syn", 898 + ] 899 + 900 + [[package]] 901 + name = "tokio-native-tls" 902 + version = "0.3.1" 903 + source = "registry+https://github.com/rust-lang/crates.io-index" 904 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 905 + dependencies = [ 906 + "native-tls", 907 + "tokio", 908 + ] 909 + 910 + [[package]] 911 + name = "tokio-tungstenite" 912 + version = "0.21.0" 913 + source = "registry+https://github.com/rust-lang/crates.io-index" 914 + checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" 915 + dependencies = [ 916 + "futures-util", 917 + "log", 918 + "native-tls", 919 + "tokio", 920 + "tokio-native-tls", 921 + "tungstenite", 922 + ] 923 + 924 + [[package]] 925 + name = "tracing" 926 + version = "0.1.41" 927 + source = "registry+https://github.com/rust-lang/crates.io-index" 928 + checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 929 + dependencies = [ 930 + "pin-project-lite", 931 + "tracing-attributes", 932 + "tracing-core", 933 + ] 934 + 935 + [[package]] 936 + name = "tracing-attributes" 937 + version = "0.1.30" 938 + source = "registry+https://github.com/rust-lang/crates.io-index" 939 + checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 940 + dependencies = [ 941 + "proc-macro2", 942 + "quote", 943 + "syn", 944 + ] 945 + 946 + [[package]] 947 + name = "tracing-core" 948 + version = "0.1.34" 949 + source = "registry+https://github.com/rust-lang/crates.io-index" 950 + checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 951 + dependencies = [ 952 + "once_cell", 953 + "valuable", 954 + ] 955 + 956 + [[package]] 957 + name = "tracing-log" 958 + version = "0.2.0" 959 + source = "registry+https://github.com/rust-lang/crates.io-index" 960 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 961 + dependencies = [ 962 + "log", 963 + "once_cell", 964 + "tracing-core", 965 + ] 966 + 967 + [[package]] 968 + name = "tracing-subscriber" 969 + version = "0.3.20" 970 + source = "registry+https://github.com/rust-lang/crates.io-index" 971 + checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" 972 + dependencies = [ 973 + "nu-ansi-term", 974 + "sharded-slab", 975 + "smallvec", 976 + "thread_local", 977 + "tracing-core", 978 + "tracing-log", 979 + ] 980 + 981 + [[package]] 982 + name = "tungstenite" 983 + version = "0.21.0" 984 + source = "registry+https://github.com/rust-lang/crates.io-index" 985 + checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" 986 + dependencies = [ 987 + "byteorder", 988 + "bytes", 989 + "data-encoding", 990 + "http", 991 + "httparse", 992 + "log", 993 + "native-tls", 994 + "rand", 995 + "sha1", 996 + "thiserror", 997 + "url", 998 + "utf-8", 999 + ] 1000 + 1001 + [[package]] 1002 + name = "typenum" 1003 + version = "1.19.0" 1004 + source = "registry+https://github.com/rust-lang/crates.io-index" 1005 + checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 1006 + 1007 + [[package]] 1008 + name = "unicode-ident" 1009 + version = "1.0.20" 1010 + source = "registry+https://github.com/rust-lang/crates.io-index" 1011 + checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" 1012 + 1013 + [[package]] 1014 + name = "url" 1015 + version = "2.5.7" 1016 + source = "registry+https://github.com/rust-lang/crates.io-index" 1017 + checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 1018 + dependencies = [ 1019 + "form_urlencoded", 1020 + "idna", 1021 + "percent-encoding", 1022 + "serde", 1023 + ] 1024 + 1025 + [[package]] 1026 + name = "utf-8" 1027 + version = "0.7.6" 1028 + source = "registry+https://github.com/rust-lang/crates.io-index" 1029 + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 1030 + 1031 + [[package]] 1032 + name = "utf8_iter" 1033 + version = "1.0.4" 1034 + source = "registry+https://github.com/rust-lang/crates.io-index" 1035 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1036 + 1037 + [[package]] 1038 + name = "valuable" 1039 + version = "0.1.1" 1040 + source = "registry+https://github.com/rust-lang/crates.io-index" 1041 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1042 + 1043 + [[package]] 1044 + name = "vcpkg" 1045 + version = "0.2.15" 1046 + source = "registry+https://github.com/rust-lang/crates.io-index" 1047 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1048 + 1049 + [[package]] 1050 + name = "version_check" 1051 + version = "0.9.5" 1052 + source = "registry+https://github.com/rust-lang/crates.io-index" 1053 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 1054 + 1055 + [[package]] 1056 + name = "wasi" 1057 + version = "0.11.1+wasi-snapshot-preview1" 1058 + source = "registry+https://github.com/rust-lang/crates.io-index" 1059 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 1060 + 1061 + [[package]] 1062 + name = "wasip2" 1063 + version = "1.0.1+wasi-0.2.4" 1064 + source = "registry+https://github.com/rust-lang/crates.io-index" 1065 + checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" 1066 + dependencies = [ 1067 + "wit-bindgen", 1068 + ] 1069 + 1070 + [[package]] 1071 + name = "windows-link" 1072 + version = "0.2.1" 1073 + source = "registry+https://github.com/rust-lang/crates.io-index" 1074 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 1075 + 1076 + [[package]] 1077 + name = "windows-sys" 1078 + version = "0.60.2" 1079 + source = "registry+https://github.com/rust-lang/crates.io-index" 1080 + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 1081 + dependencies = [ 1082 + "windows-targets", 1083 + ] 1084 + 1085 + [[package]] 1086 + name = "windows-sys" 1087 + version = "0.61.2" 1088 + source = "registry+https://github.com/rust-lang/crates.io-index" 1089 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 1090 + dependencies = [ 1091 + "windows-link", 1092 + ] 1093 + 1094 + [[package]] 1095 + name = "windows-targets" 1096 + version = "0.53.5" 1097 + source = "registry+https://github.com/rust-lang/crates.io-index" 1098 + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 1099 + dependencies = [ 1100 + "windows-link", 1101 + "windows_aarch64_gnullvm", 1102 + "windows_aarch64_msvc", 1103 + "windows_i686_gnu", 1104 + "windows_i686_gnullvm", 1105 + "windows_i686_msvc", 1106 + "windows_x86_64_gnu", 1107 + "windows_x86_64_gnullvm", 1108 + "windows_x86_64_msvc", 1109 + ] 1110 + 1111 + [[package]] 1112 + name = "windows_aarch64_gnullvm" 1113 + version = "0.53.1" 1114 + source = "registry+https://github.com/rust-lang/crates.io-index" 1115 + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 1116 + 1117 + [[package]] 1118 + name = "windows_aarch64_msvc" 1119 + version = "0.53.1" 1120 + source = "registry+https://github.com/rust-lang/crates.io-index" 1121 + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 1122 + 1123 + [[package]] 1124 + name = "windows_i686_gnu" 1125 + version = "0.53.1" 1126 + source = "registry+https://github.com/rust-lang/crates.io-index" 1127 + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 1128 + 1129 + [[package]] 1130 + name = "windows_i686_gnullvm" 1131 + version = "0.53.1" 1132 + source = "registry+https://github.com/rust-lang/crates.io-index" 1133 + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 1134 + 1135 + [[package]] 1136 + name = "windows_i686_msvc" 1137 + version = "0.53.1" 1138 + source = "registry+https://github.com/rust-lang/crates.io-index" 1139 + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 1140 + 1141 + [[package]] 1142 + name = "windows_x86_64_gnu" 1143 + version = "0.53.1" 1144 + source = "registry+https://github.com/rust-lang/crates.io-index" 1145 + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 1146 + 1147 + [[package]] 1148 + name = "windows_x86_64_gnullvm" 1149 + version = "0.53.1" 1150 + source = "registry+https://github.com/rust-lang/crates.io-index" 1151 + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 1152 + 1153 + [[package]] 1154 + name = "windows_x86_64_msvc" 1155 + version = "0.53.1" 1156 + source = "registry+https://github.com/rust-lang/crates.io-index" 1157 + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 1158 + 1159 + [[package]] 1160 + name = "wit-bindgen" 1161 + version = "0.46.0" 1162 + source = "registry+https://github.com/rust-lang/crates.io-index" 1163 + checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" 1164 + 1165 + [[package]] 1166 + name = "worker-manager" 1167 + version = "0.1.0" 1168 + dependencies = [ 1169 + "dotenvy", 1170 + "futures-util", 1171 + "serde", 1172 + "serde_json", 1173 + "tokio", 1174 + "tokio-tungstenite", 1175 + "tracing", 1176 + "tracing-subscriber", 1177 + "url", 1178 + ] 1179 + 1180 + [[package]] 1181 + name = "writeable" 1182 + version = "0.6.1" 1183 + source = "registry+https://github.com/rust-lang/crates.io-index" 1184 + checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 1185 + 1186 + [[package]] 1187 + name = "yoke" 1188 + version = "0.8.0" 1189 + source = "registry+https://github.com/rust-lang/crates.io-index" 1190 + checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 1191 + dependencies = [ 1192 + "serde", 1193 + "stable_deref_trait", 1194 + "yoke-derive", 1195 + "zerofrom", 1196 + ] 1197 + 1198 + [[package]] 1199 + name = "yoke-derive" 1200 + version = "0.8.0" 1201 + source = "registry+https://github.com/rust-lang/crates.io-index" 1202 + checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 1203 + dependencies = [ 1204 + "proc-macro2", 1205 + "quote", 1206 + "syn", 1207 + "synstructure", 1208 + ] 1209 + 1210 + [[package]] 1211 + name = "zerocopy" 1212 + version = "0.8.27" 1213 + source = "registry+https://github.com/rust-lang/crates.io-index" 1214 + checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" 1215 + dependencies = [ 1216 + "zerocopy-derive", 1217 + ] 1218 + 1219 + [[package]] 1220 + name = "zerocopy-derive" 1221 + version = "0.8.27" 1222 + source = "registry+https://github.com/rust-lang/crates.io-index" 1223 + checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" 1224 + dependencies = [ 1225 + "proc-macro2", 1226 + "quote", 1227 + "syn", 1228 + ] 1229 + 1230 + [[package]] 1231 + name = "zerofrom" 1232 + version = "0.1.6" 1233 + source = "registry+https://github.com/rust-lang/crates.io-index" 1234 + checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 1235 + dependencies = [ 1236 + "zerofrom-derive", 1237 + ] 1238 + 1239 + [[package]] 1240 + name = "zerofrom-derive" 1241 + version = "0.1.6" 1242 + source = "registry+https://github.com/rust-lang/crates.io-index" 1243 + checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 1244 + dependencies = [ 1245 + "proc-macro2", 1246 + "quote", 1247 + "syn", 1248 + "synstructure", 1249 + ] 1250 + 1251 + [[package]] 1252 + name = "zerotrie" 1253 + version = "0.2.2" 1254 + source = "registry+https://github.com/rust-lang/crates.io-index" 1255 + checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 1256 + dependencies = [ 1257 + "displaydoc", 1258 + "yoke", 1259 + "zerofrom", 1260 + ] 1261 + 1262 + [[package]] 1263 + name = "zerovec" 1264 + version = "0.11.4" 1265 + source = "registry+https://github.com/rust-lang/crates.io-index" 1266 + checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 1267 + dependencies = [ 1268 + "yoke", 1269 + "zerofrom", 1270 + "zerovec-derive", 1271 + ] 1272 + 1273 + [[package]] 1274 + name = "zerovec-derive" 1275 + version = "0.11.1" 1276 + source = "registry+https://github.com/rust-lang/crates.io-index" 1277 + checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 1278 + dependencies = [ 1279 + "proc-macro2", 1280 + "quote", 1281 + "syn", 1282 + ]
+15
worker-plane/worker-manager/Cargo.toml
··· 1 + [package] 2 + name = "worker-manager" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + dotenvy = "0.15" 8 + futures-util = "0.3" 9 + serde = { version = "1.0", features = ["derive"] } 10 + serde_json = "1.0" 11 + tokio = { version = "1", features = ["full"] } 12 + tokio-tungstenite = { version = "0.21", features = ["native-tls"] } 13 + tracing = "0.1" 14 + tracing-subscriber = "0.3" 15 + url = "2.5"
+114
worker-plane/worker-manager/src/main.rs
··· 1 + use dotenvy::dotenv; 2 + use futures_util::{SinkExt, StreamExt}; 3 + use serde::{Deserialize, Serialize}; 4 + use std::env; 5 + use std::time::Duration; 6 + use tokio_tungstenite::{connect_async, tungstenite::Message}; 7 + use tracing::{error, info, instrument}; 8 + use tracing_subscriber::FmtSubscriber; 9 + use url::Url; 10 + 11 + #[derive(Debug, Serialize, Deserialize, Clone)] 12 + struct Job { 13 + id: String, 14 + payload: String, 15 + } 16 + 17 + #[derive(Debug, Serialize, Deserialize, Clone)] 18 + struct Bid { 19 + job_id: String, 20 + available_cpu_cores: u32, 21 + available_ram_mb: u32, 22 + available_storage_mb: u32, 23 + } 24 + 25 + #[derive(Debug, Serialize, Deserialize)] 26 + #[serde(tag = "type")] 27 + enum ServerMessage { 28 + PingForBids { job_id: String }, 29 + AssignJob { job: Job }, 30 + Acknowledge, 31 + } 32 + 33 + #[derive(Debug, Serialize, Deserialize)] 34 + #[serde(tag = "type")] 35 + enum WorkerMessage { 36 + BidResponse(Bid), 37 + } 38 + 39 + #[tokio::main] 40 + #[instrument] 41 + async fn main() { 42 + dotenv().ok(); 43 + FmtSubscriber::builder() 44 + .with_max_level(tracing::Level::INFO) 45 + .init(); 46 + 47 + let server_url = env::var("CONTROL_PLANE_URL") 48 + .unwrap_or_else(|_| "ws://127.0.0.1:8080".to_string()); 49 + 50 + info!("Attempting to connect to job board at {}", server_url); 51 + 52 + let url = Url::parse(&server_url).expect("Failed to parse server URL"); 53 + 54 + loop { 55 + match connect_async(&url).await { 56 + Ok((ws_stream, _response)) => { 57 + info!("Successfully connected to job board"); 58 + let (mut write, mut read) = ws_stream.split(); 59 + 60 + while let Some(msg) = read.next().await { 61 + match msg { 62 + Ok(Message::Text(text)) => { 63 + match serde_json::from_str::<ServerMessage>(&text) { 64 + Ok(server_msg) => match server_msg { 65 + ServerMessage::PingForBids { job_id } => { 66 + info!("Received bid request for job_id: {}", job_id); 67 + let bid = Bid { 68 + job_id: job_id.clone(), 69 + available_cpu_cores: 8, 70 + available_ram_mb: 16384, 71 + available_storage_mb: 51200, 72 + }; 73 + let response_msg = WorkerMessage::BidResponse(bid); 74 + let response_json = serde_json::to_string(&response_msg) 75 + .expect("Failed to serialize bid response"); 76 + 77 + if let Err(e) = write.send(Message::Text(response_json.clone())).await { 78 + error!("Failed to send bid response: {}", e); 79 + break; 80 + } 81 + info!("Sent bid for job_id: {}", job_id); 82 + } 83 + ServerMessage::AssignJob { job } => { 84 + info!("Won bid! Assigned job: {:?}", job); 85 + } 86 + ServerMessage::Acknowledge => { 87 + info!("Received Acknowledge from server."); 88 + } 89 + }, 90 + Err(e) => { 91 + error!("Failed to deserialize server message: {}. Raw text: {}", e, text); 92 + } 93 + } 94 + } 95 + Ok(Message::Close(_)) => { 96 + info!("Server closed the connection."); 97 + break; 98 + } 99 + Err(e) => { 100 + error!("Error receiving message: {}", e); 101 + break; 102 + } 103 + _ => {} 104 + } 105 + } 106 + } 107 + Err(e) => { 108 + error!("Failed to connect: {}", e); 109 + } 110 + } 111 + info!("Disconnected. Reconnecting in 5 seconds..."); 112 + tokio::time::sleep(Duration::from_secs(5)).await; 113 + } 114 + }