refactored client interface (client ot receiveR)

This commit is contained in:
maliakal_d 2018-10-10 18:09:14 +02:00
parent e1d570e8ce
commit f69e9d0df4
4 changed files with 151 additions and 318 deletions

View File

@ -185,7 +185,7 @@ int slsDetector::checkVersionCompatibility(portType t) {
if (connectData() == OK){
// ignoring retval
int64_t retval = -1;
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
if (ret==FAIL){
setErrorMask((getErrorMask())|(VERSION_COMPATIBILITY));
if(strstr(mess,"Unrecognized Function")!=NULL)
@ -222,7 +222,7 @@ int64_t slsDetector::getId( idMode mode) {
} else if (mode==RECEIVER_VERSION) {
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) {
if (connectData() == OK){
ret=thisReceiver->GetInt(fnum2,retval);
ret=thisReceiver->Client_Send(fnum2, NULL, 0, &retval, sizeof(retval));
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -957,10 +957,11 @@ int slsDetector::setDetectorType(detectorType const type) {
(int)thisDetector->myDetectorType << std::endl;
#endif
if (connectData() == OK){
int arg = 0;
ret=thisReceiver->SendInt(fnum2,arg,(int)thisDetector->myDetectorType);
int arg = (int)thisDetector->myDetectorType;
int retval2 = 0;
ret=thisReceiver->Client_Send(fnum2, &arg, sizeof(arg), &retval2, sizeof(retval2));
disconnectData();
retval = (detectorType)arg;
retval = (detectorType)retval2;
}
if(ret==FAIL){
std::cout << "ERROR: Could not send detector type to receiver" << std::endl;
@ -2761,7 +2762,7 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t) {
char mess[MAX_STR_LENGTH]="";
if (connectData() == OK){
ret=thisReceiver->SendIntArray(fnum2,retval,args,mess);
ret=thisReceiver->Client_Send(fnum2, &args, sizeof(args), &retval, sizeof(retval), mess);
disconnectData();
}
if((args[1] != retval)|| (ret==FAIL)){
@ -2951,7 +2952,7 @@ int slsDetector::setDynamicRange(int n) {
n << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum2,retval1,n);
ret=thisReceiver->Client_Send(fnum2, &n, sizeof(n), &retval1, sizeof(retval1));
disconnectData();
}
if ((ret==FAIL) || (retval1 != retval)){
@ -3531,7 +3532,7 @@ std::string slsDetector::getReceiverRealUDPSocketBufferSize() {
std::cout << "Getting real UDP Socket Buffer size to receiver " << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->GetInt(fnum,retval);
ret=thisReceiver->Client_Send(fnum, NULL, 0, &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL) {
@ -3841,7 +3842,7 @@ std::string slsDetector::setReceiverStreamingPort(std::string port) {
std::cout << "Sending receiver streaming port to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if (ret==FAIL) {
@ -3928,7 +3929,7 @@ std::string slsDetector::setReceiverStreamingIP(std::string sourceIP) {
std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendString(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, arg, MAX_STR_LENGTH, retval, MAX_STR_LENGTH);
disconnectData();
}
if(ret==FAIL) {
@ -3960,7 +3961,7 @@ std::string slsDetector::setAdditionalJsonHeader(std::string jsonheader) {
std::cout << "Sending additional json header " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendString(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, arg, MAX_STR_LENGTH, retval, MAX_STR_LENGTH);
disconnectData();
}
if(ret==FAIL) {
@ -3988,7 +3989,7 @@ std::string slsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize) {
std::cout << "Sending UDP Socket Buffer size to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL) {
@ -4101,7 +4102,7 @@ int slsDetector::setUDPConnection() {
std::cout << "Setting up UDP Connection for Receiver " << args[0] << "\t" << args[1] << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendUDPDetails(fnum,retval,args);
ret=thisReceiver->Client_Send(fnum, &args, sizeof(args), &retval, sizeof(retval));
disconnectData();
}
if(ret!=FAIL){
@ -4472,7 +4473,9 @@ int slsDetector::sendROI(int n,ROI roiLimits[]) {
std::cout << "Sending ROI to receiver " << thisDetector->nROI << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendROI(fnum, thisDetector->nROI, thisDetector->roiLimits);
ret=thisReceiver->Client_Send(fnum,
&thisDetector->nROI, sizeof(thisDetector->nROI),
thisDetector->roiLimits, thisDetector->nROI * sizeof(ROI));
disconnectData();
}
if(ret==FAIL)
@ -4586,7 +4589,7 @@ int slsDetector::activate(int const enable) {
std::cout << "Activating/Deactivating Receiver: " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum2,retval,arg);
ret=thisReceiver->Client_Send(fnum2, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -4626,7 +4629,7 @@ int slsDetector::setDeactivatedRxrPaddingMode(int padding) {
std::cout << "Deactivated Receiver Padding Enable: " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -4675,7 +4678,7 @@ int slsDetector::setFlippedData(dimension d, int value) {
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) {
if (connectData() == OK){
ret=thisReceiver->SendIntArray(fnum,retval,args);
ret=thisReceiver->Client_Send(fnum, args, sizeof(args), &retval, sizeof(retval));
disconnectData();
}
@ -4745,7 +4748,7 @@ int slsDetector::enableGapPixels(int val) {
int arg=val;
if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) {
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if((arg != retval) || (ret==FAIL)){
@ -5932,7 +5935,7 @@ int slsDetector::lockReceiver(int lock) {
std::cout << "Locking or Unlocking Receiver " << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -5957,7 +5960,7 @@ std::string slsDetector::getReceiverLastClientIP() {
std::cout << "Geting Last Client IP connected to Receiver " << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->GetLastClientIP(fnum,retval);
ret=thisReceiver->Client_Send(fnum, NULL, 0, retval, INET_ADDRSTRLEN);
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6006,7 +6009,7 @@ int slsDetector::execReceiverCommand(std::string cmd) {
std::cout << "Sending to receiver the command: " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendString(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, arg, MAX_STR_LENGTH, retval, MAX_STR_LENGTH);
disconnectData();
}
}
@ -6147,7 +6150,7 @@ void slsDetector::sendMultiDetectorSize() {
<< thisDetector->multiSize[1] << ")" << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendIntArray(fnum,retval,thisDetector->multiSize);
ret=thisReceiver->Client_Send(fnum, thisDetector->multiSize, sizeof(thisDetector->multiSize), &retval, sizeof(retval));
disconnectData();
}
if((ret==FAIL)){
@ -6169,7 +6172,7 @@ void slsDetector::setDetectorId() {
std::cout << "Sending detector pos id to Receiver " << detId << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if((ret==FAIL) || (retval != arg)){
@ -6192,7 +6195,7 @@ void slsDetector::setDetectorHostname() {
thisDetector->hostname << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendString(fnum,retval,thisDetector->hostname);
ret=thisReceiver->Client_Send(fnum, thisDetector->hostname, MAX_STR_LENGTH, retval, MAX_STR_LENGTH);
disconnectData();
}
if((ret==FAIL) || (strcmp(retval,thisDetector->hostname)))
@ -6223,7 +6226,7 @@ std::string slsDetector::setFilePath(std::string s) {
std::cout << "Sending file path to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendString(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, arg, MAX_STR_LENGTH, retval, MAX_STR_LENGTH);
disconnectData();
}
if(ret!=FAIL){
@ -6264,7 +6267,7 @@ std::string slsDetector::setFileName(std::string s) {
std::cout << "Sending file name to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendString(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, arg, MAX_STR_LENGTH, retval, MAX_STR_LENGTH);
disconnectData();
}
if (ret == FAIL)
@ -6295,7 +6298,7 @@ int slsDetector::setReceiverFramesPerFile(int f) {
std::cout << "Sending frames per file to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if (ret == FAIL)
@ -6322,7 +6325,7 @@ slsReceiverDefs::frameDiscardPolicy slsDetector::setReceiverFramesDiscardPolicy(
std::cout << "Sending frames discard policy to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -6349,7 +6352,7 @@ int slsDetector::setReceiverPartialFramesPadding(int f) {
std::cout << "Sending partial frames enable to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -6379,7 +6382,7 @@ slsReceiverDefs::fileFormat slsDetector::setFileFormat(fileFormat f) {
std::cout << "Sending file format to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if (ret == FAIL)
@ -6417,7 +6420,7 @@ int slsDetector::setFileIndex(int i) {
std::cout << "Sending file index to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if (ret == FAIL)
@ -6452,7 +6455,7 @@ int slsDetector::startReceiver() {
#endif
if (connectData() == OK){
ret=thisReceiver->ExecuteFunction(fnum,mess);
ret=thisReceiver->Client_Send(fnum, NULL, 0, NULL, 0, mess);
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6483,7 +6486,7 @@ int slsDetector::stopReceiver() {
std::cout << "Stopping Receiver " << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->ExecuteFunction(fnum,mess);
ret=thisReceiver->Client_Send(fnum, NULL, 0, NULL, 0, mess);
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6510,7 +6513,7 @@ slsDetectorDefs::runStatus slsDetector::getReceiverStatus() {
std::cout << "Getting Receiver Status" << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->GetInt(fnum,retval);
ret=thisReceiver->Client_Send(fnum, NULL, 0, &retval, sizeof(retval));
disconnectData();
}
if(retval!=-1)
@ -6535,7 +6538,7 @@ int slsDetector::getFramesCaughtByReceiver() {
std::cout << "Getting Frames Caught by Receiver " << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->GetInt(fnum,retval);
ret=thisReceiver->Client_Send(fnum, NULL, 0, &retval, sizeof(retval));
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6563,7 +6566,7 @@ int slsDetector::getReceiverCurrentFrameIndex() {
std::cout << "Getting Current Frame Index of Receiver " << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->GetInt(fnum,retval);
ret=thisReceiver->Client_Send(fnum, NULL, 0, &retval, sizeof(retval));
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6586,7 +6589,7 @@ int slsDetector::resetFramesCaught() {
std::cout << "Reset Frames Caught by Receiver" << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->ExecuteFunction(fnum,mess);
ret=thisReceiver->Client_Send(fnum, NULL, 0, NULL, 0, mess);
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6621,7 +6624,7 @@ int slsDetector::enableWriteToFile(int enable) {
std::cout << "Sending enable file write to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if (ret == FAIL)
@ -6655,7 +6658,7 @@ int slsDetector::overwriteFile(int enable) {
std::cout << "Sending enable file write to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if (ret == FAIL)
@ -6690,7 +6693,7 @@ int slsDetector::setReceiverStreamingFrequency(int freq) {
std::cout << "Sending read frequency to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if((ret == FAIL) || (retval != freq)) {
@ -6720,7 +6723,7 @@ int slsDetector::setReceiverStreamingTimer(int time_in_ms) {
std::cout << "Sending read timer to receiver " << arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FORCE_UPDATE)
@ -6760,7 +6763,7 @@ int slsDetector::enableDataStreamingFromReceiver(int enable) {
<< arg << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,arg);
ret=thisReceiver->Client_Send(fnum, &arg, sizeof(arg), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL) {
@ -6822,7 +6825,7 @@ int slsDetector::enableTenGigabitEthernet(int i) {
<< i << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum2,retval,i);
ret=thisReceiver->Client_Send(fnum2, &i, sizeof(i), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -6853,7 +6856,7 @@ int slsDetector::setReceiverFifoDepth(int i) {
std::cout<< "Setting Receiver Fifo Depth to " << i << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,i);
ret=thisReceiver->Client_Send(fnum, &i, sizeof(i), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -6878,7 +6881,7 @@ int slsDetector::setReceiverSilentMode(int i) {
std::cout<< "Setting Receiver Silent Mode to " << i << std::endl;
#endif
if (connectData() == OK){
ret=thisReceiver->SendInt(fnum,retval,i);
ret=thisReceiver->Client_Send(fnum, &i, sizeof(i), &retval, sizeof(retval));
disconnectData();
}
if(ret==FAIL)
@ -6903,7 +6906,7 @@ int slsDetector::restreamStopFromReceiver() {
#endif
if (connectData() == OK){
ret=thisReceiver->ExecuteFunction(fnum,mess);
ret=thisReceiver->Client_Send(fnum, NULL, 0, NULL, 0, mess);
disconnectData();
}
if(ret==FORCE_UPDATE)

View File

@ -501,11 +501,8 @@ int slsReceiverTCPIPInterface::get_last_client_ip() {
if (mySock->differentClients)
ret = FORCE_UPDATE;
// send answer
mySock->SendDataOnly(&ret,sizeof(ret));
mySock->SendDataOnly(mySock->lastClientIP,sizeof(mySock->lastClientIP));
clientInterface->Server_SendResult(ret,mySock->lastClientIP, INET_ADDRSTRLEN);
// return ok/fail
return ret;
}
@ -741,21 +738,13 @@ int slsReceiverTCPIPInterface::send_update() {
int slsReceiverTCPIPInterface::get_id(){
ret = OK;
int64_t retval=-1;
// execute action
#ifdef SLS_RECEIVER_UDP_FUNCTIONS
retval = getReceiverVersion();
#endif
int64_t retval = getReceiverVersion();
if(mySock->differentClients)
ret = FORCE_UPDATE;
// send answer
mySock->SendDataOnly(&ret,sizeof(ret));
mySock->SendDataOnly(&retval,sizeof(retval));
clientInterface->Server_SendResult(ret, &retval, sizeof(retval));
// return ok/fail
return ret;
}

View File

@ -16,201 +16,84 @@ mySocket(socket),
index(n),
type(t){}
ClientInterface::~ClientInterface(){}
void ClientInterface::SetSocket(MySocketTCP *socket) {
mySocket=socket;
}
int ClientInterface::SendString(int fnum, char retval[], char arg[]){
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(arg,MAX_STR_LENGTH);
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
int ClientInterface::PrintSocketReadError() {
FILE_LOG(logERROR) << "Reading from socket failed. Possible socket crash";
return FAIL;
}
void ClientInterface::Server_SendResult(int ret, void* retval, int retvalSize) {
mySocket->SendDataOnly(&ret,sizeof(ret));
mySocket->SendDataOnly(retval, retvalSize);
}
int ClientInterface::Client_GetMesage(char* mess) {
int ret = OK;
if (!mess){
char messref[MAX_STR_LENGTH];
memset(messref, 0, MAX_STR_LENGTH);
mess = (char*)messref;
}
if(strstr(mess,"Unrecognized Function")==NULL)
mySocket->ReceiveDataOnly(retval,MAX_STR_LENGTH);
mySocket->ReceiveDataOnly(mess,MAX_STR_LENGTH);
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
if(strstr(mess,"Unrecognized Function")!=NULL)
ret = FAIL;
return ret;
}
int ClientInterface::SendUDPDetails(int fnum, char retval[], char arg[3][MAX_STR_LENGTH]){
char args[3][MAX_STR_LENGTH];
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
int ClientInterface::Client_Send(int fnum,
void* args, int sizeOfArgs,
void* retval, int sizeOfRetval,
char* mess) {
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(arg,sizeof(args));
mySocket->SendDataOnly(args, sizeOfArgs);
int ret = FAIL;
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
if (ret == FAIL) {
if (Client_GetMesage(mess) == FAIL)
return FAIL;
}
else
mySocket->ReceiveDataOnly(retval,MAX_STR_LENGTH);
mySocket->ReceiveDataOnly(retval, sizeOfRetval);
return ret;
}
int ClientInterface::SendInt(int fnum, int &retval, int arg){
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
int ClientInterface::Client_Send(int fnum,
void* args, int sizeOfArgs,
void* args2, int sizeOfArgs2,
void* retval, int sizeOfRetval,
char* mess) {
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(&arg,sizeof(arg));
mySocket->SendDataOnly(args, sizeOfArgs);
mySocket->SendDataOnly(args2, sizeOfArgs2);
int ret = FAIL;
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
if (ret == FAIL) {
if (Client_GetMesage(mess) == FAIL)
return FAIL;
}
if(strstr(mess,"Unrecognized Function")==NULL)
mySocket->ReceiveDataOnly(&retval,sizeof(retval));
mySocket->ReceiveDataOnly(retval, sizeOfRetval);
return ret;
}
int ClientInterface::GetInt(int fnum, int &retval){
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
}
if(strstr(mess,"Unrecognized Function")==NULL)
mySocket->ReceiveDataOnly(&retval,sizeof(retval));
return ret;
}
int ClientInterface::SendInt(int fnum, int64_t &retval, int64_t arg){
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(&arg,sizeof(arg));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
}
if(strstr(mess,"Unrecognized Function")==NULL)
mySocket->ReceiveDataOnly(&retval,sizeof(retval));
return ret;
}
int ClientInterface::SendIntArray(int fnum, int64_t &retval, int64_t arg[2], char mess[]){
int64_t args[2];
int ret = slsDetectorDefs::FAIL;
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(arg,sizeof(args));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,MAX_STR_LENGTH);
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
}
if(strstr(mess,"Unrecognized Function")==NULL)
mySocket->ReceiveDataOnly(&retval,sizeof(retval));
return ret;
}
int ClientInterface::SendIntArray(int fnum, int &retval, int arg[2]){
int args[2];
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(arg,sizeof(args));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
}
if(strstr(mess,"Unrecognized Function")==NULL)
mySocket->ReceiveDataOnly(&retval,sizeof(retval));
return ret;
}
int ClientInterface::GetInt(int fnum, int64_t &retval){
int ret = slsDetectorDefs::FAIL;
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
mySocket->ReceiveDataOnly(&retval,sizeof(retval));
return ret;
}
int ClientInterface::GetLastClientIP(int fnum, char retval[]){
int ret = slsDetectorDefs::FAIL;
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
mySocket->ReceiveDataOnly(retval,INET_ADDRSTRLEN);
return ret;
}
int ClientInterface::ExecuteFunction(int fnum,char mess[]){
int ret = slsDetectorDefs::FAIL;
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,MAX_STR_LENGTH);
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
}
return ret;
}
int ClientInterface::SendROI(int fnum, int n, slsReceiverDefs::ROI roiLimits[]) {
int ret = slsDetectorDefs::FAIL;
char mess[MAX_STR_LENGTH];
memset(mess, 0, MAX_STR_LENGTH);
mySocket->SendDataOnly(&fnum,sizeof(fnum));
mySocket->SendDataOnly(&n,sizeof(n));
mySocket->SendDataOnly(roiLimits,n * sizeof(slsReceiverDefs::ROI));
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret==slsDetectorDefs::FAIL){
mySocket->ReceiveDataOnly(mess,sizeof(mess));
cprintf(RED, "%s %d returned error: %s", type.c_str(), index, mess);
}
return ret;
}

View File

@ -1,16 +1,16 @@
#pragma once
#include "sls_detector_defs.h"
#include "sls_receiver_defs.h"
#include "MySocketTCP.h"
/**
* @short the ClientInterface class is the interface between the client and the server
*/
// Do not overload to make it easier for manual comparison between client and server functions
class ClientInterface{
class ClientInterface: public virtual slsReceiverDefs{
public:
@ -31,103 +31,61 @@ public:
* Set the datasocket
* @param socket the data socket
*/
void SetSocket(MySocketTCP *socket){mySocket=socket;};
void SetSocket(MySocketTCP *socket);
/**
* Send a string to server
* Print socket read error in Server
*/
int PrintSocketReadError();
/**
* Server sends result to client
* @param ret success of operation
* @param retval pointer to result
* @param retvalSize size of result
*/
void Server_SendResult(int ret, void* retval, int retvalSize);
/**
* Get message from server
* Print appropriate message
* Check for Unrecognized function in message and return fail if it does
* to prevent getting retval from the server afterwards
* @param mess message
* @returns FAIL if unrecognized function found in message, else OK
*/
int Client_GetMesage(char* mess=0);
/**
* Send Arguments to server and get result back
* @param fnum function enum to determine what parameter
* @param retval return value
* @param arg value to send
* \returns success of operation
* @param args pointer to arguments
* @param sizeOfArgs argument size
* @param retval pointer to return value
* @param sizeOfRetval return value size
* @param mess pointer to message if message required externally
*/
int SendString(int fnum, char retval[], char arg[]);
int Client_Send(int fnum,
void* args, int sizeOfArgs,
void* retval, int sizeOfRetval,
char* mess = 0);
/**
* Send a string to server
* @param fnum function enum to send udp ip and udp port
* @param retval return value server mac
* @param arg value to send
* \returns success of operation
*/
int SendUDPDetails(int fnum, char retval[], char arg[3][MAX_STR_LENGTH]);
/**
* Send an integer to server
* Send Arguments (second set) to server and get result back
* @param fnum function enum to determine what parameter
* @param retval return value
* @param arg value to send
* \returns success of operation
* @param args pointer to arguments
* @param sizeOfArgs argument size
* @param args2 pointer to arguments 2
* @param sizeOfArgs2 argument size 2
* @param retval pointer to return value
* @param sizeOfRetval return value size
* @param mess pointer to message if message required externally
*/
int SendInt(int fnum, int &retval, int arg);
/**
* Get an integer value from server
* @param fnum function enum to determine what parameter
* @param retval return value
* \returns success of operation
*/
int GetInt(int fnum, int &retval);
/**
* Send an integer to server
* @param fnum function enum to determine what parameter
* @param retval return value
* @param arg value to send
* \returns success of operation
*/
int SendInt(int fnum, int64_t &retval, int64_t arg);
/**
* Send an integer to server
* @param fnum function enum to determine what parameter
* @param retval return value
* @param arg values to send
* @param mess message returned
* \returns success of operation
*/
int SendIntArray(int fnum, int64_t &retval, int64_t arg[2],char mess[]);
/**
* Send an integer to server
* @param fnum function enum to determine what parameter
* @param retval return value
* @param arg values to send
* \returns success of operation
*/
int SendIntArray(int fnum, int &retval, int arg[2]);
/**
* Get an integer value from server
* @param fnum function enum to determine what parameter
* @param retval return value
* \returns success of operation
*/
int GetInt(int fnum, int64_t &retval);
/**
* Get last client ip connected to server
* @param fnum function enum to get last client up
* @param retval return value
* \returns success of operation
*/
int GetLastClientIP(int fnum, char retval[]);
/**
* Send a function number to execute function
* @param fnum function enum to determine which function to execute
* @param mess return error message
* \returns success of operation
*/
int ExecuteFunction(int fnum,char mess[]);
/**
* Send an integer to server
* @param fnum function enum to determine what parameter
* @param n number of ROIs to send
* @param roiLimits ROI structure
* \returns success of operation
*/
int SendROI(int fnum, int n, slsReceiverDefs::ROI roiLimits[]);
int Client_Send(int fnum,
void* args, int sizeOfArgs,
void* args2, int sizeOfArgs2,
void* retval, int sizeOfRetval,
char* mess = 0);
private: