- Refactored hdb callbacks

SKIPPED:
	psi/julcho.c
This commit is contained in:
koennecke
2008-03-10 11:06:07 +00:00
parent 6b10e0a4e9
commit f512f47b02
14 changed files with 1440 additions and 829 deletions

View File

@ -2,14 +2,33 @@
#include "sics.h"
#include "sicshipadaba.h"
static int LoggerUpdateCallback(void *user, void *conn, pHdb node, hdbValue value) {
Logger *logger = user;
static hdbCallbackReturn LoggerUpdateCallback(pHdb node, void *userData,
pHdbMessage message) {
Logger *logger = userData;
pDynString str;
SConnection *conn = NULL;
hdbValue value;
pHdbDataMessage mm = NULL;
pHdbDataSearch dsm = NULL;
if((dsm = GetHdbDataSearchMessage(message)) != NULL){
if(dsm->testFunc == LoggerUpdateCallback){
dsm->result = userData;
return hdbAbort;
}
return hdbContinue;
}
if((mm = GetHdbUpdateMessage(message)) == NULL){
return hdbContinue;
}
value = *(mm->v);
str = formatValue(value, node);
LoggerWrite(logger, time(NULL), LoggerPeriod(logger), GetCharArray(str));
DeleteDynString(str);
return 1;
return hdbContinue;
}
static int LogSetup(SConnection *pCon, SicsInterp *pSics, void *pData,
@ -73,15 +92,15 @@ static int LogSetup(SConnection *pCon, SicsInterp *pSics, void *pData,
} else {
numeric = 0;
}
logger = FindHdbCallbackData(node, HCBUPDATE, LoggerUpdateCallback, NULL);
logger = FindHdbCallbackData(node, LoggerUpdateCallback, NULL);
if (logger != 0) { /* logger exists already, changed only period */
LoggerSetPeriod(logger, period);
} else {
logger = LoggerMake(name, period, !numeric);
LoggerSetNumeric(logger, numeric);
cb = MakeHipadabaCallback(LoggerUpdateCallback, logger, (void (*)(void *))LoggerKill, -1, NULL);
cb = MakeHipadabaCallback(LoggerUpdateCallback, logger, (void (*)(void *))LoggerKill);
assert(cb);
AppendHipadabaCallback(node, HCBUPDATE, cb);
AppendHipadabaCallback(node, cb);
}
return 1;