Module: TestBench::Telemetry::Sink::Handler

Defined in:
lib/test_bench/telemetry/sink/handler.rb

Defined Under Namespace

Modules: HandleMacro, HandlerMethod

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(cls) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/test_bench/telemetry/sink/handler.rb', line 5

def self.included(cls)
  cls.class_exec do
    include Sink

    extend HandlerMethod
    extend HandleMacro

    include Event::Events
  end
end

Instance Method Details

#handle(event) ⇒ Object Also known as: call



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/test_bench/telemetry/sink/handler.rb', line 16

def handle(event)
  handles = handle?(event)

  if handles
    handler_method = handler_method(event)

    parameters = method(handler_method).parameters

    final_parameter_type, _ = parameters.last
    if not final_parameter_type == :rest
      parameter_count = parameters.count

      arguments = event.values[0...parameter_count]
    else
      arguments = event.values
    end

    __send__(handler_method, *arguments)

    true
  else
    false
  end
end

#handle?(event_or_event_type) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
# File 'lib/test_bench/telemetry/sink/handler.rb', line 42

def handle?(event_or_event_type)
  handler_method = handler_method(event_or_event_type)

  not handler_method.nil?
end

#handler_method(event_or_event_type) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/test_bench/telemetry/sink/handler.rb', line 48

def handler_method(event_or_event_type)
  handler_method = self.class.handler_method(event_or_event_type)

  if respond_to?(handler_method)
    handler_method
  else
    nil
  end
end