itsi-scheduler 0.1.0 → 0.1.3
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.
- checksums.yaml +4 -4
- data/Cargo.lock +219 -23
- data/Rakefile +7 -1
- data/ext/itsi_error/Cargo.toml +2 -0
- data/ext/itsi_error/src/from.rs +70 -0
- data/ext/itsi_error/src/lib.rs +10 -37
- data/ext/itsi_instrument_entry/Cargo.toml +15 -0
- data/ext/itsi_instrument_entry/src/lib.rs +31 -0
- data/ext/itsi_rb_helpers/Cargo.toml +2 -0
- data/ext/itsi_rb_helpers/src/heap_value.rs +121 -0
- data/ext/itsi_rb_helpers/src/lib.rs +90 -10
- data/ext/itsi_scheduler/Cargo.toml +9 -1
- data/ext/itsi_scheduler/extconf.rb +1 -1
- data/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +56 -0
- data/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +44 -0
- data/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +44 -0
- data/ext/itsi_scheduler/src/itsi_scheduler.rs +308 -0
- data/ext/itsi_scheduler/src/lib.rs +31 -10
- data/ext/itsi_server/Cargo.toml +41 -0
- data/ext/itsi_server/extconf.rb +6 -0
- data/ext/itsi_server/src/body_proxy/big_bytes.rs +104 -0
- data/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs +122 -0
- data/ext/itsi_server/src/body_proxy/mod.rs +2 -0
- data/ext/itsi_server/src/lib.rs +103 -0
- data/ext/itsi_server/src/request/itsi_request.rs +277 -0
- data/ext/itsi_server/src/request/mod.rs +1 -0
- data/ext/itsi_server/src/response/itsi_response.rs +347 -0
- data/ext/itsi_server/src/response/mod.rs +1 -0
- data/ext/itsi_server/src/server/bind.rs +168 -0
- data/ext/itsi_server/src/server/bind_protocol.rs +37 -0
- data/ext/itsi_server/src/server/io_stream.rs +104 -0
- data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +13 -0
- data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +5 -0
- data/ext/itsi_server/src/server/itsi_server.rs +244 -0
- data/ext/itsi_server/src/server/lifecycle_event.rs +9 -0
- data/ext/itsi_server/src/server/listener.rs +275 -0
- data/ext/itsi_server/src/server/mod.rs +11 -0
- data/ext/itsi_server/src/server/process_worker.rs +196 -0
- data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +254 -0
- data/ext/itsi_server/src/server/serve_strategy/mod.rs +27 -0
- data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +241 -0
- data/ext/itsi_server/src/server/signal.rs +70 -0
- data/ext/itsi_server/src/server/thread_worker.rs +368 -0
- data/ext/itsi_server/src/server/tls.rs +152 -0
- data/ext/itsi_tracing/Cargo.toml +4 -0
- data/ext/itsi_tracing/src/lib.rs +36 -6
- data/lib/itsi/scheduler/version.rb +1 -1
- data/lib/itsi/scheduler.rb +137 -1
- metadata +38 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9fb48a307a53aeed5d6ae3d5bcbe6bd9c06e9420645cd034813c27d7468c564
|
4
|
+
data.tar.gz: 5d7d60200f47f3eeff3be39bd94e84829fde9d4ae0b01f9ea6fc6cc6229312de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 490e90d87ca37b16e2a697e1f32f23e288f44c76ee13a9af8cd09048ad730f72fec07dec5ded32c955cbcf863e68cc2eb36a7cea023bd80bcc41871397eb4530
|
7
|
+
data.tar.gz: dfda712ee4e8d385c7c7a16e7de24c404c14a817d2c4b92a784ac89d6bfad35ba7e4b74ff9b8f379e331b7107f8436c12c233b02b0313ae61546f9d4997e7756
|
data/Cargo.lock
CHANGED
@@ -11,6 +11,23 @@ dependencies = [
|
|
11
11
|
"memchr",
|
12
12
|
]
|
13
13
|
|
14
|
+
[[package]]
|
15
|
+
name = "atty"
|
16
|
+
version = "0.2.14"
|
17
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
18
|
+
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
19
|
+
dependencies = [
|
20
|
+
"hermit-abi",
|
21
|
+
"libc",
|
22
|
+
"winapi",
|
23
|
+
]
|
24
|
+
|
25
|
+
[[package]]
|
26
|
+
name = "autocfg"
|
27
|
+
version = "1.4.0"
|
28
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
29
|
+
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
|
30
|
+
|
14
31
|
[[package]]
|
15
32
|
name = "base64"
|
16
33
|
version = "0.22.1"
|
@@ -34,7 +51,7 @@ dependencies = [
|
|
34
51
|
"regex",
|
35
52
|
"rustc-hash",
|
36
53
|
"shlex",
|
37
|
-
"syn",
|
54
|
+
"syn 2.0.98",
|
38
55
|
]
|
39
56
|
|
40
57
|
[[package]]
|
@@ -45,9 +62,9 @@ checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
|
|
45
62
|
|
46
63
|
[[package]]
|
47
64
|
name = "bytes"
|
48
|
-
version = "1.10.
|
65
|
+
version = "1.10.1"
|
49
66
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
50
|
-
checksum = "
|
67
|
+
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
|
51
68
|
|
52
69
|
[[package]]
|
53
70
|
name = "cc"
|
@@ -73,6 +90,12 @@ version = "1.0.0"
|
|
73
90
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
74
91
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
75
92
|
|
93
|
+
[[package]]
|
94
|
+
name = "cfg_aliases"
|
95
|
+
version = "0.2.1"
|
96
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
97
|
+
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
98
|
+
|
76
99
|
[[package]]
|
77
100
|
name = "clang-sys"
|
78
101
|
version = "1.8.1"
|
@@ -93,6 +116,27 @@ dependencies = [
|
|
93
116
|
"powerfmt",
|
94
117
|
]
|
95
118
|
|
119
|
+
[[package]]
|
120
|
+
name = "derive_more"
|
121
|
+
version = "2.0.1"
|
122
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
123
|
+
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
|
124
|
+
dependencies = [
|
125
|
+
"derive_more-impl",
|
126
|
+
]
|
127
|
+
|
128
|
+
[[package]]
|
129
|
+
name = "derive_more-impl"
|
130
|
+
version = "2.0.1"
|
131
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
132
|
+
checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
|
133
|
+
dependencies = [
|
134
|
+
"proc-macro2",
|
135
|
+
"quote",
|
136
|
+
"syn 2.0.98",
|
137
|
+
"unicode-xid",
|
138
|
+
]
|
139
|
+
|
96
140
|
[[package]]
|
97
141
|
name = "either"
|
98
142
|
version = "1.14.0"
|
@@ -116,6 +160,21 @@ version = "0.3.2"
|
|
116
160
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
117
161
|
checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
|
118
162
|
|
163
|
+
[[package]]
|
164
|
+
name = "hermit-abi"
|
165
|
+
version = "0.1.19"
|
166
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
167
|
+
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
168
|
+
dependencies = [
|
169
|
+
"libc",
|
170
|
+
]
|
171
|
+
|
172
|
+
[[package]]
|
173
|
+
name = "httparse"
|
174
|
+
version = "1.10.1"
|
175
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
176
|
+
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
|
177
|
+
|
119
178
|
[[package]]
|
120
179
|
name = "itertools"
|
121
180
|
version = "0.12.1"
|
@@ -125,30 +184,57 @@ dependencies = [
|
|
125
184
|
"either",
|
126
185
|
]
|
127
186
|
|
187
|
+
[[package]]
|
188
|
+
name = "itoa"
|
189
|
+
version = "1.0.15"
|
190
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
191
|
+
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
|
192
|
+
|
128
193
|
[[package]]
|
129
194
|
name = "itsi-scheduler"
|
130
195
|
version = "0.1.0"
|
131
196
|
dependencies = [
|
197
|
+
"bytes",
|
198
|
+
"derive_more",
|
132
199
|
"itsi_error",
|
200
|
+
"itsi_instrument_entry",
|
133
201
|
"itsi_rb_helpers",
|
134
202
|
"itsi_tracing",
|
135
|
-
"magnus
|
203
|
+
"magnus",
|
204
|
+
"mio",
|
205
|
+
"nix",
|
206
|
+
"parking_lot",
|
207
|
+
"rb-sys",
|
208
|
+
"tracing",
|
136
209
|
]
|
137
210
|
|
138
211
|
[[package]]
|
139
212
|
name = "itsi_error"
|
140
213
|
version = "0.1.0"
|
141
214
|
dependencies = [
|
142
|
-
"
|
215
|
+
"httparse",
|
216
|
+
"magnus",
|
217
|
+
"nix",
|
143
218
|
"rcgen",
|
144
219
|
"thiserror",
|
145
220
|
]
|
146
221
|
|
222
|
+
[[package]]
|
223
|
+
name = "itsi_instrument_entry"
|
224
|
+
version = "0.1.0"
|
225
|
+
dependencies = [
|
226
|
+
"proc-macro2",
|
227
|
+
"quote",
|
228
|
+
"syn 1.0.109",
|
229
|
+
]
|
230
|
+
|
147
231
|
[[package]]
|
148
232
|
name = "itsi_rb_helpers"
|
149
233
|
version = "0.1.0"
|
150
234
|
dependencies = [
|
151
|
-
"
|
235
|
+
"cfg-if",
|
236
|
+
"magnus",
|
237
|
+
"nix",
|
152
238
|
"rb-sys",
|
153
239
|
]
|
154
240
|
|
@@ -156,7 +242,9 @@ dependencies = [
|
|
156
242
|
name = "itsi_tracing"
|
157
243
|
version = "0.1.0"
|
158
244
|
dependencies = [
|
245
|
+
"atty",
|
159
246
|
"tracing",
|
247
|
+
"tracing-attributes",
|
160
248
|
"tracing-subscriber",
|
161
249
|
]
|
162
250
|
|
@@ -189,22 +277,20 @@ dependencies = [
|
|
189
277
|
]
|
190
278
|
|
191
279
|
[[package]]
|
192
|
-
name = "
|
193
|
-
version = "0.4.
|
280
|
+
name = "lock_api"
|
281
|
+
version = "0.4.12"
|
194
282
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
195
|
-
checksum = "
|
283
|
+
checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
|
284
|
+
dependencies = [
|
285
|
+
"autocfg",
|
286
|
+
"scopeguard",
|
287
|
+
]
|
196
288
|
|
197
289
|
[[package]]
|
198
|
-
name = "
|
199
|
-
version = "0.
|
290
|
+
name = "log"
|
291
|
+
version = "0.4.26"
|
200
292
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
201
|
-
checksum = "
|
202
|
-
dependencies = [
|
203
|
-
"magnus-macros",
|
204
|
-
"rb-sys",
|
205
|
-
"rb-sys-env",
|
206
|
-
"seq-macro",
|
207
|
-
]
|
293
|
+
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
|
208
294
|
|
209
295
|
[[package]]
|
210
296
|
name = "magnus"
|
@@ -227,7 +313,7 @@ checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3"
|
|
227
313
|
dependencies = [
|
228
314
|
"proc-macro2",
|
229
315
|
"quote",
|
230
|
-
"syn",
|
316
|
+
"syn 2.0.98",
|
231
317
|
]
|
232
318
|
|
233
319
|
[[package]]
|
@@ -251,6 +337,30 @@ version = "0.2.1"
|
|
251
337
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
252
338
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
253
339
|
|
340
|
+
[[package]]
|
341
|
+
name = "mio"
|
342
|
+
version = "1.0.3"
|
343
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
344
|
+
checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
|
345
|
+
dependencies = [
|
346
|
+
"libc",
|
347
|
+
"log",
|
348
|
+
"wasi",
|
349
|
+
"windows-sys",
|
350
|
+
]
|
351
|
+
|
352
|
+
[[package]]
|
353
|
+
name = "nix"
|
354
|
+
version = "0.29.0"
|
355
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
356
|
+
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
|
357
|
+
dependencies = [
|
358
|
+
"bitflags",
|
359
|
+
"cfg-if",
|
360
|
+
"cfg_aliases",
|
361
|
+
"libc",
|
362
|
+
]
|
363
|
+
|
254
364
|
[[package]]
|
255
365
|
name = "nom"
|
256
366
|
version = "7.1.3"
|
@@ -289,6 +399,29 @@ version = "0.1.1"
|
|
289
399
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
290
400
|
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
291
401
|
|
402
|
+
[[package]]
|
403
|
+
name = "parking_lot"
|
404
|
+
version = "0.12.3"
|
405
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
406
|
+
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
|
407
|
+
dependencies = [
|
408
|
+
"lock_api",
|
409
|
+
"parking_lot_core",
|
410
|
+
]
|
411
|
+
|
412
|
+
[[package]]
|
413
|
+
name = "parking_lot_core"
|
414
|
+
version = "0.9.10"
|
415
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
416
|
+
checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
|
417
|
+
dependencies = [
|
418
|
+
"cfg-if",
|
419
|
+
"libc",
|
420
|
+
"redox_syscall",
|
421
|
+
"smallvec",
|
422
|
+
"windows-targets",
|
423
|
+
]
|
424
|
+
|
292
425
|
[[package]]
|
293
426
|
name = "pem"
|
294
427
|
version = "3.0.5"
|
@@ -350,7 +483,7 @@ dependencies = [
|
|
350
483
|
"quote",
|
351
484
|
"regex",
|
352
485
|
"shell-words",
|
353
|
-
"syn",
|
486
|
+
"syn 2.0.98",
|
354
487
|
]
|
355
488
|
|
356
489
|
[[package]]
|
@@ -372,6 +505,15 @@ dependencies = [
|
|
372
505
|
"yasna",
|
373
506
|
]
|
374
507
|
|
508
|
+
[[package]]
|
509
|
+
name = "redox_syscall"
|
510
|
+
version = "0.5.10"
|
511
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
512
|
+
checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
|
513
|
+
dependencies = [
|
514
|
+
"bitflags",
|
515
|
+
]
|
516
|
+
|
375
517
|
[[package]]
|
376
518
|
name = "regex"
|
377
519
|
version = "1.11.1"
|
@@ -442,6 +584,18 @@ version = "1.11.0"
|
|
442
584
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
443
585
|
checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
|
444
586
|
|
587
|
+
[[package]]
|
588
|
+
name = "ryu"
|
589
|
+
version = "1.0.20"
|
590
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
591
|
+
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
|
592
|
+
|
593
|
+
[[package]]
|
594
|
+
name = "scopeguard"
|
595
|
+
version = "1.2.0"
|
596
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
597
|
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
598
|
+
|
445
599
|
[[package]]
|
446
600
|
name = "seq-macro"
|
447
601
|
version = "0.3.5"
|
@@ -465,7 +619,19 @@ checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
|
|
465
619
|
dependencies = [
|
466
620
|
"proc-macro2",
|
467
621
|
"quote",
|
468
|
-
"syn",
|
622
|
+
"syn 2.0.98",
|
623
|
+
]
|
624
|
+
|
625
|
+
[[package]]
|
626
|
+
name = "serde_json"
|
627
|
+
version = "1.0.140"
|
628
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
629
|
+
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
|
630
|
+
dependencies = [
|
631
|
+
"itoa",
|
632
|
+
"memchr",
|
633
|
+
"ryu",
|
634
|
+
"serde",
|
469
635
|
]
|
470
636
|
|
471
637
|
[[package]]
|
@@ -495,6 +661,17 @@ version = "1.14.0"
|
|
495
661
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
496
662
|
checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
|
497
663
|
|
664
|
+
[[package]]
|
665
|
+
name = "syn"
|
666
|
+
version = "1.0.109"
|
667
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
668
|
+
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
669
|
+
dependencies = [
|
670
|
+
"proc-macro2",
|
671
|
+
"quote",
|
672
|
+
"unicode-ident",
|
673
|
+
]
|
674
|
+
|
498
675
|
[[package]]
|
499
676
|
name = "syn"
|
500
677
|
version = "2.0.98"
|
@@ -523,7 +700,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
|
|
523
700
|
dependencies = [
|
524
701
|
"proc-macro2",
|
525
702
|
"quote",
|
526
|
-
"syn",
|
703
|
+
"syn 2.0.98",
|
527
704
|
]
|
528
705
|
|
529
706
|
[[package]]
|
@@ -574,7 +751,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
|
|
574
751
|
dependencies = [
|
575
752
|
"proc-macro2",
|
576
753
|
"quote",
|
577
|
-
"syn",
|
754
|
+
"syn 2.0.98",
|
578
755
|
]
|
579
756
|
|
580
757
|
[[package]]
|
@@ -598,6 +775,16 @@ dependencies = [
|
|
598
775
|
"tracing-core",
|
599
776
|
]
|
600
777
|
|
778
|
+
[[package]]
|
779
|
+
name = "tracing-serde"
|
780
|
+
version = "0.2.0"
|
781
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
782
|
+
checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1"
|
783
|
+
dependencies = [
|
784
|
+
"serde",
|
785
|
+
"tracing-core",
|
786
|
+
]
|
787
|
+
|
601
788
|
[[package]]
|
602
789
|
name = "tracing-subscriber"
|
603
790
|
version = "0.3.19"
|
@@ -608,12 +795,15 @@ dependencies = [
|
|
608
795
|
"nu-ansi-term",
|
609
796
|
"once_cell",
|
610
797
|
"regex",
|
798
|
+
"serde",
|
799
|
+
"serde_json",
|
611
800
|
"sharded-slab",
|
612
801
|
"smallvec",
|
613
802
|
"thread_local",
|
614
803
|
"tracing",
|
615
804
|
"tracing-core",
|
616
805
|
"tracing-log",
|
806
|
+
"tracing-serde",
|
617
807
|
]
|
618
808
|
|
619
809
|
[[package]]
|
@@ -622,6 +812,12 @@ version = "1.0.17"
|
|
622
812
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
623
813
|
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
|
624
814
|
|
815
|
+
[[package]]
|
816
|
+
name = "unicode-xid"
|
817
|
+
version = "0.2.6"
|
818
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
819
|
+
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
820
|
+
|
625
821
|
[[package]]
|
626
822
|
name = "untrusted"
|
627
823
|
version = "0.9.0"
|
data/Rakefile
CHANGED
@@ -3,7 +3,13 @@
|
|
3
3
|
require "bundler/gem_tasks"
|
4
4
|
require "minitest/test_task"
|
5
5
|
|
6
|
-
Minitest::TestTask.create
|
6
|
+
Minitest::TestTask.create(:test) do |t|
|
7
|
+
t.libs << 'test'
|
8
|
+
t.libs << 'lib'
|
9
|
+
t.warning = false
|
10
|
+
t.test_globs = ['test/**/*.rb']
|
11
|
+
t.test_prelude = 'require "helpers/test_helper.rb"'
|
12
|
+
end
|
7
13
|
|
8
14
|
require "rubocop/rake_task"
|
9
15
|
|
data/ext/itsi_error/Cargo.toml
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
use crate::ItsiError;
|
2
|
+
use std::ffi::NulError;
|
3
|
+
|
4
|
+
pub static CLIENT_CONNECTION_CLOSED: &str = "Client disconnected";
|
5
|
+
|
6
|
+
impl From<httparse::Error> for ItsiError {
|
7
|
+
fn from(err: httparse::Error) -> Self {
|
8
|
+
ItsiError::ArgumentError(err.to_string())
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
impl From<nix::errno::Errno> for ItsiError {
|
13
|
+
fn from(err: nix::errno::Errno) -> Self {
|
14
|
+
ItsiError::ArgumentError(err.to_string())
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
impl From<std::io::Error> for ItsiError {
|
19
|
+
fn from(err: std::io::Error) -> Self {
|
20
|
+
ItsiError::ArgumentError(err.to_string())
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
impl From<rcgen::Error> for ItsiError {
|
25
|
+
fn from(err: rcgen::Error) -> Self {
|
26
|
+
ItsiError::ArgumentError(err.to_string())
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
impl From<NulError> for ItsiError {
|
31
|
+
fn from(err: NulError) -> Self {
|
32
|
+
ItsiError::ArgumentError(err.to_string())
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
impl From<magnus::Error> for ItsiError {
|
37
|
+
fn from(err: magnus::Error) -> Self {
|
38
|
+
match err.error_type() {
|
39
|
+
magnus::error::ErrorType::Jump(tag) => ItsiError::Jump(tag.to_string()),
|
40
|
+
magnus::error::ErrorType::Error(_exception_class, cow) => {
|
41
|
+
ItsiError::ArgumentError(cow.to_string())
|
42
|
+
}
|
43
|
+
magnus::error::ErrorType::Exception(exception) => {
|
44
|
+
ItsiError::ArgumentError(exception.to_string())
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
impl From<ItsiError> for magnus::Error {
|
51
|
+
fn from(err: ItsiError) -> Self {
|
52
|
+
match err {
|
53
|
+
ItsiError::InvalidInput(msg) => magnus::Error::new(magnus::exception::arg_error(), msg),
|
54
|
+
ItsiError::InternalServerError(msg) => {
|
55
|
+
magnus::Error::new(magnus::exception::exception(), msg)
|
56
|
+
}
|
57
|
+
ItsiError::UnsupportedProtocol(msg) => {
|
58
|
+
magnus::Error::new(magnus::exception::arg_error(), msg)
|
59
|
+
}
|
60
|
+
ItsiError::ArgumentError(msg) => {
|
61
|
+
magnus::Error::new(magnus::exception::arg_error(), msg)
|
62
|
+
}
|
63
|
+
ItsiError::Jump(msg) => magnus::Error::new(magnus::exception::local_jump_error(), msg),
|
64
|
+
ItsiError::Break() => magnus::Error::new(magnus::exception::interrupt(), "Break"),
|
65
|
+
ItsiError::ClientConnectionClosed => {
|
66
|
+
magnus::Error::new(magnus::exception::eof_error(), CLIENT_CONNECTION_CLOSED)
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
data/ext/itsi_error/src/lib.rs
CHANGED
@@ -1,49 +1,22 @@
|
|
1
|
+
pub mod from;
|
1
2
|
use thiserror::Error;
|
2
3
|
|
3
4
|
pub type Result<T> = std::result::Result<T, ItsiError>;
|
4
5
|
|
5
6
|
#[derive(Error, Debug)]
|
6
7
|
pub enum ItsiError {
|
7
|
-
#[error("Invalid input")]
|
8
|
+
#[error("Invalid input {0}")]
|
8
9
|
InvalidInput(String),
|
9
|
-
#[error("Internal server error")]
|
10
|
-
InternalServerError,
|
11
|
-
#[error("Unsupported protocol")]
|
10
|
+
#[error("Internal server error {0}")]
|
11
|
+
InternalServerError(String),
|
12
|
+
#[error("Unsupported protocol {0}")]
|
12
13
|
UnsupportedProtocol(String),
|
13
|
-
#[error("Argument error")]
|
14
|
+
#[error("Argument error: {0}")]
|
14
15
|
ArgumentError(String),
|
16
|
+
#[error("Client Connection Closed")]
|
17
|
+
ClientConnectionClosed,
|
15
18
|
#[error("Jump")]
|
16
19
|
Jump(String),
|
17
|
-
|
18
|
-
|
19
|
-
impl From<ItsiError> for magnus::Error {
|
20
|
-
fn from(err: ItsiError) -> Self {
|
21
|
-
magnus::Error::new(magnus::exception::runtime_error(), err.to_string())
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
impl From<std::io::Error> for ItsiError {
|
26
|
-
fn from(err: std::io::Error) -> Self {
|
27
|
-
ItsiError::ArgumentError(err.to_string())
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
impl From<rcgen::Error> for ItsiError {
|
32
|
-
fn from(err: rcgen::Error) -> Self {
|
33
|
-
ItsiError::ArgumentError(err.to_string())
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
impl From<magnus::Error> for ItsiError {
|
38
|
-
fn from(err: magnus::Error) -> Self {
|
39
|
-
match err.error_type() {
|
40
|
-
magnus::error::ErrorType::Jump(tag) => ItsiError::Jump(tag.to_string()),
|
41
|
-
magnus::error::ErrorType::Error(_exception_class, cow) => {
|
42
|
-
ItsiError::ArgumentError(cow.to_string())
|
43
|
-
}
|
44
|
-
magnus::error::ErrorType::Exception(exception) => {
|
45
|
-
ItsiError::ArgumentError(exception.to_string())
|
46
|
-
}
|
47
|
-
}
|
48
|
-
}
|
20
|
+
#[error("Break")]
|
21
|
+
Break(),
|
49
22
|
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
[package]
|
2
|
+
name = "itsi_instrument_entry"
|
3
|
+
version = "0.1.0"
|
4
|
+
edition = "2021"
|
5
|
+
authors = ["Wouter Coppieters <wc@pico.net.nz>"]
|
6
|
+
license = "MIT"
|
7
|
+
publish = false
|
8
|
+
|
9
|
+
|
10
|
+
[lib]
|
11
|
+
proc-macro = true
|
12
|
+
[dependencies]
|
13
|
+
proc-macro2 = "1.0"
|
14
|
+
quote = "1.0"
|
15
|
+
syn = { version = "1.0", features = ["full"] }
|
@@ -0,0 +1,31 @@
|
|
1
|
+
use proc_macro::TokenStream;
|
2
|
+
use proc_macro2::TokenStream as TokenStream2;
|
3
|
+
use quote::quote;
|
4
|
+
use syn::{parse_macro_input, ItemFn};
|
5
|
+
|
6
|
+
#[proc_macro_attribute]
|
7
|
+
pub fn instrument_with_entry(attr: TokenStream, item: TokenStream) -> TokenStream {
|
8
|
+
let attr_tokens = TokenStream2::from(attr);
|
9
|
+
let input_fn = parse_macro_input!(item as ItemFn);
|
10
|
+
let attrs = input_fn.attrs;
|
11
|
+
let vis = input_fn.vis;
|
12
|
+
let sig = input_fn.sig;
|
13
|
+
let block = input_fn.block;
|
14
|
+
let output = quote! {
|
15
|
+
#[cfg(debug_assertions)]
|
16
|
+
#[tracing::instrument(#attr_tokens)]
|
17
|
+
#(#attrs)*
|
18
|
+
#vis #sig {
|
19
|
+
tracing::trace!("");
|
20
|
+
#block
|
21
|
+
}
|
22
|
+
|
23
|
+
#[cfg(not(debug_assertions))]
|
24
|
+
#(#attrs)*
|
25
|
+
#vis #sig {
|
26
|
+
#block
|
27
|
+
}
|
28
|
+
};
|
29
|
+
|
30
|
+
output.into()
|
31
|
+
}
|