blob: 01107c13e19679d017f87390279baed4d1f4793e (
plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/*
* GraphLCD plugin for the Video Disk Recorder
*
* extdata.c - external data sent via SVDRP
*
* This file is released under the GNU General Public License. Refer
* to the COPYING file distributed with this package.
*
* (c) 2011 Wolfgang Astleitner <mrwastl AT users sourceforge net>
*/
#include "extdata.h"
#include <vdr/tools.h>
#include <stdio.h>
cExtData * cExtData::mExtDataInstance = NULL;
cExtData * cExtData::GetExtData(void) {
if (mExtDataInstance == NULL) {
mExtDataInstance = new cExtData();
}
return mExtDataInstance;
}
void cExtData::ReleaseExtData(void) {
delete mExtDataInstance;
mExtDataInstance = NULL;
}
cExtData::~cExtData(void) {
data.clear();
expData.clear();
}
bool cExtData::Set(std::string key, std::string value, uint32_t expire) {
if (mExtDataInstance == NULL) return false; // paranoia check
data[key] = value;
if (expire > 0) {
expData[key] = cTimeMs::Now() + (expire * 1000);
} else {
expData.erase(key); // just in case of an old expiration entry for key
}
return true;
}
bool cExtData::Unset(std::string key) {
if (mExtDataInstance == NULL) return false; // paranoia check
expData.erase(key); // ignore result;
return ( (data.erase(key) > 0) ? true : false );
}
bool cExtData::IsSet(std::string key) {
std::string ret = Get(key);
return ( (ret != "") ? true : false );
}
std::string cExtData::Get(std::string key) {
if (mExtDataInstance == NULL) return ""; // paranoia check
it = data.find(key);
if ( it != data.end() ) {
expDataIt = expData.find(key);
if ( expDataIt != expData.end() ) {
uint64_t expts = (*expDataIt).second;
if ( cTimeMs::Now() > expts ) {
expData.erase(key);
data.erase(key);
return "";
} else {
return (*it).second;
}
} else {
return (*it).second;
}
} else {
return "";
}
}
|