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
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
3
4
5
|
# File 'lib/telemetry/sink.rb', line 3
def record_any?
false
end
|
#recorded?(&blk) ⇒ 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
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
|
#records ⇒ Object
68
69
70
|
# File 'lib/telemetry/sink.rb', line 68
def records
@records ||= []
end
|
#records?(signal) ⇒ Boolean
72
73
74
|
# File 'lib/telemetry/sink.rb', line 72
def records?(signal)
respond_to? "record_#{signal}"
end
|