- Refactored hdb callbacks
SKIPPED: psi/julcho.c
This commit is contained in:
31
logsetup.c
31
logsetup.c
@ -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;
|
||||
|
Reference in New Issue
Block a user