module Telemetry::Sink::RecordMacro

Public Instance Methods

record(signal)
Alias for: record_macro
record_macro(signal) click to toggle source
# File lib/telemetry/sink.rb, line 13
def record_macro(signal)
  record_method_name = "record_#{signal}"
  send(:define_method, record_method_name) do |time, data|
    record signal, time, data
  end

  subset_method_name = "#{signal}_records"
  send(:define_method, subset_method_name) do |&blk|
    subset = records.select { |r| r.signal == signal }

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

    subset
  end

  detect_method_name = "recorded_#{signal}?"
  send(:define_method, detect_method_name) do |&blk|
    subset = send(subset_method_name)

    if blk.nil?
      return !subset.empty?
    else
      return subset.any?(&blk)
    end
  end

  detect_once_method_name = "recorded_#{signal}_once?"
  send(:define_method, detect_once_method_name) do |&blk|
    subset = send(subset_method_name)

    if blk.nil?
      return subset.count == 1
    else
      return subset.one?(&blk)
    end
  end
end
Also aliased as: record