pulse-meter 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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