ffwd-protobuf 0.1.6 → 0.1.7
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.
- data/lib/ffwd/plugin/protobuf/serializer/protocol0.rb +121 -0
- data/lib/ffwd/plugin/protobuf/serializer.rb +71 -0
- data/lib/ffwd/plugin/protobuf/version.rb +1 -1
- data/lib/ffwd/plugin/protobuf.rb +25 -131
- data/lib/ffwd/protocol0.pb.rb +93 -0
- metadata +23 -11
- checksums.yaml +0 -15
- data/lib/ffwd/plugin/protobuf/protocol.pb.rb +0 -105
@@ -0,0 +1,121 @@
|
|
1
|
+
# $LICENSE
|
2
|
+
# Copyright 2013-2014 Spotify AB. All rights reserved.
|
3
|
+
#
|
4
|
+
# The contents of this file are licensed under the Apache License, Version 2.0
|
5
|
+
# (the "License"); you may not use this file except in compliance with the
|
6
|
+
# License. You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require 'ffwd/protocol0.pb'
|
17
|
+
|
18
|
+
module FFWD
|
19
|
+
module Plugin
|
20
|
+
module Protobuf
|
21
|
+
module Serializer
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module FFWD::Plugin::Protobuf::Serializer
|
28
|
+
module Protocol0
|
29
|
+
P = ::FFWD::Protocol0
|
30
|
+
|
31
|
+
def self.load string
|
32
|
+
message = P::Message.new
|
33
|
+
message.parse_from_string string
|
34
|
+
|
35
|
+
if message.has_field?(:event)
|
36
|
+
yield :event, receive_event(message.event)
|
37
|
+
end
|
38
|
+
|
39
|
+
if message.has_field?(:metric)
|
40
|
+
yield :metric, receive_metric(message.metric)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.receive_event e
|
45
|
+
d = {}
|
46
|
+
d[:time] = Time.at(e.time.to_f / 1000) if e.has_field?(:time)
|
47
|
+
d[:key] = e.key if e.has_field?(:key)
|
48
|
+
d[:value] = e.value if e.has_field?(:value)
|
49
|
+
d[:host] = e.host if e.has_field?(:host)
|
50
|
+
d[:state] = e.state if e.has_field?(:state)
|
51
|
+
d[:description] = e.description if e.has_field?(:description)
|
52
|
+
d[:ttl] = e.ttl if e.has_field?(:ttl)
|
53
|
+
d[:tags] = from_tags e.tags if e.tags
|
54
|
+
d[:attributes] = from_attributes e.attributes if e.attributes
|
55
|
+
return d
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.receive_metric m
|
59
|
+
d = {}
|
60
|
+
d[:proc] = m.host if m.has_field?(:proc)
|
61
|
+
d[:time] = Time.at(m.time.to_f / 1000) if m.has_field?(:time)
|
62
|
+
d[:key] = m.key if m.has_field?(:key)
|
63
|
+
d[:value] = m.value if m.has_field?(:value)
|
64
|
+
d[:host] = m.host if m.has_field?(:host)
|
65
|
+
d[:tags] = from_tags m.tags if m.tags
|
66
|
+
d[:attributes] = from_attributes m.attributes if m.attributes
|
67
|
+
return d
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.from_attributes attributes
|
71
|
+
Hash[attributes.map{|a| [a.key, a.value]}]
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.from_tags tags
|
75
|
+
Array.new tags
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.dump_event event
|
79
|
+
e = P::Event.new
|
80
|
+
e.time = (event.time.to_f * 1000).to_i if event.time
|
81
|
+
e.key = event.key if event.key
|
82
|
+
e.value = event.value.to_f if event.value
|
83
|
+
e.host = event.host if event.host
|
84
|
+
e.state = event.state if event.state
|
85
|
+
e.description = event.description if event.description
|
86
|
+
e.ttl = event.ttl if event.ttl
|
87
|
+
e.tags = to_tags event.tags if event.tags
|
88
|
+
e.attributes = to_attributes event.attributes if event.attributes
|
89
|
+
|
90
|
+
message = P::Message.new
|
91
|
+
message.event = e
|
92
|
+
message.serialize_to_string
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.dump_metric metric
|
96
|
+
m = P::Metric.new
|
97
|
+
m.time = (metric.time.to_f * 1000).to_i if metric.time
|
98
|
+
m.key = metric.key if metric.key
|
99
|
+
m.value = metric.value.to_f if metric.value
|
100
|
+
m.host = metric.host if metric.host
|
101
|
+
m.tags = to_tags metric.tags if metric.tags
|
102
|
+
m.attributes = to_attributes metric.attributes if metric.attributes
|
103
|
+
|
104
|
+
message = P::Message.new
|
105
|
+
message.metric = m
|
106
|
+
message.serialize_to_string
|
107
|
+
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def self.to_attributes attributes
|
112
|
+
attributes.map do |key, value|
|
113
|
+
P::Attribute.new(:key => key.to_s, :value => value.to_s)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def self.to_tags tags
|
118
|
+
Array.new tags
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# $LICENSE
|
2
|
+
# Copyright 2013-2014 Spotify AB. All rights reserved.
|
3
|
+
#
|
4
|
+
# The contents of this file are licensed under the Apache License, Version 2.0
|
5
|
+
# (the "License"); you may not use this file except in compliance with the
|
6
|
+
# License. You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require_relative 'serializer/protocol0'
|
17
|
+
|
18
|
+
module FFWD::Plugin::Protobuf::Serializer
|
19
|
+
VERSIONS = {
|
20
|
+
0 => Protocol0
|
21
|
+
}
|
22
|
+
|
23
|
+
LATEST_VERSION = 0
|
24
|
+
|
25
|
+
def self.dump_frame string
|
26
|
+
[LATEST_VERSION, string.length + 8].pack("NN") + string
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.load_frame string
|
30
|
+
if string.length < 8
|
31
|
+
raise "Frame too small, expected at least 8 bytes but got #{string.length}"
|
32
|
+
end
|
33
|
+
|
34
|
+
version = string[0..3].unpack("N")[0]
|
35
|
+
length = string[4..7].unpack("N")[0]
|
36
|
+
|
37
|
+
unless impl = VERSIONS[version]
|
38
|
+
raise "Unsupported protocol version #{version}, latest is #{LATEST_VERSION}"
|
39
|
+
end
|
40
|
+
|
41
|
+
if length != string.length
|
42
|
+
raise "Message length invalid, expected #{length} but got #{string.length}"
|
43
|
+
end
|
44
|
+
|
45
|
+
[impl, string[8..length]]
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.dump_event event
|
49
|
+
unless impl = VERSIONS[LATEST_VERSION]
|
50
|
+
raise "No implementation for latest version: #{LATEST_VERSION}"
|
51
|
+
end
|
52
|
+
|
53
|
+
dump_frame impl.dump_event event
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.dump_metric metric
|
57
|
+
unless impl = VERSIONS[LATEST_VERSION]
|
58
|
+
raise "No implementation for latest version: #{LATEST_VERSION}"
|
59
|
+
end
|
60
|
+
|
61
|
+
dump_frame impl.dump_metric metric
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.load string
|
65
|
+
impl, string = load_frame string
|
66
|
+
|
67
|
+
impl.load string do |type, data|
|
68
|
+
yield type, data
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/ffwd/plugin/protobuf.rb
CHANGED
@@ -24,38 +24,17 @@ require 'ffwd/protocol'
|
|
24
24
|
require 'ffwd/event'
|
25
25
|
require 'ffwd/metric'
|
26
26
|
|
27
|
-
require_relative 'protobuf/
|
27
|
+
require_relative 'protobuf/serializer'
|
28
28
|
|
29
29
|
module FFWD::Plugin::Protobuf
|
30
30
|
include FFWD::Plugin
|
31
31
|
include FFWD::Logging
|
32
32
|
|
33
|
-
P = ::FFWD::Plugin::Protobuf::Protocol
|
34
|
-
|
35
33
|
register_plugin "protobuf"
|
36
34
|
|
37
|
-
|
38
|
-
def self.dump m
|
39
|
-
m.serialize_to_string
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.load string
|
43
|
-
m = P::Message.new
|
44
|
-
m.parse_from_string string
|
45
|
-
return m
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
class Output < FFWD::Handler
|
50
|
-
include EM::Protocols::ObjectProtocol
|
51
|
-
include Serializer
|
52
|
-
|
35
|
+
class OutputUDP < FFWD::Handler
|
53
36
|
def self.plugin_type
|
54
|
-
"
|
55
|
-
end
|
56
|
-
|
57
|
-
def serializer
|
58
|
-
Serializer
|
37
|
+
"protobuf_udp_out"
|
59
38
|
end
|
60
39
|
|
61
40
|
def send_all events, metrics
|
@@ -69,56 +48,15 @@ module FFWD::Plugin::Protobuf
|
|
69
48
|
end
|
70
49
|
|
71
50
|
def send_event event
|
72
|
-
|
73
|
-
e = P::Event.new
|
74
|
-
e.time = (event.time.to_f * 1000).to_i if event.time
|
75
|
-
e.key = event.key if event.key
|
76
|
-
e.value = to_value event.value if event.value
|
77
|
-
e.host = event.host if event.host
|
78
|
-
e.source = event.source if event.source
|
79
|
-
e.state = event.state if event.state
|
80
|
-
e.description = event.description if event.description
|
81
|
-
e.ttl = event.ttl if event.ttl
|
82
|
-
e.tags = to_tags event.tags if event.tags
|
83
|
-
e.attributes = to_attributes event.attributes if event.attributes
|
84
|
-
message.event = e
|
85
|
-
send_object message
|
51
|
+
parent.send_data Serializer.dump_event(event)
|
86
52
|
end
|
87
53
|
|
88
54
|
def send_metric metric
|
89
|
-
|
90
|
-
m = P::Metric.new
|
91
|
-
m.time = (metric.time.to_f * 1000).to_i if metric.time
|
92
|
-
m.key = metric.key if metric.key
|
93
|
-
m.value = to_value metric.value if metric.value
|
94
|
-
m.host = metric.host if metric.host
|
95
|
-
m.source = metric.source if metric.source
|
96
|
-
m.tags = to_tags metric.tags if metric.tags
|
97
|
-
m.attributes = to_attributes metric.attributes if metric.attributes
|
98
|
-
message.metric = m
|
99
|
-
send_object message
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
def to_value value
|
105
|
-
v = P::Value.new
|
106
|
-
v.value_d = value
|
107
|
-
return v
|
108
|
-
end
|
109
|
-
|
110
|
-
def to_attributes attributes
|
111
|
-
attributes.map do |key, value|
|
112
|
-
P::Attribute.new(:key => key, :value => value)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def to_tags tags
|
117
|
-
Array.new tags
|
55
|
+
parent.send_data Serializer.dump_metric(metric)
|
118
56
|
end
|
119
57
|
end
|
120
58
|
|
121
|
-
class
|
59
|
+
class InputUDP < FFWD::Connection
|
122
60
|
include FFWD::Logging
|
123
61
|
include EM::Protocols::FrameObjectProtocol
|
124
62
|
|
@@ -132,79 +70,35 @@ module FFWD::Plugin::Protobuf
|
|
132
70
|
"protobuf_in"
|
133
71
|
end
|
134
72
|
|
135
|
-
def
|
136
|
-
Serializer
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
end
|
73
|
+
def receive_data datagram
|
74
|
+
Serializer.load(datagram) do |type, data|
|
75
|
+
if type == :event
|
76
|
+
@core.input.event data
|
77
|
+
@bind.increment :received_events
|
78
|
+
next
|
79
|
+
end
|
143
80
|
|
144
|
-
|
145
|
-
|
81
|
+
if type == :metric
|
82
|
+
@core.input.metric data
|
83
|
+
@bind.increment :received_metrics
|
84
|
+
next
|
85
|
+
end
|
146
86
|
end
|
147
|
-
|
87
|
+
rescue => e
|
88
|
+
@log.error "Failed to receive data", e
|
148
89
|
|
149
|
-
def handle_exception datagram, e
|
150
|
-
@log.error("Failed to decode protobuf object", e)
|
151
90
|
if @log.debug?
|
152
|
-
@log.debug("
|
91
|
+
@log.debug("DUMP: " + FFWD.dump2hex(datagram))
|
153
92
|
end
|
154
93
|
end
|
155
|
-
|
156
|
-
def receive_event e
|
157
|
-
d = {}
|
158
|
-
d[:time] = Time.at(e.time.to_f / 1000) if e.has_field?(:time)
|
159
|
-
d[:key] = e.key if e.has_field?(:key)
|
160
|
-
d[:value] = e.value if e.has_field?(:value)
|
161
|
-
d[:host] = e.host if e.has_field?(:host)
|
162
|
-
d[:source] = e.source if e.has_field?(:source)
|
163
|
-
d[:state] = e.state if e.has_field?(:state)
|
164
|
-
d[:description] = e.description if e.has_field?(:description)
|
165
|
-
d[:ttl] = e.ttl if e.has_field?(:ttl)
|
166
|
-
d[:tags] = from_tags m.tags if m.tags
|
167
|
-
d[:attributes] = from_attributes m.attributes if m.attributes
|
168
|
-
@core.input.event d
|
169
|
-
@bind.increment :received_events
|
170
|
-
rescue => e
|
171
|
-
@log.error "Failed to receive event", e
|
172
|
-
@bind.increment :failed_events
|
173
|
-
end
|
174
|
-
|
175
|
-
def receive_metric m
|
176
|
-
d = {}
|
177
|
-
d[:time] = Time.at(m.time.to_f / 1000) if m.has_field?(:time)
|
178
|
-
d[:key] = m.key if m.has_field?(:key)
|
179
|
-
d[:value] = m.value if m.has_field?(:value)
|
180
|
-
d[:host] = m.host if m.has_field?(:host)
|
181
|
-
d[:source] = m.source if m.has_field?(:source)
|
182
|
-
d[:tags] = from_tags m.tags if m.tags
|
183
|
-
d[:attributes] = from_attributes m.attributes if m.attributes
|
184
|
-
@core.input.metric d
|
185
|
-
@bind.increment :received_metrics
|
186
|
-
rescue => e
|
187
|
-
@log.error "Failed to receive event", e
|
188
|
-
@bind.increment :failed_metrics
|
189
|
-
end
|
190
|
-
|
191
|
-
private
|
192
|
-
|
193
|
-
def from_attributes attributes
|
194
|
-
Hash[attributes.map{|a| [a.key, a.value]}]
|
195
|
-
end
|
196
|
-
|
197
|
-
def from_tags tags
|
198
|
-
Array.new tags
|
199
|
-
end
|
200
94
|
end
|
201
95
|
|
202
96
|
DEFAULT_HOST = "localhost"
|
203
97
|
DEFAULT_PORT = 19091
|
204
98
|
DEFAULT_PROTOCOL = 'udp'
|
205
99
|
|
206
|
-
OUTPUTS = {:udp =>
|
207
|
-
INPUTS = {:udp =>
|
100
|
+
OUTPUTS = {:udp => OutputUDP}
|
101
|
+
INPUTS = {:udp => InputUDP}
|
208
102
|
|
209
103
|
def self.setup_output opts, core
|
210
104
|
opts[:host] ||= DEFAULT_HOST
|
@@ -212,11 +106,11 @@ module FFWD::Plugin::Protobuf
|
|
212
106
|
|
213
107
|
protocol = FFWD.parse_protocol(opts[:protocol] || DEFAULT_PROTOCOL)
|
214
108
|
|
215
|
-
unless
|
109
|
+
unless handler = OUTPUTS[protocol.family]
|
216
110
|
raise "No type for protocol family: #{protocol.family}"
|
217
111
|
end
|
218
112
|
|
219
|
-
protocol.connect opts, core, log,
|
113
|
+
protocol.connect opts, core, log, handler
|
220
114
|
end
|
221
115
|
|
222
116
|
def self.setup_input opts, core
|
@@ -0,0 +1,93 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: ./plugins/ffwd-protobuf/proto/protocol0.proto>
|
3
|
+
# package FFWD.Protocol0;
|
4
|
+
#
|
5
|
+
# message Metric {
|
6
|
+
# // processor to use for metric.
|
7
|
+
# optional string proc = 1;
|
8
|
+
# // time in ms when metric was generated.
|
9
|
+
# optional int64 time = 2;
|
10
|
+
# // key of metric.
|
11
|
+
# optional string key = 3;
|
12
|
+
# // value of metric.
|
13
|
+
# optional double value = 4;
|
14
|
+
# // host where metric originated.
|
15
|
+
# optional string host = 5;
|
16
|
+
# // tags associated to metric.
|
17
|
+
# repeated string tags = 6;
|
18
|
+
# // attributes associated to metric.
|
19
|
+
# repeated Attribute attributes = 7;
|
20
|
+
# }
|
21
|
+
#
|
22
|
+
# message Event {
|
23
|
+
# // time in ms when the event was generated.
|
24
|
+
# optional int64 time = 1;
|
25
|
+
# // key of event.
|
26
|
+
# optional string key = 2;
|
27
|
+
# // value of event.
|
28
|
+
# optional double value = 3;
|
29
|
+
# // host where event originated.
|
30
|
+
# optional string host = 4;
|
31
|
+
# // indicated state of this event.
|
32
|
+
# optional string state = 5;
|
33
|
+
# // description of event.
|
34
|
+
# optional string description = 6;
|
35
|
+
# // time this event should be considered valid in seconds.
|
36
|
+
# optional int64 ttl = 7;
|
37
|
+
# // tags associated to event.
|
38
|
+
# repeated string tags = 8;
|
39
|
+
# // attributes associated to event.
|
40
|
+
# repeated Attribute attributes = 9;
|
41
|
+
# }
|
42
|
+
#
|
43
|
+
# message Attribute {
|
44
|
+
# required string key = 1;
|
45
|
+
# optional string value = 2;
|
46
|
+
# }
|
47
|
+
#
|
48
|
+
# message Message {
|
49
|
+
# optional Metric metric = 1;
|
50
|
+
# optional Event event = 2;
|
51
|
+
# }
|
52
|
+
|
53
|
+
require 'protobuf/message/message'
|
54
|
+
require 'protobuf/message/enum'
|
55
|
+
require 'protobuf/message/service'
|
56
|
+
require 'protobuf/message/extend'
|
57
|
+
|
58
|
+
module FFWD
|
59
|
+
module Protocol0
|
60
|
+
class Metric < ::Protobuf::Message
|
61
|
+
defined_in __FILE__
|
62
|
+
optional :string, :proc, 1
|
63
|
+
optional :int64, :time, 2
|
64
|
+
optional :string, :key, 3
|
65
|
+
optional :double, :value, 4
|
66
|
+
optional :string, :host, 5
|
67
|
+
repeated :string, :tags, 6
|
68
|
+
repeated :Attribute, :attributes, 7
|
69
|
+
end
|
70
|
+
class Event < ::Protobuf::Message
|
71
|
+
defined_in __FILE__
|
72
|
+
optional :int64, :time, 1
|
73
|
+
optional :string, :key, 2
|
74
|
+
optional :double, :value, 3
|
75
|
+
optional :string, :host, 4
|
76
|
+
optional :string, :state, 5
|
77
|
+
optional :string, :description, 6
|
78
|
+
optional :int64, :ttl, 7
|
79
|
+
repeated :string, :tags, 8
|
80
|
+
repeated :Attribute, :attributes, 9
|
81
|
+
end
|
82
|
+
class Attribute < ::Protobuf::Message
|
83
|
+
defined_in __FILE__
|
84
|
+
required :string, :key, 1
|
85
|
+
optional :string, :value, 2
|
86
|
+
end
|
87
|
+
class Message < ::Protobuf::Message
|
88
|
+
defined_in __FILE__
|
89
|
+
optional :Metric, :metric, 1
|
90
|
+
optional :Event, :event, 2
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffwd-protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- John-John Tedro
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-05-30 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: ruby_protobuf
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,20 +30,23 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: ffwd
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- -
|
35
|
+
- - '='
|
32
36
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
37
|
+
version: 0.1.7
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- -
|
43
|
+
- - '='
|
39
44
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
45
|
+
version: 0.1.7
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: rspec-mocks
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -73,31 +82,34 @@ executables: []
|
|
73
82
|
extensions: []
|
74
83
|
extra_rdoc_files: []
|
75
84
|
files:
|
76
|
-
- lib/ffwd/
|
85
|
+
- lib/ffwd/protocol0.pb.rb
|
77
86
|
- lib/ffwd/plugin/protobuf/version.rb
|
78
|
-
- lib/ffwd/plugin/protobuf/
|
87
|
+
- lib/ffwd/plugin/protobuf/serializer/protocol0.rb
|
88
|
+
- lib/ffwd/plugin/protobuf/serializer.rb
|
89
|
+
- lib/ffwd/plugin/protobuf.rb
|
79
90
|
homepage: https://github.com/spotify/ffwd
|
80
91
|
licenses:
|
81
92
|
- Apache 2.0
|
82
|
-
metadata: {}
|
83
93
|
post_install_message:
|
84
94
|
rdoc_options: []
|
85
95
|
require_paths:
|
86
96
|
- lib
|
87
97
|
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
88
99
|
requirements:
|
89
100
|
- - ! '>='
|
90
101
|
- !ruby/object:Gem::Version
|
91
102
|
version: '0'
|
92
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
93
105
|
requirements:
|
94
106
|
- - ! '>='
|
95
107
|
- !ruby/object:Gem::Version
|
96
108
|
version: '0'
|
97
109
|
requirements: []
|
98
110
|
rubyforge_project:
|
99
|
-
rubygems_version:
|
111
|
+
rubygems_version: 1.8.23
|
100
112
|
signing_key:
|
101
|
-
specification_version:
|
113
|
+
specification_version: 3
|
102
114
|
summary: protobuf reference protocol support for FFWD.
|
103
115
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
NTFmZTlmNTgzODA5NGQ3Yjc0Y2M0ZTE4OTFlNWI4ZTFlZWU1NzQyZg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZTM4MTYxMWI1MzgwY2Q5NDAxMzFjNGJkZTkzNTQ5NTAwY2JlODVkNQ==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZjBhZDYxZGZjN2ExY2IwZWY1NDFjODk1MDQwN2NlNjM5MmMyODYwY2IyYjk1
|
10
|
-
YjU4ZDU3NjY2ZTljMmQ0OTQ2NjJmYjY2MmM1OGJiY2Y4NWY1ZmNmNzViYWVh
|
11
|
-
NzQ2MzlmMjA1NDg4MDc4MDYzMWM3YTIwNzcwODc3MmY3MTk3ZTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YzU3MTY2Y2Q5MmNmMmUyYTA0Y2U4NWI4NzllMDIzMTRiOTgxNTRhYmM4OTBm
|
14
|
-
NWY0ZjZjM2FlMGU1NWFiNjI4MDkxYjZkMTk5ZjRmMTU0MmE4N2E4NGM3Mzhk
|
15
|
-
MWE4YjY3NTcwYTg0MjliYjgxMDJjMmQ3OTVjMWIwZjUxMThhMDM=
|
@@ -1,105 +0,0 @@
|
|
1
|
-
### Generated by rprotoc. DO NOT EDIT!
|
2
|
-
### <proto file: ./proto/protocol.proto>
|
3
|
-
# package FFWD.Plugin.Protobuf.Protocol;
|
4
|
-
#
|
5
|
-
# option java_package = "com.spotify.ffwd";
|
6
|
-
# option java_outer_classname = "Protocol";
|
7
|
-
#
|
8
|
-
# message Metric {
|
9
|
-
# // time in ms when metric was generated.
|
10
|
-
# optional int64 time = 1;
|
11
|
-
# // key of metric.
|
12
|
-
# optional string key = 2;
|
13
|
-
# // value of metric.
|
14
|
-
# optional double value = 3;
|
15
|
-
# // host where metric originated.
|
16
|
-
# optional string host = 4;
|
17
|
-
# // source metric of the metric.
|
18
|
-
# optional string source = 5;
|
19
|
-
# // tags associated to metric.
|
20
|
-
# repeated string tags = 6;
|
21
|
-
# // attributes associated to metric.
|
22
|
-
# repeated Attribute attributes = 7;
|
23
|
-
# }
|
24
|
-
#
|
25
|
-
# message Event {
|
26
|
-
# // time in ms when the event was generated.
|
27
|
-
# optional int64 time = 1;
|
28
|
-
# // key of event.
|
29
|
-
# optional string key = 2;
|
30
|
-
# // value of event.
|
31
|
-
# optional double value = 3;
|
32
|
-
# // host where event originated.
|
33
|
-
# optional string host = 4;
|
34
|
-
# // source event (if any).
|
35
|
-
# optional string source = 5;
|
36
|
-
# // indicated state of this event.
|
37
|
-
# optional string state = 6;
|
38
|
-
# // description of event.
|
39
|
-
# optional string description = 7;
|
40
|
-
# // time this event should be considered valid in seconds.
|
41
|
-
# optional int64 ttl = 8;
|
42
|
-
# // tags associated to event.
|
43
|
-
# repeated string tags = 9;
|
44
|
-
# // attributes associated to event.
|
45
|
-
# repeated Attribute attributes = 10;
|
46
|
-
# }
|
47
|
-
#
|
48
|
-
# message Attribute {
|
49
|
-
# required string key = 1;
|
50
|
-
# optional string value = 2;
|
51
|
-
# }
|
52
|
-
#
|
53
|
-
# message Message {
|
54
|
-
# optional Metric metric = 1;
|
55
|
-
# optional Event event = 2;
|
56
|
-
# }
|
57
|
-
|
58
|
-
require 'protobuf/message/message'
|
59
|
-
require 'protobuf/message/enum'
|
60
|
-
require 'protobuf/message/service'
|
61
|
-
require 'protobuf/message/extend'
|
62
|
-
|
63
|
-
module FFWD
|
64
|
-
module Plugin
|
65
|
-
module Protobuf
|
66
|
-
module Protocol
|
67
|
-
::Protobuf::OPTIONS[:"java_package"] = "com.spotify.ffwd"
|
68
|
-
::Protobuf::OPTIONS[:"java_outer_classname"] = "Protocol"
|
69
|
-
class Metric < ::Protobuf::Message
|
70
|
-
defined_in __FILE__
|
71
|
-
optional :int64, :time, 1
|
72
|
-
optional :string, :key, 2
|
73
|
-
optional :double, :value, 3
|
74
|
-
optional :string, :host, 4
|
75
|
-
optional :string, :source, 5
|
76
|
-
repeated :string, :tags, 6
|
77
|
-
repeated :Attribute, :attributes, 7
|
78
|
-
end
|
79
|
-
class Event < ::Protobuf::Message
|
80
|
-
defined_in __FILE__
|
81
|
-
optional :int64, :time, 1
|
82
|
-
optional :string, :key, 2
|
83
|
-
optional :double, :value, 3
|
84
|
-
optional :string, :host, 4
|
85
|
-
optional :string, :source, 5
|
86
|
-
optional :string, :state, 6
|
87
|
-
optional :string, :description, 7
|
88
|
-
optional :int64, :ttl, 8
|
89
|
-
repeated :string, :tags, 9
|
90
|
-
repeated :Attribute, :attributes, 10
|
91
|
-
end
|
92
|
-
class Attribute < ::Protobuf::Message
|
93
|
-
defined_in __FILE__
|
94
|
-
required :string, :key, 1
|
95
|
-
optional :string, :value, 2
|
96
|
-
end
|
97
|
-
class Message < ::Protobuf::Message
|
98
|
-
defined_in __FILE__
|
99
|
-
optional :Metric, :metric, 1
|
100
|
-
optional :Event, :event, 2
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|