itsi-scheduler 0.1.5 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of itsi-scheduler might be problematic. Click here for more details.

Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +7 -0
  3. data/Cargo.lock +90 -22
  4. data/README.md +5 -0
  5. data/_index.md +7 -0
  6. data/ext/itsi_error/Cargo.toml +1 -0
  7. data/ext/itsi_error/src/lib.rs +106 -7
  8. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
  9. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
  10. data/ext/itsi_error/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
  11. data/ext/itsi_error/target/debug/build/rb-sys-49f554618693db24/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
  12. data/ext/itsi_error/target/debug/incremental/itsi_error-1mmt5sux7jb0i/s-h510z7m8v9-0bxu7yd.lock +0 -0
  13. data/ext/itsi_error/target/debug/incremental/itsi_error-2vn3jey74oiw0/s-h5113n0e7e-1v5qzs6.lock +0 -0
  14. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510ykifhe-0tbnep2.lock +0 -0
  15. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510yyocpj-0tz7ug7.lock +0 -0
  16. data/ext/itsi_error/target/debug/incremental/itsi_error-37uv9dicz7awp/s-h510z0xc8g-14ol18k.lock +0 -0
  17. data/ext/itsi_error/target/debug/incremental/itsi_error-3g5qf4y7d54uj/s-h5113n0e7d-1trk8on.lock +0 -0
  18. data/ext/itsi_error/target/debug/incremental/itsi_error-3lpfftm45d3e2/s-h510z7m8r3-1pxp20o.lock +0 -0
  19. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510ykifek-1uxasnk.lock +0 -0
  20. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510yyocki-11u37qm.lock +0 -0
  21. data/ext/itsi_error/target/debug/incremental/itsi_error-3o4qownhl3d7n/s-h510z0xc93-0pmy0zm.lock +0 -0
  22. data/ext/itsi_rb_helpers/Cargo.toml +1 -0
  23. data/ext/itsi_rb_helpers/src/heap_value.rs +18 -0
  24. data/ext/itsi_rb_helpers/src/lib.rs +59 -9
  25. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/common.rs +355 -0
  26. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/dynamic.rs +276 -0
  27. data/ext/itsi_rb_helpers/target/debug/build/clang-sys-da71b0344e568175/out/macros.rs +49 -0
  28. data/ext/itsi_rb_helpers/target/debug/build/rb-sys-eb9ed4ff3a60f995/out/bindings-0.9.110-mri-arm64-darwin23-3.4.2.rs +8865 -0
  29. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-040pxg6yhb3g3/s-h5113n7a1b-03bwlt4.lock +0 -0
  30. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h51113xnh3-1eik1ip.lock +0 -0
  31. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-131g1u4dzkt1a/s-h5111704jj-0g4rj8x.lock +0 -0
  32. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-1q2d3drtxrzs5/s-h5113n79yl-0bxcqc5.lock +0 -0
  33. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h51113xoox-10de2hp.lock +0 -0
  34. data/ext/itsi_rb_helpers/target/debug/incremental/itsi_rb_helpers-374a9h7ovycj0/s-h5111704w7-0vdq7gq.lock +0 -0
  35. data/ext/itsi_scheduler/src/itsi_scheduler.rs +1 -1
  36. data/ext/itsi_server/Cargo.lock +2956 -0
  37. data/ext/itsi_server/Cargo.toml +72 -28
  38. data/ext/itsi_server/src/default_responses/mod.rs +11 -0
  39. data/ext/itsi_server/src/env.rs +43 -0
  40. data/ext/itsi_server/src/lib.rs +113 -75
  41. data/ext/itsi_server/src/prelude.rs +2 -0
  42. data/ext/itsi_server/src/{body_proxy → ruby_types/itsi_body_proxy}/big_bytes.rs +10 -5
  43. data/ext/itsi_server/src/{body_proxy/itsi_body_proxy.rs → ruby_types/itsi_body_proxy/mod.rs} +29 -8
  44. data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +344 -0
  45. data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +264 -0
  46. data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +345 -0
  47. data/ext/itsi_server/src/{response/itsi_response.rs → ruby_types/itsi_http_response.rs} +84 -40
  48. data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +225 -0
  49. data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +375 -0
  50. data/ext/itsi_server/src/ruby_types/itsi_server.rs +83 -0
  51. data/ext/itsi_server/src/ruby_types/mod.rs +48 -0
  52. data/ext/itsi_server/src/server/{bind.rs → binds/bind.rs} +56 -24
  53. data/ext/itsi_server/src/server/{listener.rs → binds/listener.rs} +218 -113
  54. data/ext/itsi_server/src/server/binds/mod.rs +4 -0
  55. data/ext/itsi_server/src/server/{tls → binds/tls}/locked_dir_cache.rs +55 -17
  56. data/ext/itsi_server/src/server/{tls.rs → binds/tls.rs} +109 -28
  57. data/ext/itsi_server/src/server/byte_frame.rs +32 -0
  58. data/ext/itsi_server/src/server/http_message_types.rs +97 -0
  59. data/ext/itsi_server/src/server/io_stream.rs +2 -1
  60. data/ext/itsi_server/src/server/lifecycle_event.rs +3 -0
  61. data/ext/itsi_server/src/server/middleware_stack/middleware.rs +165 -0
  62. data/ext/itsi_server/src/server/middleware_stack/middlewares/allow_list.rs +56 -0
  63. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_api_key.rs +87 -0
  64. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +86 -0
  65. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_jwt.rs +285 -0
  66. data/ext/itsi_server/src/server/middleware_stack/middlewares/cache_control.rs +142 -0
  67. data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +289 -0
  68. data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +292 -0
  69. data/ext/itsi_server/src/server/middleware_stack/middlewares/deny_list.rs +55 -0
  70. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +190 -0
  71. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +157 -0
  72. data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +195 -0
  73. data/ext/itsi_server/src/server/middleware_stack/middlewares/header_interpretation.rs +82 -0
  74. data/ext/itsi_server/src/server/middleware_stack/middlewares/intrusion_protection.rs +201 -0
  75. data/ext/itsi_server/src/server/middleware_stack/middlewares/log_requests.rs +82 -0
  76. data/ext/itsi_server/src/server/middleware_stack/middlewares/max_body.rs +47 -0
  77. data/ext/itsi_server/src/server/middleware_stack/middlewares/mod.rs +87 -0
  78. data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +414 -0
  79. data/ext/itsi_server/src/server/middleware_stack/middlewares/rate_limit.rs +131 -0
  80. data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +76 -0
  81. data/ext/itsi_server/src/server/middleware_stack/middlewares/request_headers.rs +44 -0
  82. data/ext/itsi_server/src/server/middleware_stack/middlewares/response_headers.rs +36 -0
  83. data/ext/itsi_server/src/server/middleware_stack/middlewares/ruby_app.rs +126 -0
  84. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +180 -0
  85. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +55 -0
  86. data/ext/itsi_server/src/server/middleware_stack/middlewares/string_rewrite.rs +163 -0
  87. data/ext/itsi_server/src/server/middleware_stack/middlewares/token_source.rs +12 -0
  88. data/ext/itsi_server/src/server/middleware_stack/mod.rs +347 -0
  89. data/ext/itsi_server/src/server/mod.rs +6 -5
  90. data/ext/itsi_server/src/server/process_worker.rs +65 -14
  91. data/ext/itsi_server/src/server/request_job.rs +11 -0
  92. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +137 -49
  93. data/ext/itsi_server/src/server/serve_strategy/mod.rs +9 -6
  94. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +338 -164
  95. data/ext/itsi_server/src/server/signal.rs +32 -26
  96. data/ext/itsi_server/src/server/size_limited_incoming.rs +101 -0
  97. data/ext/itsi_server/src/server/thread_worker.rs +214 -107
  98. data/ext/itsi_server/src/services/cache_store.rs +74 -0
  99. data/ext/itsi_server/src/services/itsi_http_service.rs +239 -0
  100. data/ext/itsi_server/src/services/mime_types.rs +1416 -0
  101. data/ext/itsi_server/src/services/mod.rs +6 -0
  102. data/ext/itsi_server/src/services/password_hasher.rs +83 -0
  103. data/ext/itsi_server/src/services/rate_limiter.rs +569 -0
  104. data/ext/itsi_server/src/services/static_file_server.rs +1324 -0
  105. data/ext/itsi_tracing/Cargo.toml +1 -0
  106. data/ext/itsi_tracing/src/lib.rs +312 -34
  107. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0994n8rpvvt9m/s-h510hfz1f6-1kbycmq.lock +0 -0
  108. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-0bob7bf4yq34i/s-h5113125h5-0lh4rag.lock +0 -0
  109. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2fcodulrxbbxo/s-h510h2infk-0hp5kjw.lock +0 -0
  110. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2iak63r1woi1l/s-h510h2in4q-0kxfzw1.lock +0 -0
  111. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2kk4qj9gn5dg2/s-h5113124kv-0enwon2.lock +0 -0
  112. data/ext/itsi_tracing/target/debug/incremental/itsi_tracing-2mwo0yas7dtw4/s-h510hfz1ha-1udgpei.lock +0 -0
  113. data/lib/itsi/scheduler/version.rb +1 -1
  114. data/lib/itsi/scheduler.rb +2 -2
  115. metadata +93 -21
  116. data/ext/itsi_error/src/from.rs +0 -71
  117. data/ext/itsi_server/extconf.rb +0 -6
  118. data/ext/itsi_server/src/body_proxy/mod.rs +0 -2
  119. data/ext/itsi_server/src/request/itsi_request.rs +0 -277
  120. data/ext/itsi_server/src/request/mod.rs +0 -1
  121. data/ext/itsi_server/src/response/mod.rs +0 -1
  122. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +0 -13
  123. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +0 -5
  124. data/ext/itsi_server/src/server/itsi_server.rs +0 -244
  125. /data/ext/itsi_server/src/server/{bind_protocol.rs → binds/bind_protocol.rs} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75599726844e215e80b59ae8a95549e23024e4e070d768ca3f085a8fbb2591a9
4
- data.tar.gz: c84726c45c08562ad4b8ebd4a6c9eb4ebd1f50521afca027c1e6a69d8b2e4eb5
3
+ metadata.gz: f5d23031b21c54857ec2203e90f940f00c63612fc7737a40a59bd42e37b857be
4
+ data.tar.gz: 8f642a6af082a49a7cd1313f8308f3f10f5c51d4ea8546449fb4e128537239a2
5
5
  SHA512:
6
- metadata.gz: 0a944a2d952111520bf473853ec7b363ed16a53ddf4b0ae252c0fab36d70b4dedb561d55feab827d34c21b0d468cb6b0e978dba22584bc873092cc3d9515a7af
7
- data.tar.gz: 5e27924c41ebc8f6b84f8d1e507ff04d3d86d8326c2da21ca2cbe4b1fc703b7bd0026813cf8353775e126d562e25cae93ed8c03f714b07eb48c4d3e15b91fc94
6
+ metadata.gz: edc11ffe45421ac259ff7829902bdfd335302420111009d1cb844b5a0fb3b9b281ced53965bbb2fcc014713ed0c0c522bf1624932115aa8a21cb313fadc6be5c
7
+ data.tar.gz: 6205fead3872c30b7e19a92fdf14fff9fbeb28310287a4863e1a6522a4ee5f145b819871707aac7899caa66d3fbf374d9dbc448f7326ca9890d80631ccc4e0a9
data/CODE_OF_CONDUCT.md CHANGED
@@ -1,3 +1,10 @@
1
+ ---
2
+ title: Code of Conduct
3
+ type: docs
4
+ next: docs/
5
+ prev: docs/folder/
6
+ ---
7
+
1
8
  # Contributor Covenant Code of Conduct
2
9
 
3
10
  ## Our Pledge
data/Cargo.lock CHANGED
@@ -11,6 +11,12 @@ dependencies = [
11
11
  "memchr",
12
12
  ]
13
13
 
14
+ [[package]]
15
+ name = "anyhow"
16
+ version = "1.0.97"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
19
+
14
20
  [[package]]
15
21
  name = "atty"
16
22
  version = "0.2.14"
@@ -68,9 +74,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
68
74
 
69
75
  [[package]]
70
76
  name = "cc"
71
- version = "1.2.16"
77
+ version = "1.2.15"
72
78
  source = "registry+https://github.com/rust-lang/crates.io-index"
73
- checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
79
+ checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af"
74
80
  dependencies = [
75
81
  "shlex",
76
82
  ]
@@ -107,6 +113,21 @@ dependencies = [
107
113
  "libloading",
108
114
  ]
109
115
 
116
+ [[package]]
117
+ name = "crossbeam-channel"
118
+ version = "0.5.14"
119
+ source = "registry+https://github.com/rust-lang/crates.io-index"
120
+ checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
121
+ dependencies = [
122
+ "crossbeam-utils",
123
+ ]
124
+
125
+ [[package]]
126
+ name = "crossbeam-utils"
127
+ version = "0.8.21"
128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
129
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
130
+
110
131
  [[package]]
111
132
  name = "deranged"
112
133
  version = "0.3.11"
@@ -139,9 +160,9 @@ dependencies = [
139
160
 
140
161
  [[package]]
141
162
  name = "either"
142
- version = "1.14.0"
163
+ version = "1.15.0"
143
164
  source = "registry+https://github.com/rust-lang/crates.io-index"
144
- checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d"
165
+ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
145
166
 
146
167
  [[package]]
147
168
  name = "getrandom"
@@ -186,9 +207,9 @@ dependencies = [
186
207
 
187
208
  [[package]]
188
209
  name = "itoa"
189
- version = "1.0.15"
210
+ version = "1.0.14"
190
211
  source = "registry+https://github.com/rust-lang/crates.io-index"
191
- checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
212
+ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
192
213
 
193
214
  [[package]]
194
215
  name = "itsi-scheduler"
@@ -212,11 +233,12 @@ dependencies = [
212
233
  name = "itsi_error"
213
234
  version = "0.1.0"
214
235
  dependencies = [
236
+ "anyhow",
215
237
  "httparse",
216
238
  "magnus",
217
239
  "nix",
218
240
  "rcgen",
219
- "thiserror",
241
+ "thiserror 2.0.12",
220
242
  ]
221
243
 
222
244
  [[package]]
@@ -236,6 +258,7 @@ dependencies = [
236
258
  "magnus",
237
259
  "nix",
238
260
  "rb-sys",
261
+ "serde",
239
262
  ]
240
263
 
241
264
  [[package]]
@@ -244,6 +267,7 @@ version = "0.1.0"
244
267
  dependencies = [
245
268
  "atty",
246
269
  "tracing",
270
+ "tracing-appender",
247
271
  "tracing-attributes",
248
272
  "tracing-subscriber",
249
273
  ]
@@ -507,9 +531,9 @@ dependencies = [
507
531
 
508
532
  [[package]]
509
533
  name = "redox_syscall"
510
- version = "0.5.10"
534
+ version = "0.5.9"
511
535
  source = "registry+https://github.com/rust-lang/crates.io-index"
512
- checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
536
+ checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f"
513
537
  dependencies = [
514
538
  "bitflags",
515
539
  ]
@@ -560,9 +584,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
560
584
 
561
585
  [[package]]
562
586
  name = "ring"
563
- version = "0.17.11"
587
+ version = "0.17.14"
564
588
  source = "registry+https://github.com/rust-lang/crates.io-index"
565
- checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73"
589
+ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
566
590
  dependencies = [
567
591
  "cc",
568
592
  "cfg-if",
@@ -586,9 +610,9 @@ checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
586
610
 
587
611
  [[package]]
588
612
  name = "ryu"
589
- version = "1.0.20"
613
+ version = "1.0.19"
590
614
  source = "registry+https://github.com/rust-lang/crates.io-index"
591
- checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
615
+ checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
592
616
 
593
617
  [[package]]
594
618
  name = "scopeguard"
@@ -604,18 +628,18 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
604
628
 
605
629
  [[package]]
606
630
  name = "serde"
607
- version = "1.0.218"
631
+ version = "1.0.219"
608
632
  source = "registry+https://github.com/rust-lang/crates.io-index"
609
- checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
633
+ checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
610
634
  dependencies = [
611
635
  "serde_derive",
612
636
  ]
613
637
 
614
638
  [[package]]
615
639
  name = "serde_derive"
616
- version = "1.0.218"
640
+ version = "1.0.219"
617
641
  source = "registry+https://github.com/rust-lang/crates.io-index"
618
- checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
642
+ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
619
643
  dependencies = [
620
644
  "proc-macro2",
621
645
  "quote",
@@ -685,18 +709,38 @@ dependencies = [
685
709
 
686
710
  [[package]]
687
711
  name = "thiserror"
688
- version = "2.0.11"
712
+ version = "1.0.69"
689
713
  source = "registry+https://github.com/rust-lang/crates.io-index"
690
- checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
714
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
691
715
  dependencies = [
692
- "thiserror-impl",
716
+ "thiserror-impl 1.0.69",
717
+ ]
718
+
719
+ [[package]]
720
+ name = "thiserror"
721
+ version = "2.0.12"
722
+ source = "registry+https://github.com/rust-lang/crates.io-index"
723
+ checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
724
+ dependencies = [
725
+ "thiserror-impl 2.0.12",
693
726
  ]
694
727
 
695
728
  [[package]]
696
729
  name = "thiserror-impl"
697
- version = "2.0.11"
730
+ version = "1.0.69"
698
731
  source = "registry+https://github.com/rust-lang/crates.io-index"
699
- checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
732
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
733
+ dependencies = [
734
+ "proc-macro2",
735
+ "quote",
736
+ "syn 2.0.98",
737
+ ]
738
+
739
+ [[package]]
740
+ name = "thiserror-impl"
741
+ version = "2.0.12"
742
+ source = "registry+https://github.com/rust-lang/crates.io-index"
743
+ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
700
744
  dependencies = [
701
745
  "proc-macro2",
702
746
  "quote",
@@ -720,10 +764,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
720
764
  checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
721
765
  dependencies = [
722
766
  "deranged",
767
+ "itoa",
723
768
  "num-conv",
724
769
  "powerfmt",
725
770
  "serde",
726
771
  "time-core",
772
+ "time-macros",
727
773
  ]
728
774
 
729
775
  [[package]]
@@ -732,6 +778,16 @@ version = "0.1.2"
732
778
  source = "registry+https://github.com/rust-lang/crates.io-index"
733
779
  checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
734
780
 
781
+ [[package]]
782
+ name = "time-macros"
783
+ version = "0.2.19"
784
+ source = "registry+https://github.com/rust-lang/crates.io-index"
785
+ checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de"
786
+ dependencies = [
787
+ "num-conv",
788
+ "time-core",
789
+ ]
790
+
735
791
  [[package]]
736
792
  name = "tracing"
737
793
  version = "0.1.41"
@@ -743,6 +799,18 @@ dependencies = [
743
799
  "tracing-core",
744
800
  ]
745
801
 
802
+ [[package]]
803
+ name = "tracing-appender"
804
+ version = "0.2.3"
805
+ source = "registry+https://github.com/rust-lang/crates.io-index"
806
+ checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf"
807
+ dependencies = [
808
+ "crossbeam-channel",
809
+ "thiserror 1.0.69",
810
+ "time",
811
+ "tracing-subscriber",
812
+ ]
813
+
746
814
  [[package]]
747
815
  name = "tracing-attributes"
748
816
  version = "0.1.28"
data/README.md CHANGED
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: Itsi Scheduler
3
+ type: docs
4
+ ---
5
+
1
6
  # ItsiScheduler
2
7
 
3
8
  TODO: Delete this and the text below, and describe your gem
data/_index.md ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: "Itsi Scheduler"
3
+ type: docs
4
+ hide: true
5
+ ---
6
+
7
+ ## Foo
@@ -9,3 +9,4 @@ magnus = { version = "0.7.1" }
9
9
  rcgen = "0.13.2"
10
10
  nix = "0.29.0"
11
11
  httparse = "1.10.1"
12
+ anyhow = "1.0.97"
@@ -1,24 +1,123 @@
1
- pub mod from;
1
+ pub use anyhow::Context;
2
+ use magnus::Error as MagnusError;
3
+ use magnus::{
4
+ error::ErrorType,
5
+ exception::{self, arg_error, standard_error},
6
+ };
2
7
  use thiserror::Error;
3
8
 
9
+ pub static CLIENT_CONNECTION_CLOSED: &str = "Client disconnected";
4
10
  pub type Result<T> = std::result::Result<T, ItsiError>;
5
11
 
6
12
  #[derive(Error, Debug)]
7
13
  pub enum ItsiError {
8
- #[error("Invalid input {0}")]
14
+ #[error("Invalid input: {0}")]
9
15
  InvalidInput(String),
10
- #[error("Internal server error {0}")]
16
+
17
+ #[error("Internal server error: {0}")]
11
18
  InternalServerError(String),
12
- #[error("Unsupported protocol {0}")]
19
+
20
+ #[error("Unsupported protocol: {0}")]
13
21
  UnsupportedProtocol(String),
22
+
14
23
  #[error("Argument error: {0}")]
15
24
  ArgumentError(String),
25
+
16
26
  #[error("Client Connection Closed")]
17
27
  ClientConnectionClosed,
18
- #[error("Jump")]
28
+
29
+ #[error("Internal Error")]
30
+ InternalError(String),
31
+
32
+ #[error(transparent)]
33
+ Io(#[from] std::io::Error),
34
+
35
+ #[error(transparent)]
36
+ Rcgen(#[from] rcgen::Error),
37
+
38
+ #[error(transparent)]
39
+ HttpParse(#[from] httparse::Error),
40
+
41
+ #[error(transparent)]
42
+ NixErrno(#[from] nix::errno::Errno),
43
+
44
+ #[error(transparent)]
45
+ Nul(#[from] std::ffi::NulError),
46
+
47
+ #[error("Jump: {0}")]
19
48
  Jump(String),
49
+
20
50
  #[error("Break")]
21
- Break(),
51
+ Break,
52
+
22
53
  #[error("Pass")]
23
- Pass(),
54
+ Pass,
55
+
56
+ #[error(transparent)]
57
+ Anyhow(#[from] anyhow::Error),
24
58
  }
59
+
60
+ impl From<magnus::Error> for ItsiError {
61
+ fn from(err: magnus::Error) -> Self {
62
+ match err.error_type() {
63
+ ErrorType::Jump(tag) => ItsiError::Jump(tag.to_string()),
64
+ ErrorType::Error(_exception_class, cow) => ItsiError::ArgumentError(cow.to_string()),
65
+ ErrorType::Exception(exception) => ItsiError::ArgumentError(exception.to_string()),
66
+ }
67
+ }
68
+ }
69
+
70
+ pub trait IntoMagnusError {
71
+ fn into_magnus_error(self) -> MagnusError;
72
+ }
73
+
74
+ impl<T: std::error::Error> IntoMagnusError for T {
75
+ fn into_magnus_error(self) -> MagnusError {
76
+ MagnusError::new(standard_error(), self.to_string())
77
+ }
78
+ }
79
+
80
+ impl From<&str> for ItsiError {
81
+ fn from(s: &str) -> Self {
82
+ ItsiError::InternalError(s.to_owned())
83
+ }
84
+ }
85
+
86
+ impl From<String> for ItsiError {
87
+ fn from(s: String) -> Self {
88
+ ItsiError::InternalError(s)
89
+ }
90
+ }
91
+
92
+ impl From<ItsiError> for magnus::Error {
93
+ fn from(err: ItsiError) -> Self {
94
+ match err {
95
+ ItsiError::InvalidInput(msg) => magnus::Error::new(arg_error(), msg),
96
+ ItsiError::InternalServerError(msg) => magnus::Error::new(standard_error(), msg),
97
+ ItsiError::InternalError(msg) => magnus::Error::new(standard_error(), msg),
98
+ ItsiError::UnsupportedProtocol(msg) => magnus::Error::new(arg_error(), msg),
99
+ ItsiError::ArgumentError(msg) => magnus::Error::new(arg_error(), msg),
100
+ ItsiError::Jump(msg) => magnus::Error::new(exception::local_jump_error(), msg),
101
+ ItsiError::ClientConnectionClosed => {
102
+ magnus::Error::new(exception::eof_error(), CLIENT_CONNECTION_CLOSED)
103
+ }
104
+ ItsiError::Break => magnus::Error::new(exception::interrupt(), "Break"),
105
+ ItsiError::Pass => magnus::Error::new(exception::interrupt(), "Pass"),
106
+ ItsiError::Io(err) => err.into_magnus_error(),
107
+ ItsiError::Rcgen(err) => err.into_magnus_error(),
108
+ ItsiError::HttpParse(err) => err.into_magnus_error(),
109
+ ItsiError::NixErrno(err) => err.into_magnus_error(),
110
+ ItsiError::Nul(err) => err.into_magnus_error(),
111
+ ItsiError::Anyhow(err) => err.into_magnus_error(),
112
+ }
113
+ }
114
+ }
115
+
116
+ impl ItsiError {
117
+ pub fn new(error: impl Send + Sync + 'static + std::fmt::Display) -> Self {
118
+ ItsiError::InternalError(format!("{}", error))
119
+ }
120
+ }
121
+
122
+ unsafe impl Send for ItsiError {}
123
+ unsafe impl Sync for ItsiError {}