itsi-server 0.1.1 → 0.1.6

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-server might be problematic. Click here for more details.

Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/exe/itsi +88 -28
  3. data/ext/itsi_error/Cargo.toml +2 -0
  4. data/ext/itsi_error/src/from.rs +71 -0
  5. data/ext/itsi_error/src/lib.rs +12 -37
  6. data/ext/itsi_instrument_entry/Cargo.toml +15 -0
  7. data/ext/itsi_instrument_entry/src/lib.rs +31 -0
  8. data/ext/itsi_rb_helpers/Cargo.toml +2 -0
  9. data/ext/itsi_rb_helpers/src/heap_value.rs +121 -0
  10. data/ext/itsi_rb_helpers/src/lib.rs +90 -10
  11. data/ext/itsi_scheduler/Cargo.toml +24 -0
  12. data/ext/itsi_scheduler/extconf.rb +6 -0
  13. data/ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs +56 -0
  14. data/ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs +44 -0
  15. data/ext/itsi_scheduler/src/itsi_scheduler/timer.rs +44 -0
  16. data/ext/itsi_scheduler/src/itsi_scheduler.rs +308 -0
  17. data/ext/itsi_scheduler/src/lib.rs +38 -0
  18. data/ext/itsi_server/Cargo.toml +20 -3
  19. data/ext/itsi_server/extconf.rb +1 -1
  20. data/ext/itsi_server/src/body_proxy/big_bytes.rs +104 -0
  21. data/ext/itsi_server/src/body_proxy/itsi_body_proxy.rs +122 -0
  22. data/ext/itsi_server/src/body_proxy/mod.rs +2 -0
  23. data/ext/itsi_server/src/lib.rs +61 -7
  24. data/ext/itsi_server/src/request/itsi_request.rs +238 -104
  25. data/ext/itsi_server/src/response/itsi_response.rs +347 -0
  26. data/ext/itsi_server/src/response/mod.rs +1 -0
  27. data/ext/itsi_server/src/server/bind.rs +54 -23
  28. data/ext/itsi_server/src/server/bind_protocol.rs +37 -0
  29. data/ext/itsi_server/src/server/io_stream.rs +104 -0
  30. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.crt +11 -30
  31. data/ext/itsi_server/src/server/itsi_ca/itsi_ca.key +3 -50
  32. data/ext/itsi_server/src/server/itsi_server.rs +196 -134
  33. data/ext/itsi_server/src/server/lifecycle_event.rs +9 -0
  34. data/ext/itsi_server/src/server/listener.rs +241 -132
  35. data/ext/itsi_server/src/server/mod.rs +7 -1
  36. data/ext/itsi_server/src/server/process_worker.rs +196 -0
  37. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +254 -0
  38. data/ext/itsi_server/src/server/serve_strategy/mod.rs +27 -0
  39. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +247 -0
  40. data/ext/itsi_server/src/server/signal.rs +70 -0
  41. data/ext/itsi_server/src/server/thread_worker.rs +368 -0
  42. data/ext/itsi_server/src/server/tls/locked_dir_cache.rs +132 -0
  43. data/ext/itsi_server/src/server/tls.rs +137 -52
  44. data/ext/itsi_tracing/Cargo.toml +4 -0
  45. data/ext/itsi_tracing/src/lib.rs +36 -6
  46. data/lib/itsi/request.rb +30 -14
  47. data/lib/itsi/server/rack/handler/itsi.rb +25 -0
  48. data/lib/itsi/server/scheduler_mode.rb +6 -0
  49. data/lib/itsi/server/version.rb +1 -1
  50. data/lib/itsi/server.rb +82 -2
  51. data/lib/itsi/signals.rb +23 -0
  52. data/lib/itsi/stream_io.rb +38 -0
  53. metadata +39 -25
  54. data/ext/itsi_server/src/server/transfer_protocol.rs +0 -23
  55. data/ext/itsi_server/src/stream_writer/mod.rs +0 -21
metadata CHANGED
@@ -1,28 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsi-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wouter Coppieters
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-03-01 00:00:00.000000000 Z
10
+ date: 2025-03-14 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: libclang
13
+ name: rack
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '14.0'
18
+ version: '1.6'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '14.0'
25
+ version: '1.6'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rb_sys
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -37,20 +37,6 @@ dependencies:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: 0.9.91
40
- - !ruby/object:Gem::Dependency
41
- name: rack
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '2'
47
- type: :runtime
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '2'
54
40
  description: Itsi Server - A light-weight Rack Server implementation for Ruby
55
41
  email:
56
42
  - wc@pico.net.nz
@@ -69,30 +55,58 @@ files:
69
55
  - exe/itsi
70
56
  - ext/itsi_error/Cargo.lock
71
57
  - ext/itsi_error/Cargo.toml
58
+ - ext/itsi_error/src/from.rs
72
59
  - ext/itsi_error/src/lib.rs
60
+ - ext/itsi_instrument_entry/Cargo.toml
61
+ - ext/itsi_instrument_entry/src/lib.rs
73
62
  - ext/itsi_rb_helpers/Cargo.lock
74
63
  - ext/itsi_rb_helpers/Cargo.toml
64
+ - ext/itsi_rb_helpers/src/heap_value.rs
75
65
  - ext/itsi_rb_helpers/src/lib.rs
66
+ - ext/itsi_scheduler/Cargo.toml
67
+ - ext/itsi_scheduler/extconf.rb
68
+ - ext/itsi_scheduler/src/itsi_scheduler.rs
69
+ - ext/itsi_scheduler/src/itsi_scheduler/io_helpers.rs
70
+ - ext/itsi_scheduler/src/itsi_scheduler/io_waiter.rs
71
+ - ext/itsi_scheduler/src/itsi_scheduler/timer.rs
72
+ - ext/itsi_scheduler/src/lib.rs
76
73
  - ext/itsi_server/Cargo.toml
77
74
  - ext/itsi_server/extconf.rb
75
+ - ext/itsi_server/src/body_proxy/big_bytes.rs
76
+ - ext/itsi_server/src/body_proxy/itsi_body_proxy.rs
77
+ - ext/itsi_server/src/body_proxy/mod.rs
78
78
  - ext/itsi_server/src/lib.rs
79
79
  - ext/itsi_server/src/request/itsi_request.rs
80
80
  - ext/itsi_server/src/request/mod.rs
81
+ - ext/itsi_server/src/response/itsi_response.rs
82
+ - ext/itsi_server/src/response/mod.rs
81
83
  - ext/itsi_server/src/server/bind.rs
84
+ - ext/itsi_server/src/server/bind_protocol.rs
85
+ - ext/itsi_server/src/server/io_stream.rs
82
86
  - ext/itsi_server/src/server/itsi_ca/itsi_ca.crt
83
87
  - ext/itsi_server/src/server/itsi_ca/itsi_ca.key
84
88
  - ext/itsi_server/src/server/itsi_server.rs
89
+ - ext/itsi_server/src/server/lifecycle_event.rs
85
90
  - ext/itsi_server/src/server/listener.rs
86
91
  - ext/itsi_server/src/server/mod.rs
92
+ - ext/itsi_server/src/server/process_worker.rs
93
+ - ext/itsi_server/src/server/serve_strategy/cluster_mode.rs
94
+ - ext/itsi_server/src/server/serve_strategy/mod.rs
95
+ - ext/itsi_server/src/server/serve_strategy/single_mode.rs
96
+ - ext/itsi_server/src/server/signal.rs
97
+ - ext/itsi_server/src/server/thread_worker.rs
87
98
  - ext/itsi_server/src/server/tls.rs
88
- - ext/itsi_server/src/server/transfer_protocol.rs
89
- - ext/itsi_server/src/stream_writer/mod.rs
99
+ - ext/itsi_server/src/server/tls/locked_dir_cache.rs
90
100
  - ext/itsi_tracing/Cargo.lock
91
101
  - ext/itsi_tracing/Cargo.toml
92
102
  - ext/itsi_tracing/src/lib.rs
93
103
  - lib/itsi/request.rb
94
104
  - lib/itsi/server.rb
105
+ - lib/itsi/server/rack/handler/itsi.rb
106
+ - lib/itsi/server/scheduler_mode.rb
95
107
  - lib/itsi/server/version.rb
108
+ - lib/itsi/signals.rb
109
+ - lib/itsi/stream_io.rb
96
110
  - sig/itsi_server.rbs
97
111
  homepage: https://itsi.fyi
98
112
  licenses:
@@ -108,12 +122,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
122
  requirements:
109
123
  - - ">="
110
124
  - !ruby/object:Gem::Version
111
- version: 3.1.0
125
+ version: 2.7.0
112
126
  required_rubygems_version: !ruby/object:Gem::Requirement
113
127
  requirements:
114
128
  - - ">="
115
129
  - !ruby/object:Gem::Version
116
- version: 3.3.11
130
+ version: '3.1'
117
131
  requirements: []
118
132
  rubygems_version: 3.6.2
119
133
  specification_version: 4
@@ -1,23 +0,0 @@
1
- use itsi_error::ItsiError;
2
- use std::str::FromStr;
3
-
4
- #[derive(Debug, Default, Clone)]
5
- pub enum TransferProtocol {
6
- #[default]
7
- Https,
8
- Http,
9
- Unix,
10
- }
11
-
12
- impl FromStr for TransferProtocol {
13
- type Err = ItsiError;
14
-
15
- fn from_str(s: &str) -> Result<Self, Self::Err> {
16
- match s {
17
- "http" => Ok(TransferProtocol::Http),
18
- "https" => Ok(TransferProtocol::Https),
19
- "unix" => Ok(TransferProtocol::Unix),
20
- _ => Err(ItsiError::UnsupportedProtocol(s.to_string())),
21
- }
22
- }
23
- }
@@ -1,21 +0,0 @@
1
- use bytes::Bytes;
2
- use magnus::{error::Result as MagnusResult, exception::io_error, Error};
3
- use tokio::sync::mpsc::Sender;
4
-
5
- #[magnus::wrap(class = "Itsi::StreamWriter", free_immediately, size)]
6
- pub struct StreamWriter {
7
- sender: Sender<Bytes>,
8
- }
9
-
10
- impl StreamWriter {
11
- pub fn new(sender: Sender<Bytes>) -> Self {
12
- StreamWriter { sender }
13
- }
14
-
15
- pub fn write(&self, bytes: Bytes) -> MagnusResult<()> {
16
- self.sender
17
- .blocking_send(bytes)
18
- .map_err(|e| Error::new(io_error(), format!("{:?}", e)))?;
19
- Ok(())
20
- }
21
- }