pressure 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 775bae2a863792303d7952f3dfe74d32f9b8c018
4
- data.tar.gz: f2ab633d2ffc408d87854db528ed601f473da24e
3
+ metadata.gz: cd6e71141b17678f5ab75a8c0bf0a3a9d7f941f6
4
+ data.tar.gz: 14755a2acc29d9f98d88106f64d3d6bf25400213
5
5
  SHA512:
6
- metadata.gz: a9005a729187061da7674695bbb0b61c6286d6c4671790c7aaff946fc2b81ab6a68cbe11086a3d5e75360f99769096077c59672bfc70cc194344c277d3cbb2fe
7
- data.tar.gz: 12db8e810c45acc7cca444cb6ff7830966ba74f624521b3fac207ab5800e887823b0fbc5ca654a798293e81f49ba83407e98f5ae0c19d6301ca77989627fee07
6
+ metadata.gz: 250a5644df53172206c4036900856b0252bf0a0b58888e3fd0478d3ebe80ff9b4c44b77b36f9bef97feba9bf258141249d5dcf9e4c0e2f1bc712fb0ef31e1ce3
7
+ data.tar.gz: b1ad93a30dc90bb495ee3909e67f7e2e7841e8eac945032178ff7a50e0e835034b5e9c286840c64cea50956e203465e7bf4df36f3be8cfcb119098715ac6c4aa
@@ -1,3 +1,3 @@
1
1
  class Pressure
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.3'
3
3
  end
data/lib/pressure.rb CHANGED
@@ -6,21 +6,22 @@ require 'json'
6
6
  class Pressure
7
7
  attr_accessor :wrapper_template
8
8
  attr_reader :sockets
9
- attr_reader :options
10
9
 
11
10
  def initialize(options = {}, &data_source_block)
12
11
  @wrapper_template = {}
13
12
  @current_upstream = {}
14
13
  @send_queue = Queue.new
15
- @options = options
16
14
  @sockets = []
17
15
  @websocket_worker_delay = options[:websocket_worker_delay] || (1.0 / 20.0)
16
+ @incoming_monitor_delay = options[:incoming_monitor_delay] || (1.0 / 20.0)
17
+ @no_wrap = options[:no_wrap] || false
18
18
  incoming_monitor(&data_source_block)
19
19
  websocket_worker_loop
20
20
  end
21
21
 
22
22
  def <<(socket)
23
23
  @sockets << socket
24
+ socket.send JSON.generate(@current_upstream)
24
25
  end
25
26
 
26
27
  def delete(socket)
@@ -28,12 +29,16 @@ class Pressure
28
29
  end
29
30
 
30
31
  def wrap_data(data)
31
- @wrapper_template.merge(upstream_data: data.clone,
32
+ @wrapper_template.merge(upstream_data: Marshal.load(Marshal.dump(data)),
32
33
  last_update_ts: Time.now.utc.to_i)
33
34
  end
34
35
 
35
36
  def data_changed?(current_data, previous_data)
36
- current_data != previous_data
37
+ if current_data && previous_data
38
+ current_data != previous_data
39
+ else
40
+ true
41
+ end
37
42
  end
38
43
 
39
44
  def incoming_monitor(&data_source_block)
@@ -42,15 +47,16 @@ class Pressure
42
47
  data = {}
43
48
  loop do
44
49
  upstream_data = data_source_block.call
45
- if data_changed?(data[:upstream_data], upstream_data)
50
+ if data_changed?(upstream_data, data[:upstream_data])
46
51
  data = wrap_data(upstream_data)
47
- if @options[:no_wrap]
52
+ @current_upstream = data
53
+ if @no_wrap
48
54
  @send_queue << upstream_data
49
55
  else
50
56
  @send_queue << data
51
57
  end
52
58
  end
53
- sleep(1.0 / 20.0)
59
+ sleep(@incoming_monitor_delay)
54
60
  end
55
61
  rescue => e
56
62
  puts "error #{e}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pressure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Davidson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-27 00:00:00.000000000 Z
11
+ date: 2015-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler