Module: Telemetry::Sink

Defined Under Namespace

Modules: RecordAnyMacro, RecordMacro Classes: Record

Constant Summary collapse

Error =
Class.new(RuntimeError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(cls) ⇒ Object



7
8
9
10
# File 'lib/telemetry/sink.rb', line 7

def self.included(cls)
  cls.extend RecordMacro
  cls.extend RecordAnyMacro
end

Instance Method Details

#one_record(&blk) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/telemetry/sink.rb', line 115

def one_record(&blk)
  records = self.records

  unless blk.nil?
    records = records.select(&blk)
  end

  case records.count
  when 0
    return nil
  when 1
    return records[0]
  else
    raise Error, "More than one matching record was recorded"
  end
end

#record(signal, time, data = nil, force: nil) ⇒ Object



88
89
90
91
92
93
94
95
96
97
# File 'lib/telemetry/sink.rb', line 88

def record(signal, time, data=nil, force: nil)
  force ||= false

  record = nil
  if force || record?(signal)
    record = Record.new signal, time, data
    records << record
  end
  record
end

#record?(signal) ⇒ Boolean

Returns:

  • (Boolean)


76
77
78
79
80
81
82
83
84
85
86
# File 'lib/telemetry/sink.rb', line 76

def record?(signal)
  record = false
  if record_any?
    record = true
  else
    if records? signal
      record = true
    end
  end
  record
end

#record_any?Boolean

Returns:

  • (Boolean)


3
4
5
# File 'lib/telemetry/sink.rb', line 3

def record_any?
  false
end

#recorded?(&blk) ⇒ Boolean

Returns:

  • (Boolean)


99
100
101
102
103
104
105
# File 'lib/telemetry/sink.rb', line 99

def recorded?(&blk)
  if blk.nil?
    return !records.empty?
  else
    return records.any? &blk
  end
end

#recorded_once?(&blk) ⇒ Boolean

Returns:

  • (Boolean)


107
108
109
110
111
112
113
# File 'lib/telemetry/sink.rb', line 107

def recorded_once?(&blk)
  if blk.nil?
    return records.count == 1
  else
    return records.one? &blk
  end
end

#recordsObject



68
69
70
# File 'lib/telemetry/sink.rb', line 68

def records
  @records ||= []
end

#records?(signal) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/telemetry/sink.rb', line 72

def records?(signal)
  respond_to? "record_#{signal}"
end