-
Notifications
You must be signed in to change notification settings - Fork 2
/
device-history-service-json.h
48 lines (43 loc) · 1.39 KB
/
device-history-service-json.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef DEVICE_HISTORY_ITEM_SERVICE_JSON_H_
#define DEVICE_HISTORY_ITEM_SERVICE_JSON_H_ 1
#include <vector>
#include <mutex>
#include "device-history-service-abstract.h"
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wexpansion-to-defined"
#endif
#include "rapidjson/document.h"
#ifdef __clang__
#pragma clang diagnostic pop
#endif
class JsonFileDeviceHistoryService: public DeviceHistoryService {
private:
virtual int load();
virtual int save();
protected:
std::mutex mutexMap;
std::map<DEVADDRINT, DEVICE_HISTORY_ITEM, DEVADDRINTCompare> storage;
std::string path;
void clear();
public:
int errcode;
std::string errmessage;
JsonFileDeviceHistoryService();
~JsonFileDeviceHistoryService();
int get(DEVADDR &devaddr, DeviceHistoryItem &retval);
void put(DEVADDR &devaddr, DEVICE_HISTORY_ITEM &value);
void putUp(DEVADDR &devaddr, const time_t &time, uint32_t fcntup);
void putDown(DEVADDR &devaddr, const time_t &time, uint32_t fcntdown);
// increment downstream from network server to the device
uint32_t incrementDown(const DEVADDR &devaddr, const time_t &time);
void rm(DEVADDR &addr);
// List entries
void list(std::vector<DeviceHistoryItem> &retval, size_t offset, size_t size);
void flush();
int init(const std::string &option, void *data);
void done();
// debug only
std::string toJsonString();
};
#endif