- Refactored hdb callbacks
SKIPPED: psi/julcho.c
This commit is contained in:
@@ -16,19 +16,25 @@
|
||||
#include <dynstring.h>
|
||||
#include <genericcontroller.h>
|
||||
/*--------------------------------------------------------------------------*/
|
||||
static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
||||
hdbValue v){
|
||||
static hdbCallbackReturn GenConSetCallback(pHdb node, void *userData,
|
||||
pHdbMessage message){
|
||||
pSICSOBJ self = (pSICSOBJ)userData;
|
||||
SConnection *pCon = (SConnection *)callData;
|
||||
SConnection *pCon = NULL;
|
||||
pGenController priv = NULL;
|
||||
char command[1024];
|
||||
char value[80];
|
||||
int status, privilege;
|
||||
pDynString data;
|
||||
pHdbDataMessage mm = NULL;
|
||||
|
||||
assert(self != NULL);
|
||||
|
||||
if((mm = GetHdbSetMessage(message)) == NULL){
|
||||
return hdbContinue;
|
||||
}
|
||||
|
||||
priv = (pGenController)self->pPrivate;
|
||||
pCon = mm->callData;
|
||||
|
||||
/*
|
||||
* check rights
|
||||
@@ -43,7 +49,7 @@ static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
||||
privilege = usUser;
|
||||
}
|
||||
if(!SCMatchRights(pCon,privilege)){
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,9 +61,9 @@ static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
||||
if(strlen(value) < 2){
|
||||
if(pCon != NULL){
|
||||
SCWrite(pCon,"ERROR: parameter is read-only",eError);
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -66,10 +72,10 @@ static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
||||
memset(value,0,80);
|
||||
GetHdbProperty(node,"status",value,80);
|
||||
if(strstr(value,"idle") == NULL){
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
SetHdbProperty(node,"status","setting");
|
||||
data = formatValue(v, node);
|
||||
data = formatValue(*(mm->v), node);
|
||||
if(data != NULL){
|
||||
SetHdbProperty(node,"target",GetCharArray(data));
|
||||
DeleteDynString(data);
|
||||
@@ -85,23 +91,29 @@ static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
||||
SCWrite(pCon,"ERROR: generic controller NOT configured",
|
||||
eError);
|
||||
}
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
|
||||
return 1;
|
||||
return hdbContinue;
|
||||
}
|
||||
/*--------------------------------------------------------------------------*/
|
||||
static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
||||
hdbValue v){
|
||||
static hdbCallbackReturn GenConGetCallback(pHdb node, void *userData,
|
||||
pHdbMessage message){
|
||||
pSICSOBJ self = (pSICSOBJ)userData;
|
||||
SConnection *pCon = (SConnection *)callData;
|
||||
SConnection *pCon = NULL;
|
||||
pGenController priv = NULL;
|
||||
char command[1024];
|
||||
char value[256];
|
||||
int status, privilege;
|
||||
pHdbDataMessage mm = NULL;
|
||||
|
||||
assert(self != NULL);
|
||||
|
||||
if((mm = GetHdbGetMessage(message)) == NULL){
|
||||
return hdbContinue;
|
||||
}
|
||||
pCon = mm->callData;
|
||||
|
||||
priv = (pGenController)self->pPrivate;
|
||||
|
||||
/*
|
||||
@@ -110,7 +122,7 @@ static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
||||
memset(value,0,80);
|
||||
GetHdbProperty(node,"status",value,80);
|
||||
if(strstr(value,"idle") == NULL){
|
||||
return 1;
|
||||
return hdbContinue;
|
||||
}
|
||||
SetHdbProperty(node,"status","getting");
|
||||
|
||||
@@ -120,7 +132,7 @@ static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
||||
memset(value,0,256);
|
||||
GetHdbProperty(node,"readCommand",value,255);
|
||||
if(strlen(value) < 2){
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
} else {
|
||||
if(priv->enqueueNode != NULL){
|
||||
priv->enqueueNode(self,pCon, node);
|
||||
@@ -129,17 +141,17 @@ static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
||||
SCWrite(pCon,"ERROR: generic controller connection NOT configured",
|
||||
eError);
|
||||
}
|
||||
return 0;
|
||||
return hdbAbort;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Upper Level GetHipadabaPar will automtaically return the
|
||||
* Upper Level GetHipadabaPar will automatically return the
|
||||
* node value. Which should have been updated through an update
|
||||
* during the execution of enqueueNode
|
||||
*/
|
||||
|
||||
return 1;
|
||||
return hdbContinue;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
static pHdb MakeGenConPar(pSICSOBJ self, char *name, int type, int length){
|
||||
@@ -153,23 +165,20 @@ static pHdb MakeGenConPar(pSICSOBJ self, char *name, int type, int length){
|
||||
|
||||
kalle = MakeHipadabaCallback(GenConSetCallback,
|
||||
self,
|
||||
NULL,
|
||||
-1,
|
||||
NULL);
|
||||
if(kalle == NULL){
|
||||
return NULL;
|
||||
}
|
||||
AppendHipadabaCallback(result,HCBSET, kalle);
|
||||
AppendHipadabaCallback(result,kalle);
|
||||
|
||||
kalle = MakeHipadabaCallback(GenConGetCallback,
|
||||
self,
|
||||
NULL,
|
||||
-1,
|
||||
NULL);
|
||||
|
||||
if(kalle == NULL){
|
||||
return NULL;
|
||||
}
|
||||
AppendHipadabaCallback(result,HCBREAD, kalle);
|
||||
AppendHipadabaCallback(result,kalle);
|
||||
|
||||
SetHdbProperty(result,"priv","manager");
|
||||
SetHdbProperty(result,"readCommand","");
|
||||
@@ -587,13 +596,13 @@ int GenControllerFactory(SConnection *pCon, SicsInterp *pSics,
|
||||
funcValue = makeHdbData(HIPFUNC,1,EnqueFunc);
|
||||
node = MakeSICSHdbPar("enqueue",usUser, funcValue);
|
||||
AddSICSHdbPar(node,"node",usUser,textValue);
|
||||
AppendHipadabaCallback(node,HCBSET,MakeSICSFuncCallback(pNew));
|
||||
AppendHipadabaCallback(node,MakeSICSFuncCallback(pNew));
|
||||
AddHipadabaChild(pNew->objectNode,node,NULL);
|
||||
|
||||
funcValue = makeHdbData(HIPFUNC,1,EnqueHeadFunc);
|
||||
node = MakeSICSHdbPar("enqueuehead",usUser, funcValue);
|
||||
AddSICSHdbPar(node,"node",usUser,textValue);
|
||||
AppendHipadabaCallback(node,HCBSET,MakeSICSFuncCallback(pNew));
|
||||
AppendHipadabaCallback(node,MakeSICSFuncCallback(pNew));
|
||||
AddHipadabaChild(pNew->objectNode,node,NULL);
|
||||
|
||||
status = AddCommand(pSics,
|
||||
|
||||
Reference in New Issue
Block a user