MCPcopy Create free account
hub / github.com/domoticz/domoticz / LoadEvents

Method LoadEvents

main/EventSystem.cpp:217–330  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

215}
216
217void CEventSystem::LoadEvents()
218{
219 std::string dzv_Dir;
220 CdzVents* dzvents = CdzVents::GetInstance();
221 dzvents->m_bdzVentsExist = false;
222
223#ifdef WIN32
224 m_lua_Dir = szUserDataFolder + "scripts\\lua\\";
225 dzv_Dir = szUserDataFolder + "scripts\\dzVents\\generated_scripts\\";
226 dzvents->m_scriptsDir = szUserDataFolder + "scripts\\dzVents\\scripts\\";
227 dzvents->m_dataDir = szUserDataFolder + "scripts\\dzVents\\data\\";
228 dzvents->m_runtimeDir = szStartupFolder + "dzVents\\runtime\\";
229#else
230 m_lua_Dir = szUserDataFolder + "scripts/lua/";
231 dzv_Dir = szUserDataFolder + "scripts/dzVents/generated_scripts/";
232 dzvents->m_scriptsDir = szUserDataFolder + "scripts/dzVents/scripts/";
233 dzvents->m_dataDir = szUserDataFolder + "scripts/dzVents/data/";
234 dzvents->m_runtimeDir = szStartupFolder + "dzVents/runtime/";
235#endif
236 if (!mkdir_deep(m_lua_Dir.c_str(), 0755))
237 {
238 _log.Log(LOG_NORM, "%s: Created directory %s", __func__, m_lua_Dir.c_str());
239 }
240 if (!mkdir_deep(dzv_Dir.c_str(), 0755))
241 {
242 _log.Log(LOG_NORM, "%s: Created directory %s", __func__, dzv_Dir.c_str());
243 }
244 if (!mkdir_deep(dzvents->m_scriptsDir.c_str(), 0755))
245 {
246 _log.Log(LOG_NORM, "%s: Created directory %s", __func__, dzvents->m_scriptsDir.c_str());
247 }
248 if (!mkdir_deep(dzvents->m_dataDir.c_str(), 0755))
249 {
250 _log.Log(LOG_NORM, "%s: Created directory %s", __func__, dzvents->m_dataDir.c_str());
251 }
252
253 boost::unique_lock<boost::shared_mutex> eventsMutexLock(m_eventsMutex);
254 _log.Log(LOG_STATUS, "EventSystem: reset all events...");
255 m_events.clear();
256
257 std::vector<std::vector<std::string> > result;
258 result = m_sql.safe_query(
259 "SELECT EventRules.ID, EventMaster.Name, EventRules.Conditions, EventRules.Actions, EventMaster.Status, "
260 "EventRules.SequenceNo, EventMaster.Interpreter, EventMaster.Type FROM EventRules "
261 "INNER JOIN EventMaster ON EventRules.EMID = EventMaster.ID ORDER BY EventRules.ID");
262 if (!result.empty())
263 {
264 for (auto &sd : result)
265 {
266 _tEventItem eitem;
267 eitem.ID = std::stoull(sd[0]);
268 eitem.Name = sd[1] + "_" + sd[5];
269 eitem.Interpreter = sd[6];
270 std::transform(sd[7].begin(), sd[7].end(), sd[7].begin(), ::tolower);
271 eitem.Type = sd[7];
272 eitem.Conditions = sd[2];
273 eitem.Actions = sd[3];
274 eitem.EventStatus = atoi(sd[4].c_str());

Callers 6

createEventFunction · 0.80
updateEventFunction · 0.80
deleteEventFunction · 0.80
Cmd_PostSettingsMethod · 0.80
GetSunSettingsMethod · 0.80
Cmd_EventsMethod · 0.80

Calls 14

mkdir_deepFunction · 0.85
DirectoryListingFunction · 0.85
removeFunction · 0.85
c_strMethod · 0.80
safe_queryMethod · 0.80
beginMethod · 0.80
endMethod · 0.80
NotifyMethod · 0.80
LogMethod · 0.45
clearMethod · 0.45
emptyMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected