itsi-scheduler 0.2.7 → 0.2.9
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 +1 -1
- data/ext/itsi_scheduler/Cargo.toml +1 -1
- data/ext/itsi_scheduler/src/itsi_scheduler.rs +16 -10
- data/ext/itsi_server/Cargo.toml +1 -1
- data/ext/itsi_server/src/services/itsi_http_service.rs +7 -10
- data/lib/itsi/scheduler/version.rb +1 -1
- data/lib/itsi/scheduler.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bcd2bc05870dc73258c373197ded9712f184af219a9ab7e705751d43903d1a5
|
4
|
+
data.tar.gz: a4f3dd982ce4d5bd22dd6bda6b8a546f0e5695cd7fdeab989d56067165ae833c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4d97868c1061dff8ccdfb925dc3ab9e2cdef714bbd6f71752dc258a4630bb6c9963f0beac938993310ce091df72af2dd23afe6e299954f04349d88a6c81e12e
|
7
|
+
data.tar.gz: 44ac2fa697dc01e5f0aa5119676eb72a558ccb5dc0cbe4f202a3f1198ac014d4b4ca90e0c950c3560938cf3485f8e5242fed89b25b3e0846830b52edb0b9f11f
|
data/Cargo.lock
CHANGED
@@ -7,7 +7,7 @@ use itsi_error::ItsiError;
|
|
7
7
|
use itsi_rb_helpers::{call_without_gvl, create_ruby_thread};
|
8
8
|
use magnus::{
|
9
9
|
error::Result as MagnusResult,
|
10
|
-
value::{InnerValue, Opaque, ReprValue},
|
10
|
+
value::{InnerValue, Lazy, LazyId, Opaque, ReprValue},
|
11
11
|
Module, RClass, Ruby, Value,
|
12
12
|
};
|
13
13
|
use mio::{Events, Poll, Token, Waker};
|
@@ -19,7 +19,7 @@ use std::{
|
|
19
19
|
time::Duration,
|
20
20
|
};
|
21
21
|
use timer::Timer;
|
22
|
-
use tracing::{debug, info, warn};
|
22
|
+
use tracing::{debug, error, info, warn};
|
23
23
|
|
24
24
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
25
25
|
pub(crate) struct Readiness(i16);
|
@@ -31,6 +31,9 @@ impl std::fmt::Debug for ItsiScheduler {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
const WAKE_TOKEN: Token = Token(0);
|
34
|
+
static ID_CURRENT: LazyId = LazyId::new("current");
|
35
|
+
static CLASS_FIBER: Lazy<RClass> =
|
36
|
+
Lazy::new(|ruby| ruby.module_kernel().const_get("Fiber").unwrap());
|
34
37
|
|
35
38
|
#[magnus::wrap(class = "Itsi::Scheduler", free_immediately, size)]
|
36
39
|
pub(crate) struct ItsiScheduler {
|
@@ -225,14 +228,17 @@ impl ItsiScheduler {
|
|
225
228
|
let result: Arc<RwLock<Option<T>>> = Arc::new(RwLock::new(None));
|
226
229
|
let result_clone = Arc::clone(&result);
|
227
230
|
|
228
|
-
let
|
229
|
-
let
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
231
|
+
let class_fiber = ruby.get_inner(&CLASS_FIBER);
|
232
|
+
let current_fiber = ruby
|
233
|
+
.get_inner(&CLASS_FIBER)
|
234
|
+
.funcall::<_, _, Value>(*ID_CURRENT, ());
|
235
|
+
|
236
|
+
if current_fiber.is_err() {
|
237
|
+
error!("Failed to get current fiber");
|
238
|
+
return Err(ItsiError::ArgumentError("Failed to get current fiber".to_string()).into());
|
239
|
+
}
|
240
|
+
let current_fiber = Opaque::from(current_fiber.unwrap());
|
241
|
+
let scheduler = Opaque::from(class_fiber.funcall::<_, _, Value>("scheduler", ()).unwrap());
|
236
242
|
|
237
243
|
create_ruby_thread(move || {
|
238
244
|
call_without_gvl(|| {
|
data/ext/itsi_server/Cargo.toml
CHANGED
@@ -108,16 +108,13 @@ impl HttpRequestContext {
|
|
108
108
|
}
|
109
109
|
|
110
110
|
pub fn set_supported_encoding_set(&self, req: &HttpRequest) {
|
111
|
-
|
112
|
-
.headers()
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
.supported_encoding_set
|
119
|
-
.set(supported_encoding_set)
|
120
|
-
.unwrap();
|
111
|
+
self.inner.supported_encoding_set.get_or_init(move || {
|
112
|
+
req.headers()
|
113
|
+
.get_all(ACCEPT_ENCODING)
|
114
|
+
.into_iter()
|
115
|
+
.cloned()
|
116
|
+
.collect::<Vec<_>>()
|
117
|
+
});
|
121
118
|
}
|
122
119
|
|
123
120
|
pub fn set_origin(&self, origin: Option<String>) {
|
data/lib/itsi/scheduler.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itsi-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wouter Coppieters
|
@@ -197,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
197
|
requirements:
|
198
198
|
- - ">="
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version: 3.0
|
200
|
+
version: '3.0'
|
201
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
202
|
requirements:
|
203
203
|
- - ">="
|