evt-telemetry 0.3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/telemetry.rb +5 -0
- data/lib/telemetry/controls.rb +4 -0
- data/lib/telemetry/controls/sink.rb +53 -0
- data/lib/telemetry/controls/time.rb +5 -0
- data/lib/telemetry/sink.rb +94 -0
- data/lib/telemetry/telemetry.rb +29 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64d528c1d0aee032b31ce70cb9c0654a15f91f4d
|
4
|
+
data.tar.gz: bfebf4dfd53ec60390037c0f895647d202d2398c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a7ba7a9f45369b9576a7c745a0bd6f87e664811f682edb4ca5e162100e0f3004d1d97e29c44012ff3a58bf3717218f62bfa23295d6fdcc182c2a5cd9070ae97f
|
7
|
+
data.tar.gz: b1d6087697ff851ca9666fdea0021370c449a1e1568b91157cc23f1e657a8bfc7ed673e368db4bb6734f9ac781beada5e179bd72332fe1a87e74db68c473bf7b
|
data/lib/telemetry.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
class Telemetry
|
2
|
+
module Controls
|
3
|
+
module Sink
|
4
|
+
class Example
|
5
|
+
include Telemetry::Sink
|
6
|
+
|
7
|
+
record_any
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.example
|
11
|
+
Example.new
|
12
|
+
end
|
13
|
+
|
14
|
+
module RecordsOther
|
15
|
+
class Example
|
16
|
+
include Telemetry::Sink
|
17
|
+
|
18
|
+
record :something_else
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.example
|
22
|
+
Example.new
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module Macro
|
27
|
+
class Example
|
28
|
+
include Telemetry::Sink
|
29
|
+
|
30
|
+
record :something
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.example
|
34
|
+
Example.new
|
35
|
+
end
|
36
|
+
|
37
|
+
module RecordAny
|
38
|
+
class Example
|
39
|
+
include Telemetry::Sink
|
40
|
+
|
41
|
+
record_any
|
42
|
+
|
43
|
+
record :something
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.example
|
47
|
+
Example.new
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
class Telemetry
|
2
|
+
module Sink
|
3
|
+
def record_any?
|
4
|
+
false
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.included(cls)
|
8
|
+
cls.extend RecordMacro
|
9
|
+
cls.extend RecordAnyMacro
|
10
|
+
end
|
11
|
+
|
12
|
+
module RecordMacro
|
13
|
+
def record_macro(signal)
|
14
|
+
record_method_name = "record_#{signal}"
|
15
|
+
send(:define_method, record_method_name) do |time, data|
|
16
|
+
record signal, time, data
|
17
|
+
end
|
18
|
+
|
19
|
+
subset_method_name = "#{signal}_records"
|
20
|
+
send(:define_method, subset_method_name) do |&blk|
|
21
|
+
subset = records.select { |r| r.signal == signal }
|
22
|
+
|
23
|
+
unless blk.nil?
|
24
|
+
subset = subset.select &blk
|
25
|
+
end
|
26
|
+
|
27
|
+
subset
|
28
|
+
end
|
29
|
+
|
30
|
+
detect_method_name = "recorded_#{signal}?"
|
31
|
+
send(:define_method, detect_method_name) do |&blk|
|
32
|
+
subset = send(subset_method_name)
|
33
|
+
|
34
|
+
if blk.nil?
|
35
|
+
return !subset.empty?
|
36
|
+
else
|
37
|
+
return subset.any? &blk
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
alias :record :record_macro
|
42
|
+
end
|
43
|
+
|
44
|
+
module RecordAnyMacro
|
45
|
+
def record_any_macro
|
46
|
+
send(:define_method, :record_any?) do
|
47
|
+
true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
alias :record_any :record_any_macro
|
51
|
+
end
|
52
|
+
|
53
|
+
Record = Struct.new :signal, :time, :data
|
54
|
+
|
55
|
+
def records
|
56
|
+
@records ||= []
|
57
|
+
end
|
58
|
+
|
59
|
+
def records?(signal)
|
60
|
+
respond_to? "record_#{signal}"
|
61
|
+
end
|
62
|
+
|
63
|
+
def record?(signal)
|
64
|
+
record = false
|
65
|
+
if record_any?
|
66
|
+
record = true
|
67
|
+
else
|
68
|
+
if records? signal
|
69
|
+
record = true
|
70
|
+
end
|
71
|
+
end
|
72
|
+
record
|
73
|
+
end
|
74
|
+
|
75
|
+
def recorded?(&blk)
|
76
|
+
if blk.nil?
|
77
|
+
return !records.empty?
|
78
|
+
else
|
79
|
+
return records.any? &blk
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def record(signal, time, data=nil, force: nil)
|
84
|
+
force ||= false
|
85
|
+
|
86
|
+
record = nil
|
87
|
+
if force || record?(signal)
|
88
|
+
record = Record.new signal, time, data
|
89
|
+
records << record
|
90
|
+
end
|
91
|
+
record
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Telemetry
|
2
|
+
dependency :clock
|
3
|
+
|
4
|
+
def self.build
|
5
|
+
new.tap do |instance|
|
6
|
+
Clock::UTC.configure instance
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.configure(receiver)
|
11
|
+
instance = build
|
12
|
+
receiver.telemetry = instance
|
13
|
+
instance
|
14
|
+
end
|
15
|
+
|
16
|
+
def sinks
|
17
|
+
@sinks ||= []
|
18
|
+
end
|
19
|
+
|
20
|
+
def register(sink)
|
21
|
+
sinks << sink
|
22
|
+
end
|
23
|
+
|
24
|
+
def record(signal, data=nil)
|
25
|
+
sinks.each do |s|
|
26
|
+
s.record signal, clock.iso8601(precision: 5), data
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: evt-telemetry
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- The Eventide Project
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: evt-dependency
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: evt-clock
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ntl-test_bench
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: " "
|
56
|
+
email: opensource@eventide-project.org
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/telemetry.rb
|
62
|
+
- lib/telemetry/controls.rb
|
63
|
+
- lib/telemetry/controls/sink.rb
|
64
|
+
- lib/telemetry/controls/time.rb
|
65
|
+
- lib/telemetry/sink.rb
|
66
|
+
- lib/telemetry/telemetry.rb
|
67
|
+
homepage: https://github.com/eventide-project/telemetry
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 2.3.3
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.5.2
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: In-process telemetry based on observers
|
91
|
+
test_files: []
|