pulse-meter 0.1.2 → 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.
@@ -110,22 +110,34 @@ module PulseMeter
110
110
  raise ArgumentError unless from.kind_of?(Time) && till.kind_of?(Time)
111
111
  start_time, end_time = from.to_i, till.to_i
112
112
  current_interval_id = get_interval_id(start_time) + interval
113
- res = []
113
+ keys = []
114
+ ids = []
114
115
  while current_interval_id < end_time
115
- res << get_timeline_value(current_interval_id)
116
+ ids << current_interval_id
117
+ keys << data_key(current_interval_id)
116
118
  current_interval_id += interval
117
119
  end
120
+ values = if keys.empty?
121
+ []
122
+ else
123
+ redis.mget(*keys)
124
+ end
125
+ res = []
126
+ ids.zip(values) do |(id, val)|
127
+ res << if val.nil?
128
+ get_raw_value(id)
129
+ else
130
+ SensorData.new(Time.at(id), val)
131
+ end
132
+ end
118
133
  res
119
134
  end
120
135
 
121
- # Returns sensor data for given interval.
122
- # If the interval is not over yet makes its data in-memory summarization
136
+ # Returns sensor data for given interval, in-memory summarization
123
137
  # and returns calculated value
124
138
  # @param interval_id [Fixnum]
125
139
  # @return [SensorData]
126
- def get_timeline_value(interval_id)
127
- interval_data_key = data_key(interval_id)
128
- return SensorData.new(Time.at(interval_id), redis.get(interval_data_key)) if redis.exists(interval_data_key)
140
+ def get_raw_value(interval_id)
129
141
  interval_raw_data_key = raw_data_key(interval_id)
130
142
  return SensorData.new(Time.at(interval_id), summarize(interval_raw_data_key)) if redis.exists(interval_raw_data_key)
131
143
  SensorData.new(Time.at(interval_id), nil)
@@ -1,3 +1,3 @@
1
1
  module PulseMeter
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pulse-meter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-30 00:00:00.000000000 Z
13
+ date: 2012-06-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: gon-sinatra
@@ -390,9 +390,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
390
390
  - - ! '>='
391
391
  - !ruby/object:Gem::Version
392
392
  version: '0'
393
- segments:
394
- - 0
395
- hash: -914537785395250315
396
393
  requirements: []
397
394
  rubyforge_project:
398
395
  rubygems_version: 1.8.24