Module: Vivarium::Usdt

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

Constant Summary collapse

VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.__error_id_tableObject



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

def __error_id_table
  @__error_id_table ||= {}
end

.__file_id_tableObject



21
22
23
# File 'lib/vivarium/usdt.rb', line 21

def __file_id_table
  @__file_id_table ||= {}
end

.__message_id_tableObject



16
17
18
# File 'lib/vivarium/usdt.rb', line 16

def __message_id_table
  @__message_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



30
31
32
# File 'lib/vivarium/usdt.rb', line 30

def get_error_name(u64)
  __error_id_table[u64]
end

.get_file_name(u64) ⇒ Object



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

def get_file_name(u64)
  __file_id_table[u64]
end

.get_message_name(u64) ⇒ Object



34
35
36
# File 'lib/vivarium/usdt.rb', line 34

def get_message_name(u64)
  __message_id_table[u64]
end

.get_method_name(u64) ⇒ Object



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

def get_method_name(u64)
  __method_id_table[u64]
end

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



80
81
82
83
84
85
# File 'lib/vivarium/usdt.rb', line 80

def raise(error_name, message, file: nil, lineno: -1)
  error_id = register_or_resolve_error(error_name)
  message_id = register_or_resolve_message(message)
  file_id = file ? register_or_resolve_file(file) : -1
  ::VivariumUsdt.invoke_raise_probe(error_id, message_id, file_id, lineno)
end

.register_or_resolve_error(error_name) ⇒ Object



48
49
50
51
52
# File 'lib/vivarium/usdt.rb', line 48

def register_or_resolve_error(error_name)
  id = __helper_get_hash_from_name(error_name)
  __error_id_table[id] ||= error_name
  id
end

.register_or_resolve_file(file_name) ⇒ Object



60
61
62
63
64
# File 'lib/vivarium/usdt.rb', line 60

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_message(message) ⇒ Object



54
55
56
57
58
# File 'lib/vivarium/usdt.rb', line 54

def register_or_resolve_message(message)
  id = __helper_get_hash_from_name(message)
  __message_id_table[id] ||= message
  id
end

.register_or_resolve_method(method_signature) ⇒ Object



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

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



66
67
68
69
70
71
# File 'lib/vivarium/usdt.rb', line 66

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



73
74
75
76
77
78
# File 'lib/vivarium/usdt.rb', line 73

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