vivarium_usdt 0.2.0 → 0.3.0
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/ext/vivarium_usdt/src/lib.rs +15 -3
- data/lib/vivarium/usdt.rb +27 -4
- data/lib/vivarium/usdt_version.rb +1 -1
- data/sig/vivarium_usdt.rbs +27 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0011c748448f6875e94c69e9c6c8f9278c8336772ab1755469f64a017279b225
|
|
4
|
+
data.tar.gz: d64f94363f10b94463e9e5de1441dd215bcae31296c3dc4f57949e5c5081687d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5b3cb49e9103c52bc3447dc92770975ce3a6c078fd8e2d49608284d155440345c6575ba84f3a22a28c1092a1dcb70e7c9befacf68141c304e010817852d81462
|
|
7
|
+
data.tar.gz: bec8e1cab4cce013e59c969e9f56e3857c33575568d3d4a11d4a70079d395e8af2c255935d0f8ef8e5ef067dccbc5e2e8f3d592fef32cd6dd65cc42808a60ef1
|
|
@@ -6,7 +6,7 @@ fn init(ruby: &Ruby) -> Result<(), Error> {
|
|
|
6
6
|
let module = ruby.define_module("VivariumUsdt")?;
|
|
7
7
|
module.define_singleton_method("invoke_start_probe", function!(invoke_start_probe, 3))?;
|
|
8
8
|
module.define_singleton_method("invoke_stop_probe", function!(invoke_stop_probe, 3))?;
|
|
9
|
-
module.define_singleton_method("invoke_raise_probe", function!(invoke_raise_probe,
|
|
9
|
+
module.define_singleton_method("invoke_raise_probe", function!(invoke_raise_probe, 4))?;
|
|
10
10
|
|
|
11
11
|
let kernel = ruby.module_kernel();
|
|
12
12
|
kernel.define_method(
|
|
@@ -34,11 +34,23 @@ pub(crate) fn invoke_stop_probe(method_id: i64, file_id: i64, lineno: i64) -> Re
|
|
|
34
34
|
Ok(())
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
pub(crate) fn invoke_raise_probe(
|
|
37
|
+
pub(crate) fn invoke_raise_probe(
|
|
38
|
+
error_id: i64,
|
|
39
|
+
message_id: i64,
|
|
40
|
+
file_id: i64,
|
|
41
|
+
lineno: i64,
|
|
42
|
+
) -> Result<(), Error> {
|
|
38
43
|
#[cfg(target_os = "linux")]
|
|
39
44
|
{
|
|
40
45
|
use probe::probe;
|
|
41
|
-
probe::probe!(
|
|
46
|
+
probe::probe!(
|
|
47
|
+
vivarium_usdt,
|
|
48
|
+
raise_probe,
|
|
49
|
+
error_id,
|
|
50
|
+
message_id,
|
|
51
|
+
file_id,
|
|
52
|
+
lineno
|
|
53
|
+
);
|
|
42
54
|
}
|
|
43
55
|
Ok(())
|
|
44
56
|
}
|
data/lib/vivarium/usdt.rb
CHANGED
|
@@ -7,10 +7,17 @@ module Vivarium
|
|
|
7
7
|
@__method_id_table ||= {}
|
|
8
8
|
end
|
|
9
9
|
private :__method_id_table
|
|
10
|
+
|
|
10
11
|
def __error_id_table
|
|
11
12
|
@__error_id_table ||= {}
|
|
12
13
|
end
|
|
13
14
|
private :__error_id_table
|
|
15
|
+
|
|
16
|
+
def __message_id_table
|
|
17
|
+
@__message_id_table ||= {}
|
|
18
|
+
end
|
|
19
|
+
private :__message_id_table
|
|
20
|
+
|
|
14
21
|
def __file_id_table
|
|
15
22
|
@__file_id_table ||= {}
|
|
16
23
|
end
|
|
@@ -24,6 +31,10 @@ module Vivarium
|
|
|
24
31
|
__error_id_table[u64]
|
|
25
32
|
end
|
|
26
33
|
|
|
34
|
+
def get_message_name(u64)
|
|
35
|
+
__message_id_table[u64]
|
|
36
|
+
end
|
|
37
|
+
|
|
27
38
|
def get_file_name(u64)
|
|
28
39
|
__file_id_table[u64]
|
|
29
40
|
end
|
|
@@ -34,6 +45,18 @@ module Vivarium
|
|
|
34
45
|
id
|
|
35
46
|
end
|
|
36
47
|
|
|
48
|
+
def register_or_resolve_error(error_name)
|
|
49
|
+
id = __helper_get_hash_from_name(error_name)
|
|
50
|
+
__error_id_table[id] ||= error_name
|
|
51
|
+
id
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def register_or_resolve_message(message)
|
|
55
|
+
id = __helper_get_hash_from_name(message)
|
|
56
|
+
__message_id_table[id] ||= message
|
|
57
|
+
id
|
|
58
|
+
end
|
|
59
|
+
|
|
37
60
|
def register_or_resolve_file(file_name)
|
|
38
61
|
id = __helper_get_hash_from_name(file_name)
|
|
39
62
|
__file_id_table[id] ||= file_name
|
|
@@ -54,11 +77,11 @@ module Vivarium
|
|
|
54
77
|
::VivariumUsdt.invoke_stop_probe(method_id, file_id, lineno)
|
|
55
78
|
end
|
|
56
79
|
|
|
57
|
-
def raise(error_name, file: nil, lineno: -1)
|
|
58
|
-
error_id =
|
|
59
|
-
|
|
80
|
+
def raise(error_name, message, file: nil, lineno: -1)
|
|
81
|
+
error_id = register_or_resolve_error(error_name)
|
|
82
|
+
message_id = register_or_resolve_message(message)
|
|
60
83
|
file_id = file ? register_or_resolve_file(file) : -1
|
|
61
|
-
::VivariumUsdt.invoke_raise_probe(error_id, file_id, lineno)
|
|
84
|
+
::VivariumUsdt.invoke_raise_probe(error_id, message_id, file_id, lineno)
|
|
62
85
|
end
|
|
63
86
|
end
|
|
64
87
|
end
|
data/sig/vivarium_usdt.rbs
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
module VivariumUsdt
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
def self.invoke_start_probe: (Integer method_id, Integer file_id, Integer lineno) -> void
|
|
3
|
+
def self.invoke_stop_probe: (Integer method_id, Integer file_id, Integer lineno) -> void
|
|
4
|
+
def self.invoke_raise_probe: (Integer error_id, Integer message_id, Integer file_id, Integer lineno) -> void
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module Kernel
|
|
8
|
+
private def __helper_get_hash_from_name: (String name) -> Integer
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module Vivarium
|
|
12
|
+
module Usdt
|
|
13
|
+
VERSION: String
|
|
14
|
+
|
|
15
|
+
def self.get_method_name: (Integer u64) -> String?
|
|
16
|
+
def self.get_error_name: (Integer u64) -> String?
|
|
17
|
+
def self.get_message_name: (Integer u64) -> String?
|
|
18
|
+
def self.get_file_name: (Integer u64) -> String?
|
|
19
|
+
|
|
20
|
+
def self.register_or_resolve_method: (String method_signature) -> Integer
|
|
21
|
+
def self.register_or_resolve_error: (String error_name) -> Integer
|
|
22
|
+
def self.register_or_resolve_message: (String message) -> Integer
|
|
23
|
+
def self.register_or_resolve_file: (String file_name) -> Integer
|
|
24
|
+
|
|
25
|
+
def self.start: ((String | Symbol | Module) defined_class, (String | Symbol) method_name, ?file: String?, ?lineno: Integer) -> void
|
|
26
|
+
def self.stop: ((String | Symbol | Module) defined_class, (String | Symbol) method_name, ?file: String?, ?lineno: Integer) -> void
|
|
27
|
+
def self.raise: (String error_name, String message, ?file: String?, ?lineno: Integer) -> void
|
|
28
|
+
end
|
|
4
29
|
end
|