pressure 0.1.1 → 0.1.3

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: 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