evt-telemetry 0.3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,5 @@
1
+ require 'clock'
2
+ require 'dependency'; Dependency.activate
3
+
4
+ require 'telemetry/sink'
5
+ require 'telemetry/telemetry'
@@ -0,0 +1,4 @@
1
+ require 'clock/controls'
2
+
3
+ require 'telemetry/controls/sink'
4
+ require 'telemetry/controls/time'
@@ -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,5 @@
1
+ class Telemetry
2
+ module Controls
3
+ Time = Clock::Controls::Time
4
+ end
5
+ 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: []