- Refactored hdb callbacks
SKIPPED: psi/julcho.c
This commit is contained in:
2
conman.c
2
conman.c
@ -410,7 +410,7 @@ extern pServer pServ;
|
|||||||
root = GetHipadabaRoot();
|
root = GetHipadabaRoot();
|
||||||
if(root != NULL)
|
if(root != NULL)
|
||||||
{
|
{
|
||||||
InternalRemoveHipadabaCallback(root,pVictim);
|
RemoveConnectionCallbacks(root,pVictim);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -16,19 +16,25 @@
|
|||||||
#include <dynstring.h>
|
#include <dynstring.h>
|
||||||
#include <genericcontroller.h>
|
#include <genericcontroller.h>
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
static hdbCallbackReturn GenConSetCallback(pHdb node, void *userData,
|
||||||
hdbValue v){
|
pHdbMessage message){
|
||||||
pSICSOBJ self = (pSICSOBJ)userData;
|
pSICSOBJ self = (pSICSOBJ)userData;
|
||||||
SConnection *pCon = (SConnection *)callData;
|
SConnection *pCon = NULL;
|
||||||
pGenController priv = NULL;
|
pGenController priv = NULL;
|
||||||
char command[1024];
|
char command[1024];
|
||||||
char value[80];
|
char value[80];
|
||||||
int status, privilege;
|
int status, privilege;
|
||||||
pDynString data;
|
pDynString data;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
|
|
||||||
|
if((mm = GetHdbSetMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
priv = (pGenController)self->pPrivate;
|
priv = (pGenController)self->pPrivate;
|
||||||
|
pCon = mm->callData;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check rights
|
* check rights
|
||||||
@ -43,7 +49,7 @@ static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
|||||||
privilege = usUser;
|
privilege = usUser;
|
||||||
}
|
}
|
||||||
if(!SCMatchRights(pCon,privilege)){
|
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(strlen(value) < 2){
|
||||||
if(pCon != NULL){
|
if(pCon != NULL){
|
||||||
SCWrite(pCon,"ERROR: parameter is read-only",eError);
|
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);
|
memset(value,0,80);
|
||||||
GetHdbProperty(node,"status",value,80);
|
GetHdbProperty(node,"status",value,80);
|
||||||
if(strstr(value,"idle") == NULL){
|
if(strstr(value,"idle") == NULL){
|
||||||
return 0;
|
return hdbAbort;
|
||||||
}
|
}
|
||||||
SetHdbProperty(node,"status","setting");
|
SetHdbProperty(node,"status","setting");
|
||||||
data = formatValue(v, node);
|
data = formatValue(*(mm->v), node);
|
||||||
if(data != NULL){
|
if(data != NULL){
|
||||||
SetHdbProperty(node,"target",GetCharArray(data));
|
SetHdbProperty(node,"target",GetCharArray(data));
|
||||||
DeleteDynString(data);
|
DeleteDynString(data);
|
||||||
@ -85,23 +91,29 @@ static int GenConSetCallback(void *userData, void *callData, pHdb node,
|
|||||||
SCWrite(pCon,"ERROR: generic controller NOT configured",
|
SCWrite(pCon,"ERROR: generic controller NOT configured",
|
||||||
eError);
|
eError);
|
||||||
}
|
}
|
||||||
return 0;
|
return hdbAbort;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
static hdbCallbackReturn GenConGetCallback(pHdb node, void *userData,
|
||||||
hdbValue v){
|
pHdbMessage message){
|
||||||
pSICSOBJ self = (pSICSOBJ)userData;
|
pSICSOBJ self = (pSICSOBJ)userData;
|
||||||
SConnection *pCon = (SConnection *)callData;
|
SConnection *pCon = NULL;
|
||||||
pGenController priv = NULL;
|
pGenController priv = NULL;
|
||||||
char command[1024];
|
char command[1024];
|
||||||
char value[256];
|
char value[256];
|
||||||
int status, privilege;
|
int status, privilege;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
assert(self != NULL);
|
assert(self != NULL);
|
||||||
|
|
||||||
|
if((mm = GetHdbGetMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
pCon = mm->callData;
|
||||||
|
|
||||||
priv = (pGenController)self->pPrivate;
|
priv = (pGenController)self->pPrivate;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -110,7 +122,7 @@ static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
|||||||
memset(value,0,80);
|
memset(value,0,80);
|
||||||
GetHdbProperty(node,"status",value,80);
|
GetHdbProperty(node,"status",value,80);
|
||||||
if(strstr(value,"idle") == NULL){
|
if(strstr(value,"idle") == NULL){
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
SetHdbProperty(node,"status","getting");
|
SetHdbProperty(node,"status","getting");
|
||||||
|
|
||||||
@ -120,7 +132,7 @@ static int GenConGetCallback(void *userData, void *callData, pHdb node,
|
|||||||
memset(value,0,256);
|
memset(value,0,256);
|
||||||
GetHdbProperty(node,"readCommand",value,255);
|
GetHdbProperty(node,"readCommand",value,255);
|
||||||
if(strlen(value) < 2){
|
if(strlen(value) < 2){
|
||||||
return 0;
|
return hdbAbort;
|
||||||
} else {
|
} else {
|
||||||
if(priv->enqueueNode != NULL){
|
if(priv->enqueueNode != NULL){
|
||||||
priv->enqueueNode(self,pCon, node);
|
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",
|
SCWrite(pCon,"ERROR: generic controller connection NOT configured",
|
||||||
eError);
|
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
|
* node value. Which should have been updated through an update
|
||||||
* during the execution of enqueueNode
|
* during the execution of enqueueNode
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static pHdb MakeGenConPar(pSICSOBJ self, char *name, int type, int length){
|
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,
|
kalle = MakeHipadabaCallback(GenConSetCallback,
|
||||||
self,
|
self,
|
||||||
NULL,
|
|
||||||
-1,
|
|
||||||
NULL);
|
NULL);
|
||||||
if(kalle == NULL){
|
if(kalle == NULL){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
AppendHipadabaCallback(result,HCBSET, kalle);
|
AppendHipadabaCallback(result,kalle);
|
||||||
|
|
||||||
kalle = MakeHipadabaCallback(GenConGetCallback,
|
kalle = MakeHipadabaCallback(GenConGetCallback,
|
||||||
self,
|
self,
|
||||||
NULL,
|
|
||||||
-1,
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if(kalle == NULL){
|
if(kalle == NULL){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
AppendHipadabaCallback(result,HCBREAD, kalle);
|
AppendHipadabaCallback(result,kalle);
|
||||||
|
|
||||||
SetHdbProperty(result,"priv","manager");
|
SetHdbProperty(result,"priv","manager");
|
||||||
SetHdbProperty(result,"readCommand","");
|
SetHdbProperty(result,"readCommand","");
|
||||||
@ -587,13 +596,13 @@ int GenControllerFactory(SConnection *pCon, SicsInterp *pSics,
|
|||||||
funcValue = makeHdbData(HIPFUNC,1,EnqueFunc);
|
funcValue = makeHdbData(HIPFUNC,1,EnqueFunc);
|
||||||
node = MakeSICSHdbPar("enqueue",usUser, funcValue);
|
node = MakeSICSHdbPar("enqueue",usUser, funcValue);
|
||||||
AddSICSHdbPar(node,"node",usUser,textValue);
|
AddSICSHdbPar(node,"node",usUser,textValue);
|
||||||
AppendHipadabaCallback(node,HCBSET,MakeSICSFuncCallback(pNew));
|
AppendHipadabaCallback(node,MakeSICSFuncCallback(pNew));
|
||||||
AddHipadabaChild(pNew->objectNode,node,NULL);
|
AddHipadabaChild(pNew->objectNode,node,NULL);
|
||||||
|
|
||||||
funcValue = makeHdbData(HIPFUNC,1,EnqueHeadFunc);
|
funcValue = makeHdbData(HIPFUNC,1,EnqueHeadFunc);
|
||||||
node = MakeSICSHdbPar("enqueuehead",usUser, funcValue);
|
node = MakeSICSHdbPar("enqueuehead",usUser, funcValue);
|
||||||
AddSICSHdbPar(node,"node",usUser,textValue);
|
AddSICSHdbPar(node,"node",usUser,textValue);
|
||||||
AppendHipadabaCallback(node,HCBSET,MakeSICSFuncCallback(pNew));
|
AppendHipadabaCallback(node,MakeSICSFuncCallback(pNew));
|
||||||
AddHipadabaChild(pNew->objectNode,node,NULL);
|
AddHipadabaChild(pNew->objectNode,node,NULL);
|
||||||
|
|
||||||
status = AddCommand(pSics,
|
status = AddCommand(pSics,
|
||||||
|
438
hipadaba.c
438
hipadaba.c
@ -14,6 +14,47 @@
|
|||||||
|
|
||||||
#define ABS(x) (x < 0 ? -(x) : (x))
|
#define ABS(x) (x < 0 ? -(x) : (x))
|
||||||
#define HDBMAGICK 77119900
|
#define HDBMAGICK 77119900
|
||||||
|
/*================== Message Stuff ========================================*/
|
||||||
|
static char set[] = {"set"};
|
||||||
|
static char get[] = {"get"};
|
||||||
|
static char update[] = {"update"};
|
||||||
|
static char treeChange[] = {"treeChange"};
|
||||||
|
static char dataSearch[] = {"dataSearch"};
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
pHdbDataMessage GetHdbSetMessage(pHdbMessage toTest){
|
||||||
|
if(toTest->type == set){
|
||||||
|
return (pHdbDataMessage)toTest;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
pHdbDataMessage GetHdbGetMessage(pHdbMessage toTest){
|
||||||
|
if(toTest->type == get){
|
||||||
|
return (pHdbDataMessage)toTest;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
pHdbDataMessage GetHdbUpdateMessage(pHdbMessage toTest){
|
||||||
|
if(toTest->type == update){
|
||||||
|
return (pHdbDataMessage)toTest;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
pHdbTreeChangeMessage GetHdbTreeChangeMessage(pHdbMessage toTest){
|
||||||
|
if(toTest->type == treeChange){
|
||||||
|
return (pHdbTreeChangeMessage)toTest;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
pHdbDataSearch GetHdbDataSearchMessage(pHdbMessage toTest){
|
||||||
|
if(toTest->type == dataSearch){
|
||||||
|
return (pHdbDataSearch)toTest;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
/*================== internal functions ===================================*/
|
/*================== internal functions ===================================*/
|
||||||
void DeleteCallbackChain(pHdbCallback root){
|
void DeleteCallbackChain(pHdbCallback root){
|
||||||
pHdbCallback current = NULL, thisEntry;
|
pHdbCallback current = NULL, thisEntry;
|
||||||
@ -28,6 +69,17 @@ void DeleteCallbackChain(pHdbCallback root){
|
|||||||
free(thisEntry);
|
free(thisEntry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
void RecurseCallbackChains(pHdb node, pHdbMessage message){
|
||||||
|
pHdb current = NULL;
|
||||||
|
|
||||||
|
InvokeCallbackChain(node,message);
|
||||||
|
current = node->child;
|
||||||
|
while(current != NULL){
|
||||||
|
RecurseCallbackChains(current,message);
|
||||||
|
current = current->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
void DeleteNodeData(pHdb node){
|
void DeleteNodeData(pHdb node){
|
||||||
pHdb tmp = NULL;
|
pHdb tmp = NULL;
|
||||||
@ -35,10 +87,7 @@ void DeleteNodeData(pHdb node){
|
|||||||
if(node == NULL){
|
if(node == NULL){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
DeleteCallbackChain(node->writeCallbacks);
|
DeleteCallbackChain(node->callBackChain);
|
||||||
DeleteCallbackChain(node->updateCallbacks);
|
|
||||||
DeleteCallbackChain(node->readCallbacks);
|
|
||||||
DeleteCallbackChain(node->treeChangeCallbacks);
|
|
||||||
if(node->properties != NULL){
|
if(node->properties != NULL){
|
||||||
DeleteStringDict(node->properties);
|
DeleteStringDict(node->properties);
|
||||||
}
|
}
|
||||||
@ -56,26 +105,83 @@ void DeleteNodeData(pHdb node){
|
|||||||
}
|
}
|
||||||
free(node);
|
free(node);
|
||||||
}
|
}
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
static pHdbCallback CleanCallbackChain(pHdbCallback chain){
|
||||||
|
pHdbCallback head = chain;
|
||||||
|
pHdbCallback current = chain;
|
||||||
|
pHdbCallback next;
|
||||||
|
|
||||||
|
while(current != NULL){
|
||||||
|
if(current->killFlag == 1){
|
||||||
|
next = current->next;
|
||||||
|
if(current == head){
|
||||||
|
head = next;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* unlink
|
||||||
|
*/
|
||||||
|
if(next != NULL){
|
||||||
|
next->previous = current->previous;
|
||||||
|
}
|
||||||
|
if(current->previous != NULL){
|
||||||
|
current->previous->next = next;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* delete
|
||||||
|
*/
|
||||||
|
if(current->killFunc != NULL){
|
||||||
|
current->killFunc(current->userData);
|
||||||
|
}
|
||||||
|
free(current);
|
||||||
|
/*
|
||||||
|
* move on
|
||||||
|
*/
|
||||||
|
current = next;
|
||||||
|
} else {
|
||||||
|
current = current->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return head;
|
||||||
|
}
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
int InvokeCallbackChain(pHdbCallback root, pHdb node,
|
int InvokeCallbackChain(pHdb node, pHdbMessage message){
|
||||||
void *callData, hdbValue v){
|
pHdbCallback current = node->callBackChain;
|
||||||
pHdbCallback current = root;
|
hdbCallbackReturn status;
|
||||||
int status;
|
int killFlag = 0;
|
||||||
|
|
||||||
while(current != NULL){
|
while(current != NULL){
|
||||||
status = current->userCallback(current->userData,callData,
|
status = current->userCallback(node, current->userData,message);
|
||||||
node,v);
|
switch(status){
|
||||||
if(status != 1){
|
case hdbAbort:
|
||||||
return status;
|
return 0;
|
||||||
|
break;
|
||||||
|
case hdbKill:
|
||||||
|
current->killFlag = 1;
|
||||||
|
killFlag = 1;
|
||||||
|
break;
|
||||||
|
case hdbContinue:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
current = current->next;
|
current = current->next;
|
||||||
}
|
}
|
||||||
|
if(killFlag == 1){
|
||||||
|
node->callBackChain = CleanCallbackChain(node->callBackChain);
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
static void SendTreeChangeMessage(pHdb node, void *callData){
|
||||||
|
hdbTreeChangeMessage treeChangeMes;
|
||||||
|
treeChangeMes.type = treeChange;
|
||||||
|
treeChangeMes.callData = callData;
|
||||||
|
InvokeCallbackChain(node, (pHdbMessage)&treeChangeMes);
|
||||||
|
}
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
void RemoveHdbNodeFromParent(pHdb node, void *callData){
|
void RemoveHdbNodeFromParent(pHdb node, void *callData){
|
||||||
pHdb parent = NULL;
|
pHdb parent = NULL;
|
||||||
pHdb current = NULL;
|
pHdb current = NULL;
|
||||||
|
hdbTreeChangeMessage treeChangeMes;
|
||||||
|
|
||||||
parent = node->mama;
|
parent = node->mama;
|
||||||
if(parent != NULL){
|
if(parent != NULL){
|
||||||
@ -88,8 +194,7 @@ void RemoveHdbNodeFromParent(pHdb node, void *callData){
|
|||||||
}
|
}
|
||||||
current->next = current->next->next;
|
current->next = current->next->next;
|
||||||
}
|
}
|
||||||
InvokeCallbackChain(parent->treeChangeCallbacks,
|
SendTreeChangeMessage(parent,callData);
|
||||||
parent,callData,parent->value);
|
|
||||||
node->mama = NULL;
|
node->mama = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,97 +222,6 @@ static void RemoveCallbackNode(pHdbCallback victim){
|
|||||||
}
|
}
|
||||||
free(victim);
|
free(victim);
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------
|
|
||||||
* This code is ugly: the problem is fixing up the start of the chain.
|
|
||||||
* Think about it and improve
|
|
||||||
* ----------------------------------------------------------------------*/
|
|
||||||
static pHdbCallback DeleteForID(pHdbCallback root, int id){
|
|
||||||
pHdbCallback current = root;
|
|
||||||
pHdbCallback tmp = NULL;
|
|
||||||
pHdbCallback result = NULL;
|
|
||||||
|
|
||||||
if(root == NULL){
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* delete at the start of the chain
|
|
||||||
*/
|
|
||||||
result = root;
|
|
||||||
while(result->id == id){
|
|
||||||
tmp = result;
|
|
||||||
result = result->next;
|
|
||||||
RemoveCallbackNode(tmp);
|
|
||||||
if(result == NULL){
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* delete nodes in the middle of the chain
|
|
||||||
*/
|
|
||||||
current = result;
|
|
||||||
while(current != NULL){
|
|
||||||
if(current->id == id){
|
|
||||||
tmp = current;
|
|
||||||
current = (pHdbCallback)current->next;
|
|
||||||
RemoveCallbackNode(tmp);
|
|
||||||
} else {
|
|
||||||
current = (pHdbCallback)current->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
/*-----------------------------------------------------------------------*/
|
|
||||||
static pHdbCallback DeleteForInternalID(pHdbCallback root, void *id){
|
|
||||||
pHdbCallback current = root;
|
|
||||||
pHdbCallback tmp = NULL;
|
|
||||||
pHdbCallback result = NULL;
|
|
||||||
|
|
||||||
if(root == NULL || id == NULL){
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* delete at the start of the chain
|
|
||||||
*/
|
|
||||||
result = root;
|
|
||||||
while(result->internalID == id){
|
|
||||||
tmp = result;
|
|
||||||
result = result->next;
|
|
||||||
if(tmp->killFunc != NULL){
|
|
||||||
tmp->killFunc(tmp->userData);
|
|
||||||
}
|
|
||||||
free(tmp);
|
|
||||||
if(result == NULL){
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* delete nodes in the middle of the chain
|
|
||||||
*/
|
|
||||||
current = result;
|
|
||||||
while(current != NULL){
|
|
||||||
if(current->internalID == id){
|
|
||||||
if(current->next != NULL){
|
|
||||||
current->next->previous = current->previous;
|
|
||||||
}
|
|
||||||
if(current->previous != NULL){
|
|
||||||
current->previous->next = current->next;
|
|
||||||
}
|
|
||||||
tmp = current;
|
|
||||||
current = (pHdbCallback)current->next;
|
|
||||||
if(tmp->killFunc != NULL){
|
|
||||||
tmp->killFunc(tmp->userData);
|
|
||||||
}
|
|
||||||
free(tmp);
|
|
||||||
} else {
|
|
||||||
current = (pHdbCallback)current->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
char *hdbTrim(char *str)
|
char *hdbTrim(char *str)
|
||||||
{
|
{
|
||||||
@ -620,8 +634,7 @@ void AddHipadabaChild(pHdb parent, pHdb child, void *callData){
|
|||||||
child->next = NULL;
|
child->next = NULL;
|
||||||
prev->next = child;
|
prev->next = child;
|
||||||
}
|
}
|
||||||
InvokeCallbackChain(parent->treeChangeCallbacks,
|
SendTreeChangeMessage(parent,callData);
|
||||||
parent,callData,parent->value);
|
|
||||||
}
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
void DeleteHipadabaNode(pHdb node, void *callData){
|
void DeleteHipadabaNode(pHdb node, void *callData){
|
||||||
@ -730,8 +743,7 @@ char *GetHipadabaPath(pHdb node){
|
|||||||
}
|
}
|
||||||
/*==================== Callback Functions ==================================*/
|
/*==================== Callback Functions ==================================*/
|
||||||
pHdbCallback MakeHipadabaCallback(hdbCallbackFunction func,
|
pHdbCallback MakeHipadabaCallback(hdbCallbackFunction func,
|
||||||
void *userData, killUserData killFunc,
|
void *userData, killUserData killFunc){
|
||||||
int id, void *internalID){
|
|
||||||
pHdbCallback pNew = NULL;
|
pHdbCallback pNew = NULL;
|
||||||
|
|
||||||
assert(func != NULL);
|
assert(func != NULL);
|
||||||
@ -745,51 +757,17 @@ pHdbCallback MakeHipadabaCallback(hdbCallbackFunction func,
|
|||||||
pNew->userCallback = func;
|
pNew->userCallback = func;
|
||||||
pNew->userData = userData;
|
pNew->userData = userData;
|
||||||
pNew->killFunc = killFunc;
|
pNew->killFunc = killFunc;
|
||||||
pNew->id = id;
|
|
||||||
pNew->internalID = internalID;
|
|
||||||
return pNew;
|
return pNew;
|
||||||
}
|
}
|
||||||
/*-------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------*/
|
||||||
void AppendHipadabaCallback(pHdb node, int type, pHdbCallback newCB){
|
void AppendHipadabaCallback(pHdb node, pHdbCallback newCB){
|
||||||
pHdbCallback current = NULL;
|
pHdbCallback current = NULL;
|
||||||
|
|
||||||
assert(node);
|
assert(node);
|
||||||
switch(type){
|
current = node->callBackChain;
|
||||||
case HCBSET:
|
if(current == NULL){
|
||||||
if(node->writeCallbacks == NULL){
|
node->callBackChain = newCB;
|
||||||
node->writeCallbacks = newCB;
|
return;
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
current = node->writeCallbacks;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HCBUPDATE:
|
|
||||||
if(node->updateCallbacks == NULL){
|
|
||||||
node->updateCallbacks = newCB;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
current = node->updateCallbacks;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HCBREAD:
|
|
||||||
if(node->readCallbacks == NULL){
|
|
||||||
node->readCallbacks = newCB;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
current = node->readCallbacks;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HCBTREE:
|
|
||||||
if(node->treeChangeCallbacks == NULL){
|
|
||||||
node->treeChangeCallbacks = newCB;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
current = node->treeChangeCallbacks;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
assert(0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if(current != NULL){
|
if(current != NULL){
|
||||||
while(current->next != NULL){
|
while(current->next != NULL){
|
||||||
@ -800,101 +778,28 @@ void AppendHipadabaCallback(pHdb node, int type, pHdbCallback newCB){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void PrependHipadabaCallback(pHdb node, int type, pHdbCallback newCB){
|
void PrependHipadabaCallback(pHdb node,pHdbCallback newCB){
|
||||||
switch(type){
|
assert(node != NULL);
|
||||||
case HCBSET:
|
|
||||||
if(node->writeCallbacks == NULL){
|
newCB->next = node->callBackChain;
|
||||||
node->writeCallbacks = newCB;
|
if(node->callBackChain != NULL){
|
||||||
return;
|
node->callBackChain->previous = newCB;
|
||||||
} else {
|
|
||||||
newCB->next = node->writeCallbacks;
|
|
||||||
node->writeCallbacks->previous = newCB;
|
|
||||||
node->writeCallbacks = newCB;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HCBUPDATE:
|
|
||||||
if(node->updateCallbacks == NULL){
|
|
||||||
node->updateCallbacks = newCB;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
newCB->next = node->updateCallbacks;
|
|
||||||
node->updateCallbacks->previous = newCB;
|
|
||||||
node->updateCallbacks = newCB;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HCBREAD:
|
|
||||||
if(node->readCallbacks == NULL){
|
|
||||||
node->readCallbacks = newCB;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
newCB->next = node->readCallbacks;
|
|
||||||
node->readCallbacks->previous = newCB;
|
|
||||||
node->readCallbacks = newCB;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HCBTREE:
|
|
||||||
if(node->treeChangeCallbacks == NULL){
|
|
||||||
node->treeChangeCallbacks = newCB;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
newCB->next = node->treeChangeCallbacks;
|
|
||||||
node->treeChangeCallbacks->previous = newCB;
|
|
||||||
node->treeChangeCallbacks = newCB;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
assert(0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
node->callBackChain = newCB;
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
void RemoveHipadabaCallback(pHdb root, int id){
|
void *FindHdbCallbackData(pHdb node, hdbCallbackFunction func,
|
||||||
pHdb current = NULL;
|
void *userPtr){
|
||||||
|
hdbDataSearch dsm;
|
||||||
|
|
||||||
root->writeCallbacks = DeleteForID(root->writeCallbacks,id);
|
dsm.type = dataSearch;
|
||||||
root->updateCallbacks = DeleteForID(root->updateCallbacks,id);
|
dsm.testFunc = func;
|
||||||
root->readCallbacks = DeleteForID(root->readCallbacks,id);
|
dsm.testPtr = userPtr;
|
||||||
root->treeChangeCallbacks = DeleteForID(root->treeChangeCallbacks,id);
|
dsm.result = NULL;
|
||||||
|
|
||||||
current = root->child;
|
InvokeCallbackChain(node, (pHdbMessage)&dsm);
|
||||||
while(current != NULL){
|
return dsm.result;
|
||||||
RemoveHipadabaCallback(current,id);
|
|
||||||
current = current->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
void InternalRemoveHipadabaCallback(pHdb root, void *internalID){
|
|
||||||
pHdb current = NULL;
|
|
||||||
|
|
||||||
root->writeCallbacks = DeleteForInternalID(root->writeCallbacks,internalID);
|
|
||||||
root->updateCallbacks = DeleteForInternalID(root->updateCallbacks,internalID);
|
|
||||||
root->readCallbacks = DeleteForInternalID(root->readCallbacks,internalID);
|
|
||||||
root->treeChangeCallbacks = DeleteForInternalID(root->treeChangeCallbacks,internalID);
|
|
||||||
|
|
||||||
current = root->child;
|
|
||||||
while(current != NULL){
|
|
||||||
InternalRemoveHipadabaCallback(current,internalID);
|
|
||||||
current = current->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
void *FindHdbCallbackData(pHdb node, int type, hdbCallbackFunction func
|
|
||||||
, void *internalID) {
|
|
||||||
pHdbCallback cb;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case HCBSET: cb = node->writeCallbacks; break;
|
|
||||||
case HCBUPDATE: cb = node->updateCallbacks; break;
|
|
||||||
case HCBREAD: cb = node->readCallbacks; break;
|
|
||||||
case HCBTREE: cb = node->treeChangeCallbacks; break;
|
|
||||||
}
|
|
||||||
while (cb != NULL) {
|
|
||||||
if (cb->internalID == internalID && cb->userCallback == func) {
|
|
||||||
return cb->userData;
|
|
||||||
}
|
|
||||||
cb = cb->next;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
/*=================== parameter interface ====================================*/
|
/*=================== parameter interface ====================================*/
|
||||||
static int canCopy(hdbValue *source, hdbValue *target){
|
static int canCopy(hdbValue *source, hdbValue *target){
|
||||||
@ -990,32 +895,39 @@ int copyHdbValue(hdbValue *source, hdbValue *target){
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static int SendDataMessage(pHdb node, char *type,
|
||||||
|
hdbValue v, void *callData){
|
||||||
|
hdbDataMessage dataMes;
|
||||||
|
|
||||||
|
if(strstr(type,"set") != NULL){
|
||||||
|
dataMes.type = set;
|
||||||
|
} else if(strstr(type,"get") != NULL){
|
||||||
|
dataMes.type = get;
|
||||||
|
} else if(strstr(type,"update") != NULL){
|
||||||
|
dataMes.type = update;
|
||||||
|
}
|
||||||
|
dataMes.v = &v;
|
||||||
|
dataMes.callData = callData;
|
||||||
|
return InvokeCallbackChain(node, (pHdbMessage)&dataMes);
|
||||||
|
}
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
int SetHipadabaPar(pHdb node, hdbValue v, void *callData){
|
int SetHipadabaPar(pHdb node, hdbValue v, void *callData){
|
||||||
int status;
|
return SendDataMessage(node, set, v,callData);
|
||||||
|
|
||||||
status = InvokeCallbackChain(node->writeCallbacks, node, callData, v);
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
int UpdateHipadabaPar(pHdb node, hdbValue v, void *callData){
|
int UpdateHipadabaPar(pHdb node, hdbValue v, void *callData){
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = InvokeCallbackChain(node->updateCallbacks, node, callData, v);
|
status = SendDataMessage(node, update, v,callData);
|
||||||
if(status != 1 ){
|
if(status == 1){
|
||||||
return status;
|
copyHdbValue(&v,&node->value);
|
||||||
}
|
}
|
||||||
copyHdbValue(&v,&node->value);
|
return status;
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
int NotifyHipadabaPar(pHdb node,void *callData){
|
int NotifyHipadabaPar(pHdb node,void *callData){
|
||||||
int status;
|
SendDataMessage(node, update, node->value,callData);
|
||||||
|
|
||||||
status = InvokeCallbackChain(node->updateCallbacks, node, callData, node->value);
|
|
||||||
if(status != 1 ){
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
@ -1024,7 +936,8 @@ int GetHipadabaPar(pHdb node, hdbValue *v, void *callData){
|
|||||||
|
|
||||||
v->dataType = node->value.dataType;
|
v->dataType = node->value.dataType;
|
||||||
v->v.text = NULL; /* this sets all pointers in the union to NULL */
|
v->v.text = NULL; /* this sets all pointers in the union to NULL */
|
||||||
status = InvokeCallbackChain(node->readCallbacks, node, callData, *v);
|
|
||||||
|
status = SendDataMessage(node, get, *v,callData);
|
||||||
if(status != 1 ){
|
if(status != 1 ){
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -1061,10 +974,8 @@ int SetHdbPar(pHdb node, int dataType, void *data, int length,
|
|||||||
}
|
}
|
||||||
|
|
||||||
v = makeHdbData(dataType, length, data);
|
v = makeHdbData(dataType, length, data);
|
||||||
status = InvokeCallbackChain(node->writeCallbacks, node, callData, v);
|
status = SetHipadabaPar(node, v, callData);
|
||||||
if(status == 1) {
|
ReleaseHdbValue(&v);
|
||||||
copyHdbValue(&v,&node->value);
|
|
||||||
}
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
@ -1085,11 +996,8 @@ int UpdateHdbPar(pHdb node, int dataType, void *data, int length,
|
|||||||
}
|
}
|
||||||
|
|
||||||
v = makeHdbData(dataType,length,data);
|
v = makeHdbData(dataType,length,data);
|
||||||
|
status = UpdateHipadabaPar(node,v,callData);
|
||||||
status = InvokeCallbackChain(node->updateCallbacks, node, callData, v);
|
ReleaseHdbValue(&v);
|
||||||
if(status == 1) {
|
|
||||||
copyHdbValue(&v,&node->value);
|
|
||||||
}
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
@ -1106,7 +1014,7 @@ int GetHdbPar(pHdb node, int dataType, void *data, int length,
|
|||||||
return HDBLENGTHMISMATCH;
|
return HDBLENGTHMISMATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = InvokeCallbackChain(node->readCallbacks, node, callData, v);
|
status = GetHipadabaPar(node, &v, callData);
|
||||||
if(status != 1 ){
|
if(status != 1 ){
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
131
hipadaba.h
131
hipadaba.h
@ -24,6 +24,8 @@
|
|||||||
* Added treeChange callback, Mark Koennecke, November 2006
|
* Added treeChange callback, Mark Koennecke, November 2006
|
||||||
*
|
*
|
||||||
* Added support for properties, Mark Koennecke, January 2007
|
* Added support for properties, Mark Koennecke, January 2007
|
||||||
|
*
|
||||||
|
* Refactored callback handling, Markus Zolliker, Mark Koennecke, March 2008
|
||||||
*/
|
*/
|
||||||
#ifndef HIPADABA
|
#ifndef HIPADABA
|
||||||
#define HIPADABA
|
#define HIPADABA
|
||||||
@ -40,11 +42,6 @@
|
|||||||
#define HIPFLOATVARAR 6
|
#define HIPFLOATVARAR 6
|
||||||
#define HIPOBJ 7
|
#define HIPOBJ 7
|
||||||
#define HIPFUNC 8
|
#define HIPFUNC 8
|
||||||
/* -------- callback types */
|
|
||||||
#define HCBSET 0
|
|
||||||
#define HCBUPDATE 1
|
|
||||||
#define HCBREAD 2
|
|
||||||
#define HCBTREE 3
|
|
||||||
/*--------- error codes */
|
/*--------- error codes */
|
||||||
#define HDBTYPEMISMATCH -7701
|
#define HDBTYPEMISMATCH -7701
|
||||||
#define HDBLENGTHMISMATCH -7702
|
#define HDBLENGTHMISMATCH -7702
|
||||||
@ -68,29 +65,87 @@ typedef struct __hipadaba {
|
|||||||
struct __hipadaba *mama;
|
struct __hipadaba *mama;
|
||||||
struct __hipadaba *child;
|
struct __hipadaba *child;
|
||||||
struct __hipadaba *next;
|
struct __hipadaba *next;
|
||||||
struct __hdbcallback *writeCallbacks;
|
struct __hdbcallback *callBackChain;
|
||||||
struct __hdbcallback *updateCallbacks;
|
|
||||||
struct __hdbcallback *readCallbacks;
|
|
||||||
struct __hdbcallback *treeChangeCallbacks;
|
|
||||||
char *name;
|
char *name;
|
||||||
hdbValue value;
|
hdbValue value;
|
||||||
int protected;
|
int protected;
|
||||||
pStringDict properties;
|
pStringDict properties;
|
||||||
}Hdb, *pHdb;
|
}Hdb, *pHdb;
|
||||||
|
/*-------------- return values for callback functions -------------------------*/
|
||||||
|
typedef enum {hdbContinue,
|
||||||
|
hdbAbort,
|
||||||
|
hdbKill } hdbCallbackReturn;
|
||||||
|
/*======================== Messages ===========================================*/
|
||||||
|
typedef struct __hdbMessage {
|
||||||
|
char *type;
|
||||||
|
} hdbMessage, *pHdbMessage;
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
typedef struct {
|
||||||
|
char *type;
|
||||||
|
hdbValue *v;
|
||||||
|
void *callData;
|
||||||
|
}hdbDataMessage, *pHdbDataMessage;
|
||||||
/*-------------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------------*/
|
||||||
typedef int (*hdbCallbackFunction)(void *userData, void *callData,
|
typedef struct {
|
||||||
pHdb currentNode, hdbValue v);
|
char *type;
|
||||||
|
void *callData;
|
||||||
|
}hdbTreeChangeMessage, *pHdbTreeChangeMessage;
|
||||||
|
/*-------------------------------------------------------------------------------*/
|
||||||
|
typedef hdbCallbackReturn (*hdbCallbackFunction)(pHdb currentNode,
|
||||||
|
void *userData,
|
||||||
|
pHdbMessage message);
|
||||||
|
|
||||||
typedef void (*killUserData)(void *data);
|
typedef void (*killUserData)(void *data);
|
||||||
/*-------------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------------*/
|
||||||
typedef struct __hdbcallback {
|
typedef struct __hdbcallback {
|
||||||
void *userData;
|
void *userData;
|
||||||
killUserData killFunc;
|
killUserData killFunc;
|
||||||
hdbCallbackFunction userCallback;
|
hdbCallbackFunction userCallback;
|
||||||
int id;
|
int killFlag;
|
||||||
void *internalID;
|
|
||||||
struct __hdbcallback *next;
|
struct __hdbcallback *next;
|
||||||
struct __hdbcallback *previous;
|
struct __hdbcallback *previous;
|
||||||
}hdbCallback, *pHdbCallback;
|
}hdbCallback, *pHdbCallback;
|
||||||
|
/*--------------- another message: must be here for seqeunce --------------------*/
|
||||||
|
typedef struct {
|
||||||
|
char *type;
|
||||||
|
hdbCallbackFunction testFunc;
|
||||||
|
void *testPtr;
|
||||||
|
void *result;
|
||||||
|
}hdbDataSearch, *pHdbDataSearch;
|
||||||
|
/*============= Message Test Functions ==========================================*/
|
||||||
|
/**
|
||||||
|
* Test a message if it is a set message
|
||||||
|
* @param toTest The message to test.
|
||||||
|
* @return NULL if the message is no set message or a message pointer if it is.
|
||||||
|
*/
|
||||||
|
pHdbDataMessage GetHdbSetMessage(pHdbMessage toTest);
|
||||||
|
/**
|
||||||
|
* Test a message if it is a set message
|
||||||
|
* @param toTest The message to test.
|
||||||
|
* @return NULL if the message is no set message or a message pointer if it is.
|
||||||
|
*/
|
||||||
|
pHdbDataMessage GetHdbGetMessage(pHdbMessage toTest);
|
||||||
|
/**
|
||||||
|
* Test a message if it is a update message
|
||||||
|
* @param toTest The message to test.
|
||||||
|
* @return NULL if the message is no update message or a message pointer if
|
||||||
|
* it is.
|
||||||
|
*/
|
||||||
|
pHdbDataMessage GetHdbUpdateMessage(pHdbMessage toTest);
|
||||||
|
/**
|
||||||
|
* Test a message if it is a tree change message
|
||||||
|
* @param toTest The message to test.
|
||||||
|
* @return NULL if the message is no tree change message or a message
|
||||||
|
* pointer if it is.
|
||||||
|
*/
|
||||||
|
pHdbTreeChangeMessage GetHdbTreeChangeMessage(pHdbMessage toTest);
|
||||||
|
/**
|
||||||
|
* Test a message if it is a data search message
|
||||||
|
* @param toTest The message to test.
|
||||||
|
* @return NULL if the message is no data search message or a message
|
||||||
|
* pointer if it is.
|
||||||
|
*/
|
||||||
|
pHdbDataSearch GetHdbDataSearchMessage(pHdbMessage toTest);
|
||||||
/*======================== Function protoypes: hdbData ========================*/
|
/*======================== Function protoypes: hdbData ========================*/
|
||||||
hdbValue makeHdbValue(int datatype, int length);
|
hdbValue makeHdbValue(int datatype, int length);
|
||||||
/**
|
/**
|
||||||
@ -231,11 +286,6 @@ char *GetHipadabaPath(pHdb node);
|
|||||||
* @param callData User data for the tree change callback
|
* @param callData User data for the tree change callback
|
||||||
*/
|
*/
|
||||||
void RemoveHdbNodeFromParent(pHdb node, void *callData);
|
void RemoveHdbNodeFromParent(pHdb node, void *callData);
|
||||||
/**
|
|
||||||
* delete a callback chain
|
|
||||||
* @param root The callback chain to delete
|
|
||||||
*/
|
|
||||||
void DeleteCallbackChain(pHdbCallback root);
|
|
||||||
/**
|
/**
|
||||||
* count the numbers of children in thie Hdb node
|
* count the numbers of children in thie Hdb node
|
||||||
* @param node The node to count children for
|
* @param node The node to count children for
|
||||||
@ -249,50 +299,35 @@ int CountHdbChildren(pHdb node);
|
|||||||
* @param userData userData to be associated with this callback. Can be NULL.
|
* @param userData userData to be associated with this callback. Can be NULL.
|
||||||
* @param killFunc A function for freeing the userData. Can be NULL, then it will
|
* @param killFunc A function for freeing the userData. Can be NULL, then it will
|
||||||
* not be invoked
|
* not be invoked
|
||||||
* @param id An ID associated with this callback
|
|
||||||
* @param internalID Another ID to be associated with this callback. Typically a
|
|
||||||
* reference to the owner object responsible for deleting the callback.
|
|
||||||
* @return A new suitabaly initialised callback structure or NULL when required elements
|
* @return A new suitabaly initialised callback structure or NULL when required elements
|
||||||
* are missing or there is nor memory.
|
* are missing or there is nor memory.
|
||||||
*/
|
*/
|
||||||
pHdbCallback MakeHipadabaCallback(hdbCallbackFunction func,
|
pHdbCallback MakeHipadabaCallback(hdbCallbackFunction func,
|
||||||
void *userData, killUserData killFunc,
|
void *userData, killUserData killFunc);
|
||||||
int id, void *internalID);
|
|
||||||
/**
|
/**
|
||||||
* add a callback at the end of the callback chain
|
* add a callback at the end of the callback chain
|
||||||
* @param node The node to which to append the callback
|
* @param node The node to which to append the callback
|
||||||
* @param type the type of the callback to append
|
* @param type the type of the callback to append
|
||||||
* @param newCB The callback to append
|
* @param newCB The callback to append
|
||||||
*/
|
*/
|
||||||
void AppendHipadabaCallback(pHdb node,int type, pHdbCallback newCB);
|
void AppendHipadabaCallback(pHdb node,pHdbCallback newCB);
|
||||||
/**
|
/**
|
||||||
* add a callback at the head of the callback chain
|
* add a callback at the head of the callback chain
|
||||||
* @param node The node to which to append the callback
|
* @param node The node to which to append the callback
|
||||||
* @param type the type of the callback to append
|
* @param type the type of the callback to append
|
||||||
* @param newCB The callback prepend
|
* @param newCB The callback prepend
|
||||||
*/
|
*/
|
||||||
void PrependHipadabaCallback(pHdb node, int type, pHdbCallback newCB);
|
void PrependHipadabaCallback(pHdb node,pHdbCallback newCB);
|
||||||
/**
|
|
||||||
* remove recursively all callbacks witch match the id
|
|
||||||
* @param root The starting node from where to start removing callbacks
|
|
||||||
* @param id The ID callbacks have to match in order to be removed.
|
|
||||||
*/
|
|
||||||
void RemoveHipadabaCallback(pHdb root, int id);
|
|
||||||
/**
|
|
||||||
* remove recursively all callbacks witch match the internal id
|
|
||||||
* @param root The starting node from where to start removing callbacks
|
|
||||||
* @param internalID The internal ID callbacks have to match in order to be removed.
|
|
||||||
*/
|
|
||||||
void InternalRemoveHipadabaCallback(pHdb root, void *internalID);
|
|
||||||
/**
|
/**
|
||||||
* find the callback data
|
* find the callback data
|
||||||
* @param node the node from where callbacks have to be searched
|
* @param node the node from where callbacks have to be searched
|
||||||
* @param type the type of the callback to be searched
|
|
||||||
* @param func the function registered with the searched callback
|
* @param func the function registered with the searched callback
|
||||||
|
* @param userPtr A pointer to some user data whih the callback
|
||||||
|
* uses to determine if it is the right one.
|
||||||
* @return the found callback user data or NULL on failure
|
* @return the found callback user data or NULL on failure
|
||||||
*/
|
*/
|
||||||
void *FindHdbCallbackData(pHdb node, int type, hdbCallbackFunction func
|
void *FindHdbCallbackData(pHdb node,hdbCallbackFunction func,
|
||||||
, void *internalID);
|
void *userPtr);
|
||||||
/**
|
/**
|
||||||
* invoke a callback chain.
|
* invoke a callback chain.
|
||||||
* @param root The callback chain to invoke
|
* @param root The callback chain to invoke
|
||||||
@ -301,9 +336,19 @@ void *FindHdbCallbackData(pHdb node, int type, hdbCallbackFunction func
|
|||||||
* @param v The new value for this callback
|
* @param v The new value for this callback
|
||||||
* @return 1 on success, 0 on failure
|
* @return 1 on success, 0 on failure
|
||||||
*/
|
*/
|
||||||
int InvokeCallbackChain(pHdbCallback root, pHdb node,
|
int InvokeCallbackChain(pHdb node, pHdbMessage message);
|
||||||
void *callData, hdbValue v);
|
/**
|
||||||
|
* Deletes a callback chain. This is internal, normal users
|
||||||
|
* should nto use this function. Or you create a mess!
|
||||||
|
* @param root The callback chain to remove
|
||||||
|
*/
|
||||||
|
void DeleteCallbackChain(pHdbCallback root);
|
||||||
|
/**
|
||||||
|
* apply message to the node and all its children
|
||||||
|
* @param node Th node where to start recursing
|
||||||
|
* @param message The message to send
|
||||||
|
*/
|
||||||
|
void RecurseCallbackChains(pHdb node, pHdbMessage message);
|
||||||
/*============== Parameter Handling ===============================*/
|
/*============== Parameter Handling ===============================*/
|
||||||
/**
|
/**
|
||||||
* Set a hipadaba parameter. This is an external set for a parameter. It may cause
|
* Set a hipadaba parameter. This is an external set for a parameter. It may cause
|
||||||
|
31
logsetup.c
31
logsetup.c
@ -2,14 +2,33 @@
|
|||||||
#include "sics.h"
|
#include "sics.h"
|
||||||
#include "sicshipadaba.h"
|
#include "sicshipadaba.h"
|
||||||
|
|
||||||
static int LoggerUpdateCallback(void *user, void *conn, pHdb node, hdbValue value) {
|
static hdbCallbackReturn LoggerUpdateCallback(pHdb node, void *userData,
|
||||||
Logger *logger = user;
|
pHdbMessage message) {
|
||||||
|
Logger *logger = userData;
|
||||||
pDynString str;
|
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);
|
str = formatValue(value, node);
|
||||||
LoggerWrite(logger, time(NULL), LoggerPeriod(logger), GetCharArray(str));
|
LoggerWrite(logger, time(NULL), LoggerPeriod(logger), GetCharArray(str));
|
||||||
DeleteDynString(str);
|
DeleteDynString(str);
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int LogSetup(SConnection *pCon, SicsInterp *pSics, void *pData,
|
static int LogSetup(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
@ -73,15 +92,15 @@ static int LogSetup(SConnection *pCon, SicsInterp *pSics, void *pData,
|
|||||||
} else {
|
} else {
|
||||||
numeric = 0;
|
numeric = 0;
|
||||||
}
|
}
|
||||||
logger = FindHdbCallbackData(node, HCBUPDATE, LoggerUpdateCallback, NULL);
|
logger = FindHdbCallbackData(node, LoggerUpdateCallback, NULL);
|
||||||
if (logger != 0) { /* logger exists already, changed only period */
|
if (logger != 0) { /* logger exists already, changed only period */
|
||||||
LoggerSetPeriod(logger, period);
|
LoggerSetPeriod(logger, period);
|
||||||
} else {
|
} else {
|
||||||
logger = LoggerMake(name, period, !numeric);
|
logger = LoggerMake(name, period, !numeric);
|
||||||
LoggerSetNumeric(logger, numeric);
|
LoggerSetNumeric(logger, numeric);
|
||||||
cb = MakeHipadabaCallback(LoggerUpdateCallback, logger, (void (*)(void *))LoggerKill, -1, NULL);
|
cb = MakeHipadabaCallback(LoggerUpdateCallback, logger, (void (*)(void *))LoggerKill);
|
||||||
assert(cb);
|
assert(cb);
|
||||||
AppendHipadabaCallback(node, HCBUPDATE, cb);
|
AppendHipadabaCallback(node, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
2
make_gen
2
make_gen
@ -35,7 +35,7 @@ SOBJ = network.o ifile.o conman.o SCinter.o splitter.o passwd.o \
|
|||||||
savehdb.o statusfile.o \
|
savehdb.o statusfile.o \
|
||||||
moregress.o hdbcommand.o multicounter.o regresscter.o histregress.o \
|
moregress.o hdbcommand.o multicounter.o regresscter.o histregress.o \
|
||||||
sicshdbadapter.o polldriv.o sicspoll.o statemon.o hmslave.o \
|
sicshdbadapter.o polldriv.o sicspoll.o statemon.o hmslave.o \
|
||||||
nwatch.o asyncqueue.o asyncprotocol.o sicsobj.o hdbqueue.o\
|
nwatch.o asyncqueue.o asyncprotocol.o sicsobj.o \
|
||||||
nxcopy.o nxinterhelper.o nxinter_wrap.o genericcontroller.o nxstack.o
|
nxcopy.o nxinterhelper.o nxinter_wrap.o genericcontroller.o nxstack.o
|
||||||
|
|
||||||
MOTOROBJ = motor.o simdriv.o
|
MOTOROBJ = motor.o simdriv.o
|
||||||
|
2
ofac.c
2
ofac.c
@ -345,7 +345,7 @@
|
|||||||
AddCommand(pInter,"MakeAsyncQueue",AsyncQueueFactory,NULL,NULL);
|
AddCommand(pInter,"MakeAsyncQueue",AsyncQueueFactory,NULL,NULL);
|
||||||
AddCommand(pInter,"MakeSicsObj",InstallSICSOBJ,NULL,NULL);
|
AddCommand(pInter,"MakeSicsObj",InstallSICSOBJ,NULL,NULL);
|
||||||
AddCommand(pInter,"DynSicsObj",InstallSICSOBJ,NULL,NULL);
|
AddCommand(pInter,"DynSicsObj",InstallSICSOBJ,NULL,NULL);
|
||||||
AddCommand(pInter,"MakeHdbQueue",MakeHDBQueue,NULL,NULL);
|
/* AddCommand(pInter,"MakeHdbQueue",MakeHDBQueue,NULL,NULL); */
|
||||||
AddCommand(pInter,"MakeGenController",GenControllerFactory,NULL,NULL);
|
AddCommand(pInter,"MakeGenController",GenControllerFactory,NULL,NULL);
|
||||||
AddCommand(pInter,"genconfigure",GenControllerConfigure,NULL,NULL);
|
AddCommand(pInter,"genconfigure",GenControllerConfigure,NULL,NULL);
|
||||||
|
|
||||||
|
15
savehdb.c
15
savehdb.c
@ -29,9 +29,16 @@ static int SaveHdbTree(void *object, char *name, FILE *fil) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int SaveHdbCallback(void *user, void *conn, pHdb node, hdbValue value) {
|
static hdbCallbackReturn SaveHdbCallback(pHdb node, void *userData,
|
||||||
|
pHdbMessage message) {
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
|
if((mm = GetHdbUpdateMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
StatusFileDirty();
|
StatusFileDirty();
|
||||||
return 1;
|
return hdbContinue;;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int SaveHdbEnable(SConnection *con, SicsInterp *sics,
|
static int SaveHdbEnable(SConnection *con, SicsInterp *sics,
|
||||||
@ -50,9 +57,9 @@ static int SaveHdbEnable(SConnection *con, SicsInterp *sics,
|
|||||||
SCPrintf(con, eError, "ERROR: %s not found", argv[1]);
|
SCPrintf(con, eError, "ERROR: %s not found", argv[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
cb = MakeHipadabaCallback(SaveHdbCallback, NULL, NULL, -1, NULL);
|
cb = MakeHipadabaCallback(SaveHdbCallback, NULL, NULL);
|
||||||
assert(cb);
|
assert(cb);
|
||||||
AppendHipadabaCallback(node, HCBUPDATE, cb);
|
AppendHipadabaCallback(node,cb);
|
||||||
|
|
||||||
SetHdbProperty(node, "save", "me");
|
SetHdbProperty(node, "save", "me");
|
||||||
for (node = node->mama; node != NULL; node = node->mama) {
|
for (node = node->mama; node != NULL; node = node->mama) {
|
||||||
|
@ -202,11 +202,36 @@ static void SctSetDirty(SctChain *sc) {
|
|||||||
sc->doit = 1;
|
sc->doit = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int SctUpdateCallback(void *user, void *conn, pHdb node, hdbValue value) {
|
static hdbCallbackReturn SctUpdateCallback(pHdb node, void *userData,
|
||||||
SctParData *data = user;
|
pHdbMessage message) {
|
||||||
|
SctParData *data = userData;
|
||||||
SConnection *con;
|
SConnection *con;
|
||||||
char path[MAX_HDB_PATH];
|
char path[MAX_HDB_PATH];
|
||||||
pDynString str;
|
pDynString str;
|
||||||
|
pHdbPtrMessage pm = NULL;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
pHdbDataSearch dsm = NULL;
|
||||||
|
hdbValue value;
|
||||||
|
|
||||||
|
if((pm = GetKillPtrMessage(message)) != NULL){
|
||||||
|
if(data->sct == pm->pPtr){
|
||||||
|
return hdbKill;
|
||||||
|
}
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((dsm = GetHdbDataSearchMessage(message)) != NULL){
|
||||||
|
if(dsm->testFunc == SctUpdateCallback && dsm->testPtr == data->sct){
|
||||||
|
dsm->result = userData;
|
||||||
|
return hdbAbort;
|
||||||
|
}
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((mm = GetHdbUpdateMessage(message)) == NULL) {
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
value = *(mm->v);
|
||||||
|
|
||||||
if (data->inprogress) {
|
if (data->inprogress) {
|
||||||
if (data->sct->operation == sct_complete_keyword) {
|
if (data->sct->operation == sct_complete_keyword) {
|
||||||
@ -220,15 +245,33 @@ static int SctUpdateCallback(void *user, void *conn, pHdb node, hdbValue value)
|
|||||||
SCStorePop(data->conCtx);
|
SCStorePop(data->conCtx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return hdbContinue;;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int SctSetCallback(void *user, void *conn, pHdb node, hdbValue value) {
|
static hdbCallbackReturn SctSetCallback(pHdb node, void *userData,
|
||||||
SctParData *data = user;
|
pHdbMessage message) {
|
||||||
|
SctParData *data = userData;
|
||||||
SConnection *oldCon;
|
SConnection *oldCon;
|
||||||
char path[MAX_HDB_PATH];
|
char path[MAX_HDB_PATH];
|
||||||
pDynString str;
|
pDynString str;
|
||||||
pHdb target;
|
pHdb target;
|
||||||
|
SConnection *conn = NULL;
|
||||||
|
pHdbPtrMessage pm = NULL;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
hdbValue value;
|
||||||
|
|
||||||
|
if((pm = GetKillPtrMessage(message)) != NULL){
|
||||||
|
if(data->sct == pm->pPtr){
|
||||||
|
return hdbKill;
|
||||||
|
}
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((mm = GetHdbSetMessage(message)) == NULL) {
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
value = *(mm->v);
|
||||||
|
conn = mm->callData;
|
||||||
|
|
||||||
if (data->setChain) {
|
if (data->setChain) {
|
||||||
if (data->pending) {
|
if (data->pending) {
|
||||||
@ -247,16 +290,25 @@ static int SctSetCallback(void *user, void *conn, pHdb node, hdbValue value) {
|
|||||||
if (target) {
|
if (target) {
|
||||||
UpdateHipadabaPar(target, value, NULL);
|
UpdateHipadabaPar(target, value, NULL);
|
||||||
}
|
}
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int SctReadCallback(void *user, void *conn, pHdb node, hdbValue value) {
|
static hdbCallbackReturn SctReadCallback(pHdb node, void *userData,
|
||||||
SctParData *data = user;
|
pHdbMessage message) {
|
||||||
|
SctParData *data = userData;
|
||||||
|
pHdbPtrMessage pm = NULL;
|
||||||
|
|
||||||
|
if((pm = GetKillPtrMessage(message)) != NULL){
|
||||||
|
if(data->sct == pm->pPtr){
|
||||||
|
return hdbKill;
|
||||||
|
}
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
/* not used ? */
|
/* not used ? */
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SctCallDynamicScript(Sct *sct, char *name, char *script) {
|
int SctCallDynamicScript(Sct *sct, char *name, char *script) {
|
||||||
@ -372,7 +424,7 @@ static int SctExec(SConnection *con, SicsInterp *sics, void *object, int argc, c
|
|||||||
if (node == 0) goto quit;
|
if (node == 0) goto quit;
|
||||||
memset(&newValue,0,sizeof(hdbValue));
|
memset(&newValue,0,sizeof(hdbValue));
|
||||||
if (keyword == sct_take_keyword) {
|
if (keyword == sct_take_keyword) {
|
||||||
data = FindHdbCallbackData(node, HCBUPDATE, SctUpdateCallback, sct);
|
data = FindHdbCallbackData(node, SctUpdateCallback, sct);
|
||||||
result = NULL;
|
result = NULL;
|
||||||
if (data) {
|
if (data) {
|
||||||
if (data->pending) {
|
if (data->pending) {
|
||||||
@ -750,7 +802,7 @@ int SctAddNode2Script(Sct *sct, SctChain *sc, pHdb node, SConnection *con) {
|
|||||||
pHdb child;
|
pHdb child;
|
||||||
hdbValue hval;
|
hdbValue hval;
|
||||||
|
|
||||||
data = FindHdbCallbackData(node, HCBUPDATE, SctUpdateCallback, sct);
|
data = FindHdbCallbackData(node,SctUpdateCallback, sct);
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
data = calloc(1, sizeof(*data));
|
data = calloc(1, sizeof(*data));
|
||||||
assert(data);
|
assert(data);
|
||||||
@ -762,17 +814,17 @@ int SctAddNode2Script(Sct *sct, SctChain *sc, pHdb node, SConnection *con) {
|
|||||||
data->conCtx = NULL;
|
data->conCtx = NULL;
|
||||||
data->refCnt = 3; /* insert 3 times */
|
data->refCnt = 3; /* insert 3 times */
|
||||||
|
|
||||||
cb = MakeHipadabaCallback(SctUpdateCallback, data, SctFreeParData, -1, sct);
|
cb = MakeHipadabaCallback(SctUpdateCallback, data, SctFreeParData);
|
||||||
assert(cb);
|
assert(cb);
|
||||||
AppendHipadabaCallback(node, HCBUPDATE, cb);
|
AppendHipadabaCallback(node,cb);
|
||||||
|
|
||||||
cb = MakeHipadabaCallback(SctSetCallback, data, SctFreeParData, -1, sct);
|
cb = MakeHipadabaCallback(SctSetCallback, data, SctFreeParData);
|
||||||
assert(cb);
|
assert(cb);
|
||||||
AppendHipadabaCallback(node, HCBSET, cb);
|
AppendHipadabaCallback(node,cb);
|
||||||
|
|
||||||
cb = MakeHipadabaCallback(SctReadCallback, data, SctFreeParData, -1, sct);
|
cb = MakeHipadabaCallback(SctReadCallback, data, SctFreeParData);
|
||||||
assert(cb);
|
assert(cb);
|
||||||
AppendHipadabaCallback(node, HCBREAD, cb);
|
AppendHipadabaCallback(node,cb);
|
||||||
} else {
|
} else {
|
||||||
if (data->sct != sct) {
|
if (data->sct != sct) {
|
||||||
SCPrintf(con, eError, "ERROR: node is already attached to another script context controller");
|
SCPrintf(con, eError, "ERROR: node is already attached to another script context controller");
|
||||||
|
@ -93,27 +93,47 @@ static int MotorValueCallback(int iEvent, void *eventData, void *userData,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
static int MotorParSetCallback(void *userData, void *callData,
|
static hdbCallbackReturn MotorParSetCallback(pHdb currentNode, void *userData,
|
||||||
pHdb currentNode, hdbValue v){
|
pHdbMessage message){
|
||||||
pMotor pMot = (pMotor)userData;
|
pMotor pMot = (pMotor)userData;
|
||||||
SConnection *pCon = (SConnection *)callData;
|
SConnection *pCon = NULL;
|
||||||
int status;
|
int status;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
|
if((mm = GetHdbSetMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
pCon = mm->callData;
|
||||||
|
|
||||||
assert(pMot != NULL && pCon != NULL);
|
assert(pMot != NULL && pCon != NULL);
|
||||||
status = MotorSetPar(pMot,pCon,currentNode->name, (float)v.v.doubleValue);
|
status = MotorSetPar(pMot,pCon,currentNode->name,
|
||||||
return status;
|
(float)mm->v->v.doubleValue);
|
||||||
|
if(status == 1){
|
||||||
|
return hdbContinue;
|
||||||
|
} else {
|
||||||
|
return hdbAbort;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static int MotorParGetCallback(void *userData, void *callData,
|
static hdbCallbackReturn MotorParGetCallback(pHdb currentNode, void *userData,
|
||||||
pHdb currentNode, hdbValue v){
|
pHdbMessage message){
|
||||||
pMotor pMot = (pMotor)userData;
|
pMotor pMot = (pMotor)userData;
|
||||||
float fVal;
|
float fVal;
|
||||||
int status;
|
int status;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
|
if((mm = GetHdbGetMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
|
||||||
assert(pMot != NULL);
|
assert(pMot != NULL);
|
||||||
status = MotorGetPar(pMot,currentNode->name,&fVal);
|
status = MotorGetPar(pMot,currentNode->name,&fVal);
|
||||||
currentNode->value.v.doubleValue = fVal;
|
currentNode->value.v.doubleValue = fVal;
|
||||||
return status;
|
if(status == 1){
|
||||||
|
return hdbContinue;
|
||||||
|
} else {
|
||||||
|
return hdbAbort;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
static pHdb MakeMotParNode(char *name, pMotor pMot){
|
static pHdb MakeMotParNode(char *name, pMotor pMot){
|
||||||
@ -123,16 +143,16 @@ static pHdb MakeMotParNode(char *name, pMotor pMot){
|
|||||||
|
|
||||||
node = MakeHipadabaNode(name, HIPFLOAT, 1);
|
node = MakeHipadabaNode(name, HIPFLOAT, 1);
|
||||||
if(node != NULL) {
|
if(node != NULL) {
|
||||||
pCall = MakeHipadabaCallback(MotorParSetCallback,pMot,NULL,-1,NULL);
|
pCall = MakeHipadabaCallback(MotorParSetCallback,pMot,NULL);
|
||||||
if(pCall == NULL){
|
if(pCall == NULL){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
AppendHipadabaCallback(node,HCBSET,pCall);
|
AppendHipadabaCallback(node,pCall);
|
||||||
pCall = MakeHipadabaCallback(MotorParGetCallback,pMot,NULL,-1,NULL);
|
pCall = MakeHipadabaCallback(MotorParGetCallback,pMot,NULL);
|
||||||
if(pCall == NULL){
|
if(pCall == NULL){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
AppendHipadabaCallback(node,HCBREAD,pCall);
|
AppendHipadabaCallback(node,pCall);
|
||||||
snprintf(command,1023,"%s %s ", pMot->name, name);
|
snprintf(command,1023,"%s %s ", pMot->name, name);
|
||||||
SetHdbProperty(node,"sicscommand", command);
|
SetHdbProperty(node,"sicscommand", command);
|
||||||
}
|
}
|
||||||
@ -289,15 +309,20 @@ static long totalSum(int *data, int length){
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static int HMDataGetCallback(void *userData, void *callData,
|
static hdbCallbackReturn HMDataGetCallback(pHdb currentNode, void *userData,
|
||||||
pHdb currentNode, hdbValue v){
|
pHdbMessage message){
|
||||||
pHistMem pHM = (pHistMem)userData;
|
pHistMem pHM = (pHistMem)userData;
|
||||||
SConnection *pCon = (SConnection *)callData;
|
SConnection *pCon = NULL;
|
||||||
long sum1, sum2;
|
long sum1, sum2;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
|
if((mm = GetHdbGetMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
pCon = mm->callData;
|
||||||
assert(pHM != NULL);
|
assert(pHM != NULL);
|
||||||
if(pCon == NULL){
|
if(pCon == NULL){
|
||||||
return 0;
|
return hdbAbort;
|
||||||
}
|
}
|
||||||
sum1 = totalSum(currentNode->value.v.intArray, currentNode->value.arrayLength);
|
sum1 = totalSum(currentNode->value.v.intArray, currentNode->value.arrayLength);
|
||||||
currentNode->value.arrayLength = GetHistLength(pHM);
|
currentNode->value.arrayLength = GetHistLength(pHM);
|
||||||
@ -306,7 +331,7 @@ static int HMDataGetCallback(void *userData, void *callData,
|
|||||||
if(sum1 != sum2){
|
if(sum1 != sum2){
|
||||||
UpdateHipadabaPar(currentNode,currentNode->value,NULL);
|
UpdateHipadabaPar(currentNode,currentNode->value,NULL);
|
||||||
}
|
}
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static pHdb MakeHMDataNode(pHistMem pHM, char *name){
|
static pHdb MakeHMDataNode(pHistMem pHM, char *name){
|
||||||
@ -319,21 +344,27 @@ static pHdb MakeHMDataNode(pHistMem pHM, char *name){
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
node->value.doNotFree = 1;
|
node->value.doNotFree = 1;
|
||||||
pCall = MakeHipadabaCallback(HMDataGetCallback,pHM,NULL,-1,NULL);
|
pCall = MakeHipadabaCallback(HMDataGetCallback,pHM,NULL);
|
||||||
if(pCall == NULL){
|
if(pCall == NULL){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
AppendHipadabaCallback(node,HCBREAD,pCall);
|
AppendHipadabaCallback(node,pCall);
|
||||||
AppendHipadabaCallback(node,HCBSET,MakeReadOnlyCallback());
|
AppendHipadabaCallback(node,MakeReadOnlyCallback());
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
/*================ SICS Variable ======================================*/
|
/*================ SICS Variable ======================================*/
|
||||||
static int SicsVarSetCallback(void *userData, void *callData,
|
static hdbCallbackReturn SicsVarSetCallback(pHdb currentNode, void *userData,
|
||||||
pHdb currentNode, hdbValue v){
|
pHdbMessage message){
|
||||||
pSicsVariable pVar = (pSicsVariable)userData;
|
pSicsVariable pVar = (pSicsVariable)userData;
|
||||||
SConnection *pCon = (SConnection *)callData;
|
SConnection *pCon = NULL;
|
||||||
int userRights = usMugger;
|
int userRights = usMugger;
|
||||||
|
pHdbDataMessage mm = NULL;
|
||||||
|
|
||||||
|
if((mm = GetHdbSetMessage(message)) == NULL){
|
||||||
|
return hdbContinue;
|
||||||
|
}
|
||||||
|
pCon = mm->callData;
|
||||||
|
|
||||||
assert(pVar != NULL);
|
assert(pVar != NULL);
|
||||||
|
|
||||||
@ -342,16 +373,16 @@ static int SicsVarSetCallback(void *userData, void *callData,
|
|||||||
}
|
}
|
||||||
switch(currentNode->value.dataType){
|
switch(currentNode->value.dataType){
|
||||||
case HIPINT:
|
case HIPINT:
|
||||||
VarSetInt(pVar, v.v.intValue, userRights);
|
VarSetInt(pVar, mm->v->v.intValue, userRights);
|
||||||
break;
|
break;
|
||||||
case HIPFLOAT:
|
case HIPFLOAT:
|
||||||
VarSetFloat(pVar, (float)v.v.doubleValue, userRights);
|
VarSetFloat(pVar, (float)mm->v->v.doubleValue, userRights);
|
||||||
break;
|
break;
|
||||||
case HIPTEXT:
|
case HIPTEXT:
|
||||||
VarSetText(pVar, v.v.text, userRights);
|
VarSetText(pVar, mm->v->v.text, userRights);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 1;
|
return hdbContinue;
|
||||||
}
|
}
|
||||||
/*----------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------*/
|
||||||
static int ValueCallback(int iEvent, void *eventData, void *userData,
|
static int ValueCallback(int iEvent, void *eventData, void *userData,
|
||||||
@ -405,13 +436,13 @@ static pHdb MakeSicsVarNode(pSicsVariable pVar, char *name){
|
|||||||
} else {
|
} else {
|
||||||
AddPrivProperty(node,pVar->iAccessCode);
|
AddPrivProperty(node,pVar->iAccessCode);
|
||||||
}
|
}
|
||||||
pCall = MakeHipadabaCallback(SicsVarSetCallback,pVar,NULL,-1,NULL);
|
pCall = MakeHipadabaCallback(SicsVarSetCallback,pVar,NULL);
|
||||||
if(pCall == NULL){
|
if(pCall == NULL){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
strncpy(comCom.deviceID,name,255);
|
strncpy(comCom.deviceID,name,255);
|
||||||
comCom.transID = -77;
|
comCom.transID = -77;
|
||||||
AppendHipadabaCallback(node,HCBSET,pCall);
|
AppendHipadabaCallback(node,pCall);
|
||||||
RegisterCallback(pVar->pCall,comCom, VALUECHANGE, ValueCallback,
|
RegisterCallback(pVar->pCall,comCom, VALUECHANGE, ValueCallback,
|
||||||
node,NULL);
|
node,NULL);
|
||||||
snprintf(command,1023,"%s ", pVar->name);
|
snprintf(command,1023,"%s ", pVar->name);
|
||||||
|
580
sicshipadaba.c
580
sicshipadaba.c
File diff suppressed because it is too large
Load Diff
@ -18,6 +18,21 @@
|
|||||||
#define SICSCBRANGE -609
|
#define SICSCBRANGE -609
|
||||||
#define SICSCBBADFIXED -610
|
#define SICSCBBADFIXED -610
|
||||||
#define SICSNOPAR -611
|
#define SICSNOPAR -611
|
||||||
|
/*======================== SICS Messages ======================================*/
|
||||||
|
typedef struct {
|
||||||
|
char *type;
|
||||||
|
int ID;
|
||||||
|
}hdbIDMessage, *pHdbIDMessage;
|
||||||
|
/*------------------------------------------------------------------------------*/
|
||||||
|
pHdbIDMessage GetKillIDMessage(pHdbMessage message);
|
||||||
|
pHdbIDMessage GetKillInternalIDMessage(pHdbMessage message);
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
typedef struct {
|
||||||
|
char *type;
|
||||||
|
void *pPtr;
|
||||||
|
}hdbPtrMessage, *pHdbPtrMessage;
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
pHdbPtrMessage GetKillPtrMessage(pHdbMessage message);
|
||||||
/*======================== data structure for automatic parameter update =======*/
|
/*======================== data structure for automatic parameter update =======*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
SConnection *pCon;
|
SConnection *pCon;
|
||||||
@ -341,6 +356,12 @@ int isSICSHdbRO(pHdb node);
|
|||||||
* @return 1 on success, 0 when out of memory.
|
* @return 1 on success, 0 when out of memory.
|
||||||
*/
|
*/
|
||||||
int InstallSICSNotify(pHdb node, SConnection *pCon, int id, int recurse);
|
int InstallSICSNotify(pHdb node, SConnection *pCon, int id, int recurse);
|
||||||
|
/**
|
||||||
|
* remove all Callbacks associated with a given conenction
|
||||||
|
* @param root Where to start removing callbacks
|
||||||
|
* @param pCon The connection for which to remove callbacks
|
||||||
|
*/
|
||||||
|
void RemoveConnectionCallbacks(pHdb root, SConnection *pCon);
|
||||||
/**
|
/**
|
||||||
* handles the common task of checking for, and processing a SICS parameter.
|
* handles the common task of checking for, and processing a SICS parameter.
|
||||||
* @param root The node at which to search for parameters
|
* @param root The node at which to search for parameters
|
||||||
|
@ -203,7 +203,7 @@ static int MakeScriptFunc(pSICSOBJ self, SConnection *pCon,
|
|||||||
node->value.v.obj = ScriptObjFunc;
|
node->value.v.obj = ScriptObjFunc;
|
||||||
SetHdbProperty(node,"script",argv[3]);
|
SetHdbProperty(node,"script",argv[3]);
|
||||||
SetHdbProperty(node,"priv",argv[4]);
|
SetHdbProperty(node,"priv",argv[4]);
|
||||||
AppendHipadabaCallback(node,HCBSET,MakeSICSFuncCallback(self));
|
AppendHipadabaCallback(node,MakeSICSFuncCallback(self));
|
||||||
AddHipadabaChild(parent,node,pCon);
|
AddHipadabaChild(parent,node,pCon);
|
||||||
SCSendOK(pCon);
|
SCSendOK(pCon);
|
||||||
return 1;
|
return 1;
|
||||||
|
789
val.lis
789
val.lis
@ -1,240 +1,553 @@
|
|||||||
==19540== Memcheck, a memory error detector.
|
==3348== Memcheck, a memory error detector.
|
||||||
==19540== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
|
==3348== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
|
||||||
==19540== Using LibVEX rev 1732, a library for dynamic binary translation.
|
==3348== Using LibVEX rev 1658, a library for dynamic binary translation.
|
||||||
==19540== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
|
==3348== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
|
||||||
==19540== Using valgrind-3.2.3, a dynamic binary instrumentation framework.
|
==3348== Using valgrind-3.2.1, a dynamic binary instrumentation framework.
|
||||||
==19540== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
|
==3348== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
|
||||||
==19540== For more details, rerun with: -v
|
==3348== For more details, rerun with: -v
|
||||||
==19540==
|
==3348==
|
||||||
==19540== Syscall param write(buf) points to uninitialised byte(s)
|
|
||||||
==19540== at 0x41DA1FE: __write_nocancel (in /lib/tls/libc-2.3.2.so)
|
|
||||||
==19540== by 0x81D25BD: H5FD_sec2_write (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540== Address 0xBEFF3BFA is on thread 1's stack
|
|
||||||
==19540==
|
|
||||||
==19540== Source and destination overlap in memcpy(0x4445028, 0x43CE7E8, 1744896)
|
|
||||||
==19540== at 0x401C96D: memcpy (mc_replace_strmem.c:116)
|
|
||||||
==19540== by 0x8241BDA: H5V_memcpyvv (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Invalid read of size 1
|
|
||||||
==19540== at 0x401C988: memcpy (mc_replace_strmem.c:406)
|
|
||||||
==19540== by 0x8241BDA: H5V_memcpyvv (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540== Address 0x4445027 is 1 bytes before a block of size 1,744,896 alloc'd
|
|
||||||
==19540== at 0x401A846: malloc (vg_replace_malloc.c:149)
|
|
||||||
==19540== by 0x81B8BDE: H5D_istore_chunk_alloc (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Invalid read of size 1
|
|
||||||
==19540== at 0x401C98D: memcpy (mc_replace_strmem.c:406)
|
|
||||||
==19540== by 0x8241BDA: H5V_memcpyvv (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540== Address 0x4445026 is 2 bytes before a block of size 1,744,896 alloc'd
|
|
||||||
==19540== at 0x401A846: malloc (vg_replace_malloc.c:149)
|
|
||||||
==19540== by 0x81B8BDE: H5D_istore_chunk_alloc (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Invalid read of size 1
|
|
||||||
==19540== at 0x401C993: memcpy (mc_replace_strmem.c:406)
|
|
||||||
==19540== by 0x8241BDA: H5V_memcpyvv (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540== Address 0x4445025 is 3 bytes before a block of size 1,744,896 alloc'd
|
|
||||||
==19540== at 0x401A846: malloc (vg_replace_malloc.c:149)
|
|
||||||
==19540== by 0x81B8BDE: H5D_istore_chunk_alloc (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Invalid read of size 1
|
|
||||||
==19540== at 0x401C99A: memcpy (mc_replace_strmem.c:406)
|
|
||||||
==19540== by 0x8241BDA: H5V_memcpyvv (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540== Address 0x4445024 is 4 bytes before a block of size 1,744,896 alloc'd
|
|
||||||
==19540== at 0x401A846: malloc (vg_replace_malloc.c:149)
|
|
||||||
==19540== by 0x81B8BDE: H5D_istore_chunk_alloc (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D60F5: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D609F: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D60FE: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D60D8: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D6107: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D6110: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Use of uninitialised value of size 4
|
|
||||||
==19540== at 0x40D68E5: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Use of uninitialised value of size 4
|
|
||||||
==19540== at 0x40D68F7: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Use of uninitialised value of size 4
|
|
||||||
==19540== at 0x40D6B50: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Use of uninitialised value of size 4
|
|
||||||
==19540== at 0x40D6B65: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D60DF: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D60E8: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D6119: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D6122: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D612B: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
==19540==
|
|
||||||
==19540== Conditional jump or move depends on uninitialised value(s)
|
|
||||||
==19540== at 0x40D6134: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D6945: (within /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D598F: deflate (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x40D3C7F: compress2 (in /usr/lib/libz.so.1.1.4)
|
|
||||||
==19540== by 0x8243947: H5Z_filter_deflate (in /afs/psi.ch/user/k/koennecke/src/workspace/sics/SICServer)
|
|
||||||
WARNING: Cannot log(Accepted dummy connection )
|
WARNING: Cannot log(Accepted dummy connection )
|
||||||
sim/laue/laue.tcl:0>> ServerOption ReadTimeOut 10
|
sim/topsi/morpheus.tcl:0>> ServerOption ReadTimeOut 10
|
||||||
sim/laue/laue.tcl:1>> ServerOption AcceptTimeOut 10
|
sim/topsi/morpheus.tcl:1>> ServerOption AcceptTimeOut 50
|
||||||
sim/laue/laue.tcl:2>> ServerOption ReadUserPasswdTimeout 500000
|
sim/topsi/morpheus.tcl:2>> ServerOption ReadUserPasswdTimeout 500000
|
||||||
sim/laue/laue.tcl:3>> ServerOption ServerPort 2911
|
sim/topsi/morpheus.tcl:3>> ServerOption LogFileBaseName $loghome/morpheus
|
||||||
sim/laue/laue.tcl:4>> ServerOption InterruptPort 2913
|
sim/topsi/morpheus.tcl:4>> ServerOption TecsPort 9753
|
||||||
sim/laue/laue.tcl:5>> ServerOption TelnetPort 1301
|
sim/topsi/morpheus.tcl:5>> ServerOption ServerPort 2911
|
||||||
sim/laue/laue.tcl:6>> ServerOption TelWord sicslogin
|
sim/topsi/morpheus.tcl:6>> ServerOption InterruptPort 9709
|
||||||
sim/laue/laue.tcl:7>> ServerOption QuieckPort 2108
|
sim/topsi/morpheus.tcl:7>> ServerOption statusfile $datahome/morpheusstatus.tcl
|
||||||
sim/laue/laue.tcl:8>> TokenInit connan
|
sim/topsi/morpheus.tcl:8>> ServerOption TelnetPort 1301
|
||||||
sim/laue/laue.tcl:9>> ServerOption LogFileDir $loghome
|
sim/topsi/morpheus.tcl:9>> ServerOption TelWord sicslogin
|
||||||
sim/laue/laue.tcl:10>> commandlog auto
|
sim/topsi/morpheus.tcl:10>> ServerOption QuieckPort 2108
|
||||||
sim/laue/laue.tcl:11>> ServerOption statusfile $datahome/lauestatus.tcl
|
sim/topsi/morpheus.tcl:11>> TokenInit connan
|
||||||
sim/laue/laue.tcl:12>> SicsUser Mugger Mugger 1
|
sim/topsi/morpheus.tcl:12>> ServerOption LogFileDir $loghome
|
||||||
sim/laue/laue.tcl:13>> SicsUser lnsmanager lnsSICSlns 1
|
sim/topsi/morpheus.tcl:13>> commandlog auto
|
||||||
sim/laue/laue.tcl:14>> SicsUser User User 2
|
sim/topsi/morpheus.tcl:14>> ServerOption RedirectFile $loghome/mostdout
|
||||||
sim/laue/laue.tcl:15>> SicsUser Spy Spy 3
|
sim/topsi/morpheus.tcl:15>> MakeDataNumber SicsDataNumber $datahome/DataNumber
|
||||||
sim/laue/laue.tcl:16>> SicsUser laueuser 07lns1 2
|
sim/topsi/morpheus.tcl:16>> VarMake SicsDataPath Text Mugger
|
||||||
sim/laue/laue.tcl:17>> VarMake Instrument Text Internal
|
sim/topsi/morpheus.tcl:17>> SicsDataPath $datahome/
|
||||||
sim/laue/laue.tcl:18>> VarMake sample Text User
|
sim/topsi/morpheus.tcl:18>> SicsDataPath lock
|
||||||
sim/laue/laue.tcl:19>> sample " "
|
sim/topsi/morpheus.tcl:19>> VarMake SicsDataPrefix Text Mugger
|
||||||
sim/laue/laue.tcl:20>> VarMake Title Text User
|
sim/topsi/morpheus.tcl:20>> SicsDataPrefix lock
|
||||||
sim/laue/laue.tcl:21>> Title " "
|
sim/topsi/morpheus.tcl:21>> VarMake SicsDataPostFix Text Mugger
|
||||||
sim/laue/laue.tcl:22>> VarMake User Text User
|
sim/topsi/morpheus.tcl:22>> SicsDataPostFix .dat
|
||||||
sim/laue/laue.tcl:23>> User " "
|
sim/topsi/morpheus.tcl:23>> SicsDataPostFix lock
|
||||||
sim/laue/laue.tcl:24>> VarMake email Text User
|
sim/topsi/morpheus.tcl:24>> SicsUser lnsmanager lnsSICSlns 1
|
||||||
sim/laue/laue.tcl:25>> email "unknown"
|
sim/topsi/morpheus.tcl:25>> SicsUser morpheususer 07lns1 2
|
||||||
sim/laue/laue.tcl:26>> VarMake address Text User
|
sim/topsi/morpheus.tcl:26>> SicsUser mu 07lns1 2
|
||||||
sim/laue/laue.tcl:27>> address "unknown"
|
sim/topsi/morpheus.tcl:27>> SicsUser User 07lns1 2
|
||||||
sim/laue/laue.tcl:28>> VarMake fax Text User
|
sim/topsi/morpheus.tcl:28>> VarMake Instrument Text Internal
|
||||||
sim/laue/laue.tcl:29>> fax "unknown"
|
sim/topsi/morpheus.tcl:29>> VarMake sample Text User
|
||||||
sim/laue/laue.tcl:30>> VarMake phone Text User
|
sim/topsi/morpheus.tcl:30>> sample " "
|
||||||
sim/laue/laue.tcl:31>> phone "unknown"
|
sim/topsi/morpheus.tcl:31>> VarMake Title Text User
|
||||||
sim/laue/laue.tcl:32>> hm configure counter counter
|
sim/topsi/morpheus.tcl:32>> Title "morpheus"
|
||||||
sim/laue/laue.tcl:33>> hm configure amplictrl 1
|
sim/topsi/morpheus.tcl:33>> VarMake User Text User
|
||||||
sim/laue/laue.tcl:34>> hm configure shutterctrl 2
|
sim/topsi/morpheus.tcl:34>> User "unknown"
|
||||||
sim/laue/laue.tcl:35>> hm configure clear 1
|
sim/topsi/morpheus.tcl:35>> VarMake email Text User
|
||||||
sim/laue/laue.tcl:36>> hm configure rank 2
|
sim/topsi/morpheus.tcl:36>> email "unknown"
|
||||||
sim/laue/laue.tcl:37>> hm configure dim0 768
|
sim/topsi/morpheus.tcl:37>> VarMake adress Text User
|
||||||
sim/laue/laue.tcl:38>> hm configure dim1 568
|
sim/topsi/morpheus.tcl:38>> adress "unknown"
|
||||||
sim/laue/laue.tcl:39>> sicsdatafactory new __transfer
|
sim/topsi/morpheus.tcl:39>> VarMake fax Text User
|
||||||
sim/laue/laue.tcl:40>> MakeSicsObj lscan LaueScan
|
sim/topsi/morpheus.tcl:40>> fax "unknown"
|
||||||
sim/laue/laue.tcl:41>> hmake /sics/lscan/upperpos mugger float
|
sim/topsi/morpheus.tcl:41>> VarMake phone Text User
|
||||||
sim/laue/laue.tcl:42>> hmake /sics/lscan/lowerpos mugger float
|
sim/topsi/morpheus.tcl:42>> phone "unknown"
|
||||||
sim/laue/laue.tcl:43>> hmake /sics/lscan/sttbegin user float
|
sim/topsi/morpheus.tcl:43>> VarMake BatchRoot text User
|
||||||
sim/laue/laue.tcl:44>> hmake /sics/lscan/sttend user float
|
sim/topsi/morpheus.tcl:44>> VarMake lastscancommand Text User
|
||||||
sim/laue/laue.tcl:45>> hmake /sics/lscan/sttstep user float
|
sim/topsi/morpheus.tcl:45>> lastscancommand "unknown scan"
|
||||||
sim/laue/laue.tcl:46>> hcommand /sics/lscan/run lauescan
|
sim/topsi/morpheus.tcl:46>> VarMake window Text User
|
||||||
sim/laue/laue.tcl:47>> hsetprop /sics/lscan/run type command
|
sim/topsi/morpheus.tcl:47>> window 0:256:0:256
|
||||||
sim/laue/laue.tcl:48>> hsetprop /sics/lscan/run priv user
|
sim/topsi/morpheus.tcl:48>> Publish savemotorpar Mugger
|
||||||
sim/laue/laue.tcl:49>> hmake /sics/lscan/run/mode user text
|
sim/topsi/morpheus.tcl:49>> SicsAlias STH A3
|
||||||
sim/laue/laue.tcl:50>> hmake /sics/lscan/run/preset user float
|
sim/topsi/morpheus.tcl:50>> SicsAlias STH SOM
|
||||||
sim/laue/laue.tcl:51>> hset /sics/lscan/upperpos 190.
|
sim/topsi/morpheus.tcl:51>> SicsAlias STH TH
|
||||||
sim/laue/laue.tcl:52>> hset /sics/lscan/lowerpos 5.
|
sim/topsi/morpheus.tcl:52>> SicsAlias STH OM
|
||||||
sim/laue/laue.tcl:53>> hset /sics/lscan/sttbegin 10.
|
sim/topsi/morpheus.tcl:53>> SicsAlias STT A4
|
||||||
sim/laue/laue.tcl:54>> hset /sics/lscan/sttend 30.
|
sim/topsi/morpheus.tcl:54>> SicsAlias STT S2T
|
||||||
sim/laue/laue.tcl:55>> hset /sics/lscan/sttstep 5.
|
sim/topsi/morpheus.tcl:55>> SicsAlias STT TTH
|
||||||
sim/laue/laue.tcl:56>> hset /sics/lscan/run/mode timer
|
sim/topsi/morpheus.tcl:56>> SicsAlias STT 2T
|
||||||
sim/laue/laue.tcl:57>> hset /sics/lscan/run/preset 2.
|
sim/topsi/morpheus.tcl:57>> SicsAlias SCX SCH
|
||||||
sim/laue/laue.tcl:58>> MakeDataNumber SicsDataNumber $datahome/DataNumber
|
sim/topsi/morpheus.tcl:58>> SicsAlias SCX CHI
|
||||||
sim/laue/laue.tcl:59>> VarMake SicsDataPath Text Mugger
|
sim/topsi/morpheus.tcl:59>> SicsAlias SCY SPH
|
||||||
sim/laue/laue.tcl:60>> SicsDataPath $datahome/
|
sim/topsi/morpheus.tcl:60>> SicsAlias SCY PHI
|
||||||
sim/laue/laue.tcl:61>> SicsDataPath lock
|
sim/topsi/morpheus.tcl:61>> SicsAlias SCY ATX
|
||||||
sim/laue/laue.tcl:62>> VarMake SicsDataPrefix Text Mugger
|
sim/topsi/morpheus.tcl:62>> SicsAlias PO1 POL
|
||||||
sim/laue/laue.tcl:63>> SicsDataPrefix laue
|
sim/topsi/morpheus.tcl:63>> SicsAlias PO2 ANA
|
||||||
sim/laue/laue.tcl:64>> SicsDataPrefix lock
|
sim/topsi/morpheus.tcl:64>> SicsAlias MTH A1
|
||||||
sim/laue/laue.tcl:65>> VarMake SicsDataPostFix Text Mugger
|
sim/topsi/morpheus.tcl:65>> SicsAlias MTH MOM
|
||||||
sim/laue/laue.tcl:66>> SicsDataPostFix .hdf
|
sim/topsi/morpheus.tcl:66>> SicsAlias MTT A2
|
||||||
sim/laue/laue.tcl:67>> SicsDataPostFix lock
|
sim/topsi/morpheus.tcl:67>> SicsAlias MTT M2T
|
||||||
sim/laue/laue.tcl:68>> clientput "Laue configuration done"
|
sim/topsi/morpheus.tcl:68>> SicsAlias MFV MCV
|
||||||
Laue configuration done
|
sim/topsi/morpheus.tcl:69>> MakeLin2Ang sttl utt
|
||||||
|
sim/topsi/morpheus.tcl:70>> sttl length 2110
|
||||||
|
sim/topsi/morpheus.tcl:71>> SicsAlias sttl u2t
|
||||||
|
sim/topsi/morpheus.tcl:72>> Publish motransfer Spy
|
||||||
|
sim/topsi/morpheus.tcl:73>> MakeO2T O2T sth stt
|
||||||
|
sim/topsi/morpheus.tcl:74>> MakeO2T O2TL sth sttl
|
||||||
|
sim/topsi/morpheus.tcl:75>> MakeO2T O2U sth sttl
|
||||||
|
sim/topsi/morpheus.tcl:76>> MakeScanCommand xxxscan counter $scripthome/morpheus.hdd \
|
||||||
|
$loghome/recover.bin
|
||||||
|
sim/topsi/morpheus.tcl:77>> MakePeakCenter xxxscan
|
||||||
|
sim/topsi/morpheus.tcl:78>> MakeOptimise opti counter
|
||||||
|
sim/topsi/morpheus.tcl:79>> SicsAlias drive dr
|
||||||
|
sim/topsi/morpheus.tcl:80>> MakeHKL stt sth sch sph
|
||||||
|
sim/topsi/morpheus.tcl:81>> MakeHKLMot hkl
|
||||||
|
sim/topsi/morpheus.tcl:82>> MakeUBCalc ubcalc hkl
|
||||||
|
sim/topsi/morpheus.tcl:83>> MakeCone cone ubcalc
|
||||||
|
sim/topsi/morpheus.tcl:84>> hkl lambdavar lambda
|
||||||
|
sim/topsi/morpheus.tcl:85>> MakeXYTable table
|
||||||
|
sim/topsi/morpheus.tcl:86>> MakeConfigurableMotor two
|
||||||
|
sim/topsi/morpheus.tcl:87>> two drivescript twoscript
|
||||||
|
ERROR: duplicate exe manager not created
|
||||||
|
sim/topsi/morpheus.tcl:88>> fileeval $scripthome/morpheuscom.tcl
|
||||||
|
ERROR: new SICSData not created due to name collision
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:89>> MakeStateMon xxxscan
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:90>> hmake /instrument spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:91>> hsetprop /instrument type instrument
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:92>> hmake /graphics spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:93>> hsetprop /graphics type graphset
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:94>> hattach /instrument title title
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:95>> hmake /instrument/user spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:96>> hsetprop /instrument/user type dev
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:97>> hattach /instrument/user user name
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:98>> hattach /instrument/user adress address
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:99>> hattach /instrument/user phone phone
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:100>> hattach /instrument/user email email
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:101>> hmake /instrument/user/flame user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:102>> hset /instrument/user/flame "This user is a DAU"
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:103>> hsetprop /instrument/user/flame visible false
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:104>> hmake /instrument/monochromator spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:105>> hsetprop /instrument/monochromator type part
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:106>> hattach /instrument/monochromator lambda wavelength
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:107>> hchain /instrument/monochromator/wavelength /instrument/monochromator/two_theta
|
||||||
|
ERROR: master /instrument/monochromator/wavelength not found
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:108>> hattach /instrument/monochromator mth theta
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:109>> hattach /instrument/monochromator mtt two_theta
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:110>> hattach /instrument/monochromator mtx x_translation
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:111>> hattach /instrument/monochromator mty y_translation
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:112>> hattach /instrument/monochromator mfv vertical_focusing
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:113>> hmake /instrument/slit1 spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:114>> hsetprop /instrument/slit1 type part
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:115>> hattach /instrument/slit1 d1l left
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:116>> hattach /instrument/slit1 d1r right
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:117>> hattach /instrument/slit1 d1t top
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:118>> hattach /instrument/slit1 d1b bottom
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:119>> hmake /instrument/slit2 spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:120>> hsetprop /instrument/slit2 type part
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:121>> hattach /instrument/slit2 d2l left
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:122>> hattach /instrument/slit2 d2r right
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:123>> hattach /instrument/slit2 d2t top
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:124>> hattach /instrument/slit2 d2b bottom
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:125>> hmake /instrument/sample spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:126>> hsetprop /instrument/sample type part
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:127>> hattach /instrument/sample sample name
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:128>> hattach /instrument/sample sth omega
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:129>> hattach /instrument/sample stt two_theta
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:130>> hattach /instrument/sample stx x_translation
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:131>> hattach /instrument/sample sty y_translation
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:132>> hattach /instrument/sample sgy y_goniometer
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:133>> hattach /instrument/sample sgx x_goniometer
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:134>> hmake /instrument/monitor spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:135>> hsetprop /instrument/monitor type part
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:136>> hmake /instrument/monitor/counts internal int
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:137>> hattach /instrument/monitor/counts counter 1
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:138>> hsetprop /instrument/monitor/counts priv internal
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:139>> hsetprop /instrument/monitor/counts sicsdev counter
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:140>> hmakescript /instrument/monitor/preset "counter getpreset" "counter setpreset" float
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:141>> hmakescript /instrument/monitor/countmode "counter getmode" "counter setmode" text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:142>> hmake /instrument/counter spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:143>> hsetprop /instrument/counter type part
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:144>> hmake /instrument/counter/counts internal int
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:145>> hattach /instrument/counter/counts counter 0
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:146>> hsetprop /instrument/counter/counts priv internal
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:147>> hmake /gui spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:148>> hmake /gui/status internal text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:149>> status hdbinterest /gui/status
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:150>> hmake /graphics/scan_data spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:151>> hsetprop /graphics/scan_data type graphdata
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:152>> hsetprop /graphics/scan_data viewer default
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:153>> hmake /graphics/scan_data/rank mugger int
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:154>> hset /graphics/scan_data/rank 1
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:155>> hsetprop /graphics/scan_data/rank priv internal
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:156>> hmakescript /graphics/scan_data/dim "xxxscan np" hdbReadOnly intar 1
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:157>> hsetprop /graphics/scan_data/dim priv internal
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:158>> hmakescript /graphics/scan_data/scan_variable "gethdbscanvardata 0" hdbReadOnly floatvarar 1
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:159>> hsetprop /graphics/scan_data/scan_variable type axis
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:160>> hsetprop /graphics/scan_data/scan_variable dim 0
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:161>> hsetprop /graphics/scan_data/scan_variable transfer zip
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:162>> hsetprop /graphics/scan_data/scan_variable priv internal
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:163>> hmakescript /graphics/scan_data/counts "gethdbscancounts" hdbReadOnly intvarar 1
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:164>> hsetprop /graphics/scan_data/counts type data
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:165>> hsetprop /graphics/scan_data/counts transfer zip
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:166>> hsetprop /graphics/scan_data/counts priv internal
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:167>> hmake /instrument/commands spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:168>> hsetprop /instrument/commands type commandset
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:169>> hcommand /instrument/commands/scan hdbscan
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:170>> hsetprop /instrument/commands/scan type command
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:171>> hsetprop /instrument/commands/scan priv user
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:172>> hmake /instrument/commands/scan/scan_variables user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:173>> hsetprop /instrument/commands/scan/scan_variables argtype drivable
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:174>> hmake /instrument/commands/scan/scan_start user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:175>> hmake /instrument/commands/scan/scan_increments user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:176>> hmake /instrument/commands/scan/NP user int
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:177>> hmake /instrument/commands/scan/mode user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:178>> hsetprop /instrument/commands/scan/mode values "monitor,timer"
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:179>> hmake /instrument/commands/scan/preset user float
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:180>> hcommand /instrument/commands/graphscan hdbscan
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:181>> hsetprop /instrument/commands/graphscan type command
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:182>> hsetprop /instrument/commands/graphscan viewer mountaingumui.ScanEditor
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:183>> hsetprop /instrument/commands/graphscan priv user
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:184>> hmake /instrument/commands/graphscan/scan_variables user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:185>> hsetprop /instrument/commands/graphscan/scan_variables argtype drivable
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:186>> hmake /instrument/commands/graphscan/scan_start user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:187>> hmake /instrument/commands/graphscan/scan_increments user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:188>> hmake /instrument/commands/graphscan/NP user int
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:189>> hmake /instrument/commands/graphscan/mode user text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:190>> hsetprop /instrument/commands/graphscan/mode values "monitor,timer"
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:191>> hmake /instrument/commands/graphscan/preset user float
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:192>> hcommand /instrument/commands/wait wait
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:193>> hsetprop /instrument/commands/wait type command
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:194>> hsetprop /instrument/commands/wait priv user
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:195>> hmake /instrument/commands/wait/time user int
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:196>> hmake /quickview spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:197>> hmake /batch spy none
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:198>> hmakescript /batch/bufferlist listbatchfiles hdbReadOnly text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:199>> sicspoll add /batch/bufferlist hdb 30
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:200>> hmake /batch/commandtext spy text
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:201>> hsetprop /batch/commandtext viewer mountaingumui.TextEdit
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:202>> hsetprop /batch/commandtext commandtext true
|
||||||
|
/afs/psi.ch/user/k/koennecke/src/workspace/sics/sim/topsi/morpheuscom.tcl:203>> __filemode prehistoric
|
||||||
OK
|
OK
|
||||||
ERROR: alias daba not recognized
|
==3348== Invalid read of size 1
|
||||||
OK
|
==3348== at 0x400630E: strcmp (mc_replace_strmem.c:341)
|
||||||
==19540==
|
==3348== by 0x80FE3D1: compareHdbValue (hipadaba.c:482)
|
||||||
==19540== ERROR SUMMARY: 4310127 errors from 22 contexts (suppressed: 29 from 3)
|
==3348== by 0x81140E4: pollHdb (polldriv.c:38)
|
||||||
==19540== malloc/free: in use at exit: 73,818 bytes in 1,540 blocks.
|
==3348== by 0x811459A: PollTask (sicspoll.c:135)
|
||||||
==19540== malloc/free: 14,838 allocs, 13,298 frees, 5,407,018 bytes allocated.
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
==19540== For counts of detected errors, rerun with: -v
|
==3348== by 0x8057A25: RunServer (nserver.c:406)
|
||||||
==19540== searching for pointers to 1,540 not-freed blocks.
|
==3348== by 0x8057F27: main (SICSmain.c:62)
|
||||||
==19540== checked 479,156 bytes.
|
==3348== Address 0x4CC7A38 is 0 bytes inside a block of size 8 free'd
|
||||||
==19540==
|
==3348== at 0x4004FDA: free (vg_replace_malloc.c:233)
|
||||||
==19540== LEAK SUMMARY:
|
==3348== by 0x81039B1: readHdbValue (sicshipadaba.c:1797)
|
||||||
==19540== definitely lost: 69 bytes in 6 blocks.
|
==3348== by 0x81010AF: SICSScriptReadCallback (sicshipadaba.c:683)
|
||||||
==19540== possibly lost: 8,000 bytes in 1 blocks.
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
==19540== still reachable: 65,749 bytes in 1,533 blocks.
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
==19540== suppressed: 0 bytes in 0 blocks.
|
==3348== by 0x80FF222: GetHipadabaPar (hipadaba.c:940)
|
||||||
==19540== Rerun with --leak-check=full to see details of leaked memory.
|
==3348== by 0x8114091: pollHdb (polldriv.c:37)
|
||||||
|
==3348== by 0x811459A: PollTask (sicspoll.c:135)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348== by 0x8057A25: RunServer (nserver.c:406)
|
||||||
|
==3348== by 0x8057F27: main (SICSmain.c:62)
|
||||||
|
==3348==
|
||||||
|
==3348== Invalid read of size 1
|
||||||
|
==3348== at 0x400632E: strcmp (mc_replace_strmem.c:341)
|
||||||
|
==3348== by 0x80FE3D1: compareHdbValue (hipadaba.c:482)
|
||||||
|
==3348== by 0x81140E4: pollHdb (polldriv.c:38)
|
||||||
|
==3348== by 0x811459A: PollTask (sicspoll.c:135)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348== by 0x8057A25: RunServer (nserver.c:406)
|
||||||
|
==3348== by 0x8057F27: main (SICSmain.c:62)
|
||||||
|
==3348== Address 0x4E89ED9 is 1 bytes inside a block of size 957 free'd
|
||||||
|
==3348== at 0x4004FDA: free (vg_replace_malloc.c:233)
|
||||||
|
==3348== by 0x81039B1: readHdbValue (sicshipadaba.c:1797)
|
||||||
|
==3348== by 0x81010AF: SICSScriptReadCallback (sicshipadaba.c:683)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF222: GetHipadabaPar (hipadaba.c:940)
|
||||||
|
==3348== by 0x8114091: pollHdb (polldriv.c:37)
|
||||||
|
==3348== by 0x811459A: PollTask (sicspoll.c:135)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348== by 0x8057A25: RunServer (nserver.c:406)
|
||||||
|
==3348== by 0x8057F27: main (SICSmain.c:62)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27DB2: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100309: sendZippedNodeData (sicshipadaba.c:377)
|
||||||
|
==3348== by 0x81048DA: ZipGetHdbNode (sicshipadaba.c:2193)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x80F6F79: ContextDo (protocol.c:200)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x805027F: SCInvoke (conman.c:1604)
|
||||||
|
==3348== by 0x805165F: SCTaskFunction (conman.c:2097)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27CE9: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100309: sendZippedNodeData (sicshipadaba.c:377)
|
||||||
|
==3348== by 0x81048DA: ZipGetHdbNode (sicshipadaba.c:2193)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x80F6F79: ContextDo (protocol.c:200)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x805027F: SCInvoke (conman.c:1604)
|
||||||
|
==3348== by 0x805165F: SCTaskFunction (conman.c:2097)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27DB2: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100309: sendZippedNodeData (sicshipadaba.c:377)
|
||||||
|
==3348== by 0x81048DA: ZipGetHdbNode (sicshipadaba.c:2193)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x80F6F79: ContextDo (protocol.c:200)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x805027F: SCInvoke (conman.c:1604)
|
||||||
|
==3348== by 0x805165F: SCTaskFunction (conman.c:2097)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27CE9: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100309: sendZippedNodeData (sicshipadaba.c:377)
|
||||||
|
==3348== by 0x81048DA: ZipGetHdbNode (sicshipadaba.c:2193)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x80F6F79: ContextDo (protocol.c:200)
|
||||||
|
==3348== by 0x80527B6: InterpExecute (SCinter.c:322)
|
||||||
|
==3348== by 0x805027F: SCInvoke (conman.c:1604)
|
||||||
|
==3348== by 0x805165F: SCTaskFunction (conman.c:2097)
|
||||||
|
==3348== by 0x8059016: TaskSchedule (task.c:211)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D82: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D91: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27DA3: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D3C: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D4F: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D61: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D70: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D82: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D3C: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D4F: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D61: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D70: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27D91: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27DA3: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27CF9: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804F83D: SCWriteZipped (conman.c:1231)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== Conditional jump or move depends on uninitialised value(s)
|
||||||
|
==3348== at 0xD27CF9: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD28EA0: (within /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0xD282D6: deflate (in /usr/lib/libz.so.1.2.3)
|
||||||
|
==3348== by 0x804FAF2: SCWriteZipped (conman.c:1287)
|
||||||
|
==3348== by 0x8100226: sendZippedNodeData (sicshipadaba.c:362)
|
||||||
|
==3348== by 0x81005D9: SICSNotifyCallback (sicshipadaba.c:458)
|
||||||
|
==3348== by 0x80FDAAF: InvokeCallbackChain (hipadaba.c:154)
|
||||||
|
==3348== by 0x80FF0CE: SendDataMessage (hipadaba.c:912)
|
||||||
|
==3348== by 0x80FF158: UpdateHipadabaPar (hipadaba.c:922)
|
||||||
|
==3348== by 0x81047FE: UpdateHdbNode (sicshipadaba.c:2169)
|
||||||
|
==3348== by 0x805992C: SicsUnknownProc (macro.c:185)
|
||||||
|
==3348== by 0x2E059D: TclInvokeStringCommand (in /usr/lib/libtcl8.4.so)
|
||||||
|
==3348==
|
||||||
|
==3348== ERROR SUMMARY: 57717 errors from 22 contexts (suppressed: 22 from 1)
|
||||||
|
==3348== malloc/free: in use at exit: 1,197,084 bytes in 8,439 blocks.
|
||||||
|
==3348== malloc/free: 595,895 allocs, 587,456 frees, 89,983,020 bytes allocated.
|
||||||
|
==3348== For counts of detected errors, rerun with: -v
|
||||||
|
==3348== searching for pointers to 8,439 not-freed blocks.
|
||||||
|
==3348== checked 708,956 bytes.
|
||||||
|
==3348==
|
||||||
|
==3348== LEAK SUMMARY:
|
||||||
|
==3348== definitely lost: 619,696 bytes in 8,379 blocks.
|
||||||
|
==3348== possibly lost: 439,796 bytes in 28 blocks.
|
||||||
|
==3348== still reachable: 137,592 bytes in 32 blocks.
|
||||||
|
==3348== suppressed: 0 bytes in 0 blocks.
|
||||||
|
==3348== Use --leak-check=full to see details of leaked memory.
|
||||||
|
Reference in New Issue
Block a user