| class SensorDatastore(object): |
| def __init__(self, stime=None): |
| self.lock = threading.Lock() |
| 'testnodes:io': array.array("B"), |
| 'testnodes:cpu': array.array("B"), |
| def get_values(self, name, start, end): |
| curr_arr = self.data[name] |
| sidx = start - self.stime |
| if sidx < 0 and eidx < 0: |
| return [0] * (end - start) |
| return [0] * (-sidx) + curr_arr[:eidx] |
| return curr_arr[sidx:eidx] |
| def update_values(self, data_time, vals, add=False): |
| for name, value in vals.items(): |
| curr_arr = self.data.setdefault(name, array.array("H")) |
| curr_end_time = len(curr_arr) + self.stime |
| dtime = data_time - curr_end_time |
| curr_arr.extend([0] * dtime) |
| sindex = len(curr_arr) + dtime |
| curr_arr[sindex] += value |
| curr_arr[sindex].append(value) |