Module: Vivarium::Usdt

Defined in:
lib/vivarium/usdt.rb,
lib/vivarium/usdt_version.rb

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.__error_id_tableObject



10
11
12
# File 'lib/vivarium/usdt.rb', line 10

def __error_id_table
  @__error_id_table ||= {}
end

.__file_id_tableObject



14
15
16
# File 'lib/vivarium/usdt.rb', line 14

def __file_id_table
  @__file_id_table ||= {}
end

.__method_id_tableObject



6
7
8
# File 'lib/vivarium/usdt.rb', line 6

def __method_id_table
  @__method_id_table ||= {}
end

.get_error_name(u64) ⇒ Object



23
24
25
# File 'lib/vivarium/usdt.rb', line 23

def get_error_name(u64)
  __error_id_table[u64]
end

.get_file_name(u64) ⇒ Object



27
28
29
# File 'lib/vivarium/usdt.rb', line 27

def get_file_name(u64)
  __file_id_table[u64]
end

.get_method_name(u64) ⇒ Object



19
20
21
# File 'lib/vivarium/usdt.rb', line 19

def get_method_name(u64)
  __method_id_table[u64]
end

.raise(error_name, file: nil, lineno: -1)) ⇒ Object



57
58
59
60
61
62
# File 'lib/vivarium/usdt.rb', line 57

def raise(error_name, file: nil, lineno: -1)
  error_id = __helper_get_hash_from_name(error_name)
  __error_id_table[error_id] ||= error_name
  file_id = file ? register_or_resolve_file(file) : -1
  ::VivariumUsdt.invoke_raise_probe(error_id, file_id, lineno)
end

.register_or_resolve_file(file_name) ⇒ Object



37
38
39
40
41
# File 'lib/vivarium/usdt.rb', line 37

def register_or_resolve_file(file_name)
  id = __helper_get_hash_from_name(file_name)
  __file_id_table[id] ||= file_name
  id
end

.register_or_resolve_method(method_signature) ⇒ Object



31
32
33
34
35
# File 'lib/vivarium/usdt.rb', line 31

def register_or_resolve_method(method_signature)
  id = __helper_get_hash_from_name(method_signature)
  __method_id_table[id] ||= method_signature
  id
end

.start(defined_class, method_name, file: nil, lineno: -1)) ⇒ Object



43
44
45
46
47
48
# File 'lib/vivarium/usdt.rb', line 43

def start(defined_class, method_name, file: nil, lineno: -1)
  method_signature = "#{defined_class}##{method_name}"
  method_id = register_or_resolve_method(method_signature)
  file_id = file ? register_or_resolve_file(file) : -1
  ::VivariumUsdt.invoke_start_probe(method_id, file_id, lineno)
end

.stop(defined_class, method_name, file: nil, lineno: -1)) ⇒ Object



50
51
52
53
54
55
# File 'lib/vivarium/usdt.rb', line 50

def stop(defined_class, method_name, file: nil, lineno: -1)
  method_signature = "#{defined_class}##{method_name}"
  method_id = register_or_resolve_method(method_signature)
  file_id = file ? register_or_resolve_file(file) : -1
  ::VivariumUsdt.invoke_stop_probe(method_id, file_id, lineno)
end