- Scriptcontext debugged to be working

- Added a drivable adapter to scriptcontext nodes
- Added subsampling to simulated histograms (and as a general option) in
  order to support Gumtree testing.
This commit is contained in:
koennecke
2008-06-09 08:57:53 +00:00
parent 3cb901b437
commit 0915491925
33 changed files with 1938 additions and 247 deletions

33
ascon.c
View File

@ -75,9 +75,9 @@ static void AsconError(Ascon *a, char *msg, int errorno) {
state = stateText[a->state];
}
if (errorno != 0) {
ErrPutMsg(a->errList, "%s %s (during %s)", msg, strerror(errorno), state);
a->errList = ErrPutMsg(a->errList, &a->curError, "ASCERR: %s %s (during %s)", msg, strerror(errorno), state);
} else {
ErrPutMsg(a->errList, "%s (during %s)", msg, state);
a->errList = ErrPutMsg(a->errList, &a->curError, "ASCERR: %s (during %s)", msg, state);
}
a->state |= AsconFailed;
}
@ -126,12 +126,21 @@ static void AsconConnect(Ascon *a) {
return;
}
void AsconStdInit(Ascon *a, char *hostport) {
void AsconStdInit(Ascon *a, int argc, char *argv[]) {
a->fd = -1;
a->state = AsconConnectStart;
a->timeout = 2.0; /* sec */
a->reconnectInterval = 10;
a->hostport = strdup(hostport);
a->hostport = strdup(argv[1]);
if(argc < 2){
a->sendTerminator = strdup(argv[2]);
} else {
a->sendTerminator = strdup("\n");
}
if(argc > 3){
a->timeout = atof(argv[3]);
} else {
a->timeout = 2.0; /* sec */
}
}
int AsconReadGarbage(int fd) {
@ -276,7 +285,7 @@ int AsconStdHandler(Ascon *a) {
}
break;
case AsconWriteStart:
DynStringConcatChar(a->wrBuffer, '\r');
DynStringConcat(a->wrBuffer, a->sendTerminator);
a->wrPos = 0;
a->state = AsconWriting;
break;
@ -337,6 +346,7 @@ int AsconStdHandler(Ascon *a) {
if (a->timeout > 0) {
if (DoubleTime() - a->start > a->timeout) {
AsconError(a, "read timeout", 0);
a->state = AsconTimeout;
}
}
}
@ -363,7 +373,7 @@ AsconHandler AsconSetHandler(Ascon *a, int argc, char *argv[]) {
if (argc < 1) return NULL;
if (strcasecmp(argv[0], "std") == 0) {
if (argc != 2) return NULL;
AsconStdInit(a, argv[1]);
AsconStdInit(a, argc, argv);
return AsconStdHandler;
}
for (p = protocols.head; p!= NULL; p=p->next) {
@ -402,7 +412,6 @@ Ascon *AsconMake(SConnection *con, int argc, char *argv[]) {
a->wrBuffer = CreateDynString(60, 63);
a->errList = NULL;
a->responseValid = 0;
a->timeout = 2.0;
a->reconnectInterval = 10;
a->lastReconnect = 0;
return a;
@ -419,6 +428,9 @@ void AsconKill(Ascon *a) {
if (a->hostport) {
free(a->hostport);
}
if(a->sendTerminator){
free(a->sendTerminator);
}
free(a);
}
@ -454,13 +466,12 @@ AsconStatus AsconTask(Ascon *a) {
case AsconStart:
return AsconPending;
case AsconFailed:
if (a->state <= AsconConnectFailed) {
if (a->state != AsconTimeout) {
now = DoubleTime();
if (now > a->lastReconnect + a->reconnectInterval) {
a->lastReconnect = now;
a->state = AsconConnectStart;
}
return AsconUnconnected;
}
return AsconFailure;
case AsconFinished:
@ -501,5 +512,5 @@ char *AsconRead(Ascon *a) {
}
ErrMsg *AsconGetErrList(Ascon *a) {
return a->errList;
return a->curError;
}