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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c76911f6bea49e8566350654970c25f4f78eac5e4a8b27b5302b4fa3a601adeb
4
- data.tar.gz: ec793930d4cd636ead77368bdb524e303cfd728bae224a839b2968a44adbfcbe
3
+ metadata.gz: 0011c748448f6875e94c69e9c6c8f9278c8336772ab1755469f64a017279b225
4
+ data.tar.gz: d64f94363f10b94463e9e5de1441dd215bcae31296c3dc4f57949e5c5081687d
5
5
  SHA512:
6
- metadata.gz: 0b0d070b76a2667ebfabfe60b626fa1c5206c98933b96a7bef5046b9d66a06843cd6bf4fe33c8a2856be45a61c536e360c729e83bc793cc7525cee1efa79e770
7
- data.tar.gz: 48caf2ae17b43ed1cf86e49e712d03b7cbe40cef2f023c68121f61c8181b953dfed7321d3cc45b59a7027e8334d5f259413d473fbb67a2aeb70fc13bb7610bd8
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, 3))?;
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(error_id: i64, file_id: i64, lineno: i64) -> Result<(), Error> {
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!(vivarium_usdt, raise_probe, error_id, file_id, lineno);
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 = __helper_get_hash_from_name(error_name)
59
- __error_id_table[error_id] ||= error_name
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Vivarium
4
4
  module Usdt
5
- VERSION = "0.2.0"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
@@ -1,4 +1,29 @@
1
1
  module VivariumUsdt
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vivarium_usdt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uchio Kondo