- 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

@@ -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,