module Telemetry::Sink

Constants

Error
Record

Public Class Methods

included(cls) click to toggle source
# File lib/telemetry/sink.rb, line 7
def self.included(cls)
  cls.extend RecordMacro
  cls.extend RecordAnyMacro
end

Public Instance Methods

one_record(&blk) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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?() click to toggle source
# File lib/telemetry/sink.rb, line 3
def record_any?
  false
end
recorded?(&blk) click to toggle source
# 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) click to toggle source
# 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
records() click to toggle source
# File lib/telemetry/sink.rb, line 68
def records
  @records ||= []
end
records?(signal) click to toggle source
# File lib/telemetry/sink.rb, line 72
def records?(signal)
  respond_to? "record_#{signal}"
end