Now, I fiddling with the message writitng code, I get all remote object
messages but in the wrong order. They are sent in the right order, though. Have to chnage the code to use one connection asynchronously for everything only.
This commit is contained in:
@ -17,7 +17,7 @@
|
||||
*
|
||||
* COPRYRIGHT: see file COPYRIGHT
|
||||
*
|
||||
* Mark Koennecke, February 2015
|
||||
* Mark Koennecke, February-May 2015
|
||||
**/
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
@ -209,8 +209,8 @@ static void ConnectRemoteObject(pRemoteOBJ self)
|
||||
return;
|
||||
}
|
||||
|
||||
self->readHandle = ANETconnect(self->host, self->port);
|
||||
self->writeHandle = ANETconnect(self->host, self->port);
|
||||
self->readHandle = ANETconnect(self->host, self->port);
|
||||
self->transactHandle = ANETconnect(self->host, self->port);
|
||||
if(self->readHandle < 0 || self->writeHandle < 0 || self->transactHandle < 0){
|
||||
self->connected = 0;
|
||||
@ -566,15 +566,15 @@ static int WriteResponseTask(void *pData)
|
||||
}
|
||||
|
||||
pText = ANETreadPtr(self->writeHandle,&length);
|
||||
if(length > 0){
|
||||
while(length > 0){
|
||||
json_tokener_reset(self->jtok);
|
||||
message = json_tokener_parse_ex(self->jtok,pText,length);
|
||||
tokerr = self->jtok->err;
|
||||
if(tokerr == json_tokener_continue){
|
||||
return 1;
|
||||
} else if(tokerr != json_tokener_success) {
|
||||
traceIO("RO","JSON parsing error %s on %s from %s",
|
||||
json_tokener_errors[tokerr], pText, self->host);
|
||||
traceIO("RO","JSON parsing error %s on %s from %s %d",
|
||||
json_tokener_errors[tokerr], pText, self->host, self->jtok->char_offset);
|
||||
ANETreadConsume(self->writeHandle,length);
|
||||
return 1;
|
||||
}
|
||||
@ -614,6 +614,8 @@ static int WriteResponseTask(void *pData)
|
||||
return 1;
|
||||
}
|
||||
pText = (char *)json_object_get_string(data);
|
||||
|
||||
traceIO("RO","Received:%s:%d:%d:%s",self->host,transID,eOut,pText);
|
||||
|
||||
status = LLDnodePtr2First(self->writeList);
|
||||
while(status == 1){
|
||||
@ -625,6 +627,9 @@ static int WriteResponseTask(void *pData)
|
||||
SCDeleteConnection(WD.pCon);
|
||||
LLDblobDelete(self->writeList);
|
||||
return 1;
|
||||
} else if(strstr(pText,"COMEND") != NULL && WD.waitTask == 1) {
|
||||
/* skip */
|
||||
return 1;
|
||||
} else if(strstr(pText,"TASKSTART") != NULL){
|
||||
WD.waitTask = 1 ;
|
||||
LLDblobDelete(self->writeList);
|
||||
@ -641,7 +646,7 @@ static int WriteResponseTask(void *pData)
|
||||
}
|
||||
status = LLDnodePtr2Next(self->writeList);
|
||||
}
|
||||
|
||||
pText = ANETreadPtr(self->writeHandle,&length);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@ -695,6 +700,7 @@ static hdbCallbackReturn ROWriteCallback(pHdb currentNode, void *userData,
|
||||
write
|
||||
*/
|
||||
traceIO("RO","%s:%d: Sending %s ", self->host, self->port, command);
|
||||
LLDblobAppend(self->writeList,&WD,sizeof(writeData));
|
||||
status = ANETwrite(self->writeHandle,command,strlen(command));
|
||||
free(command);
|
||||
DeleteDynString(data);
|
||||
@ -704,7 +710,6 @@ static hdbCallbackReturn ROWriteCallback(pHdb currentNode, void *userData,
|
||||
}
|
||||
return hdbAbort;
|
||||
}
|
||||
LLDblobAppend(self->writeList,&WD,sizeof(writeData));
|
||||
return hdbContinue;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user