- 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:
33
ascon.c
33
ascon.c
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user