us-carbon 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2cdf2e09209f130c0df61dc1fa4c1bc944b93068
4
- data.tar.gz: b7b1e4ac4ea49ea17767587585c182526f54c79c
3
+ metadata.gz: daf77aaea2d492588e16f2b14f6327612593667d
4
+ data.tar.gz: ddea4d861ccf8da4328e0af015a9154ee55c8e73
5
5
  SHA512:
6
- metadata.gz: d65293425f18dcfd8db8f084f28a03c0d434e15fa7b1baafb99873ed874efd37dbb87904f5794379c5647d6a59da90ef623dfed8b58cd5abb7e34ae8b004cb6d
7
- data.tar.gz: b3ff1621cb515517bf2d66a01dd8fc1811293474de1f507484c8956b57c6b3627ae9da2b87fb81c7a74b7778153ada091807df2541567e14fd64df0ea4af0dce
6
+ metadata.gz: ee6fd1f75d8a31a08839b534b831925d8cbf106329708678af4f4c051e515e58095e650d4baf78d5bdfba21f4b427e03b79b94f5d1def7e18a551b1207b5c108
7
+ data.tar.gz: 2816ccbe944e48dd19664733b788cf1e41c4764775cfd722cf96f296e1684068c881af2d75bbc666a03b1f60268877b247d21a94a9e9e4867623d4a0a235706f
@@ -0,0 +1,86 @@
1
+ module Carbon
2
+ class Reader
3
+ def initialize(hostname, port, logger)
4
+ @queue = FetchQueue.new
5
+ @logger = logger
6
+ connection = EM::connect(hostname, port, ServerProtocol, @queue, @logger)
7
+ end
8
+
9
+ def fetch(query, &callback)
10
+ @queue.push([query, callback])
11
+ end
12
+
13
+ class FetchQueue
14
+ def initialize
15
+ @queue = []
16
+ end
17
+
18
+ def push(value)
19
+ EM::next_tick do
20
+ @queue.push(value)
21
+ @on_push[]
22
+ end
23
+ end
24
+
25
+ def shift
26
+ @queue.shift
27
+ end
28
+
29
+ def on_push(&block)
30
+ @on_push = block
31
+ end
32
+ end
33
+
34
+ module ServerProtocol
35
+ include EventMachine::Protocols::LineText2
36
+
37
+ attr_accessor :logger
38
+
39
+ def initialize(queue,logger)
40
+ set_delimiter ';'
41
+ @queue = queue
42
+ @callback = nil
43
+ @logger = logger
44
+ @queue.on_push do
45
+ next_action() if @callback.nil?
46
+ end
47
+ end
48
+
49
+ def receive_data(data)
50
+ #logger.debug "Carbon_server_connection got data: #{data}"
51
+ super(data)
52
+ end
53
+
54
+ def receive_line(line)
55
+ #logger.debug "Carbon_server_connection got line: #{line}"
56
+ @callback[line] unless @callback.nil?
57
+ @callback = nil
58
+ next_action()
59
+ end
60
+
61
+ def next_action()
62
+ action = @queue.shift()
63
+ return if action.nil?
64
+
65
+ query = action[0]
66
+ @callback = action[1]
67
+
68
+ request = "get-metric #{query['path']} #{query['start']} #{query['end']}"
69
+ send_line request
70
+ end
71
+
72
+ def send_line(data)
73
+ #logger.debug "Carbon_server_connection sending line: #{data}"
74
+ send_data "#{data};"
75
+ end
76
+
77
+ def connection_completed
78
+ logger.info "Connected to CarbonServer"
79
+ end
80
+
81
+ def unbind
82
+ logger.info "Closing CarbonServer connection"
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,35 @@
1
+ module Carbon
2
+ class Writer
3
+ def initialize(host, port, logger)
4
+ @host = host
5
+ @port = port
6
+ @logger = logger
7
+ @retries = 0
8
+ make_connection()
9
+ end
10
+
11
+ def make_connection
12
+ @connection = TCPSocket.open(@host, @port)
13
+ end
14
+
15
+ def close_connection
16
+ begin
17
+ @connection.close()
18
+ rescue SocketError => e
19
+ puts "Exception closing Carbon connection: #{e.message}"
20
+ end
21
+ end
22
+
23
+ def add_metric(group, node, name, timestamp, value)
24
+ command = "us-metrics.#{group}.#{node}.#{name} #{value} #{timestamp}"
25
+ #@logger.info "EXECUTING CARBON COMMAND: #{command}"
26
+ @connection.puts command
27
+ end
28
+
29
+ def add_aggregated_metric(group, name, timestamp, value)
30
+ command = "us-metrics.#{group}.#{name} #{value} #{timestamp}"
31
+ #@logger.info "EXECUTING CARBON COMMAND: #{command}"
32
+ @connection.puts command
33
+ end
34
+ end
35
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Carbon
2
+ VERSION = "0.0.2"
3
+ end
data/us-carbon.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.summary = 'Carbon client of the Union Station system.'
15
15
  s.description = 'Carbon client of the Union Station system.'
16
16
 
17
- s.files =['us-carbon.gemspec','README.md']
17
+ s.files = Dir["{lib}/**/*"] + ['us-carbon.gemspec','README.md']
18
18
 
19
19
  s.add_runtime_dependency 'eventmachine'
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: us-carbon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phusion
@@ -32,6 +32,9 @@ extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
34
  - README.md
35
+ - lib/carbon/reader.rb
36
+ - lib/carbon/writer.rb
37
+ - lib/version.rb
35
38
  - us-carbon.gemspec
36
39
  homepage: https://www.unionstationapp.com/
37
40
  licenses: []