in the process of rewriting detector client interface

This commit is contained in:
2018-10-18 10:58:48 +02:00
parent 178b832223
commit 86fb843021
24 changed files with 1012 additions and 1873 deletions

View File

@ -1,16 +1,6 @@
#include "ClientInterface.h"
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <bitset>
#include <cstdlib>
#include <iostream>
ClientInterface::ClientInterface(MySocketTCP *socket, int n, std::string t):
mySocket(socket),
index(n),
@ -55,29 +45,7 @@ int ClientInterface::Client_Send(int fnum,
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret == FAIL) {
if (Client_GetMesage(mess) == FAIL)
return FAIL;
}
mySocket->ReceiveDataOnly(retval, sizeOfRetval);
return ret;
}
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(args, sizeOfArgs);
mySocket->SendDataOnly(args2, sizeOfArgs2);
int ret = FAIL;
mySocket->ReceiveDataOnly(&ret,sizeof(ret));
if (ret == FAIL) {
if (Client_GetMesage(mess) == FAIL)
return FAIL;
return FAIL;
}
mySocket->ReceiveDataOnly(retval, sizeOfRetval);
@ -89,7 +57,7 @@ void ClientInterface::Server_SendResult(bool update, int ret,
void* retval, int retvalSize, char* mess) {
// update if different clients
if (update && mySocket->differentClients)
if (update && ret == OK && mySocket->differentClients)
ret = FORCE_UPDATE;
// send success of operation
@ -143,7 +111,6 @@ int ClientInterface::Server_VerifyLockAndIdle(int& ret, char* mess, int lockstat
void ClientInterface::Server_NullObjectError(int& ret, char* mess) {
// only for receiver
ret=FAIL;
strcpy(mess,"Receiver not set up. Please use rx_hostname first.\n");
FILE_LOG(logERROR) << mess;
@ -158,7 +125,7 @@ int ClientInterface::Server_SocketCrash() {
int ClientInterface::Server_LockedError(int& ret, char* mess) {
ret = FAIL;
sprintf(mess,"%s locked by %s\n",type.c_str(), mySocket->lastClientIP);
sprintf(mess,"Receiver locked by %s\n", mySocket->lastClientIP);
FILE_LOG(logERROR) << mess;
return ret;
}
@ -166,8 +133,8 @@ int ClientInterface::Server_LockedError(int& ret, char* mess) {
int ClientInterface::Server_NotIdleError(int& ret, char* mess, int fnum) {
ret = FAIL;
sprintf(mess,"Can not execute %s when %s is not idle\n",
getFunctionNameFromEnum((enum detFuncs)fnum), type.c_str());
sprintf(mess,"Can not execute %s when receiver is not idle\n",
getFunctionNameFromEnum((enum detFuncs)fnum));
FILE_LOG(logERROR) << mess;
return ret;
}

View File

@ -57,24 +57,8 @@ public:
void* retval, int sizeOfRetval,
char* mess = 0);
/**
* Send Arguments (second set) to server and get result back
* @param fnum function enum to determine what parameter
* @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 Client_Send(int fnum,
void* args, int sizeOfArgs,
void* args2, int sizeOfArgs2,
void* retval, int sizeOfRetval,
char* mess = 0);
/**
/** only Receiver
* Server sends result to client (also set ret to force_update if different clients)
* @param update true if one must update if different clients, else false
* @param ret success of operation
@ -84,7 +68,7 @@ public:
*/
void Server_SendResult(bool update, int ret, void* retval, int retvalSize, char* mess = 0);
/**
/** only Receiver
* Server receives arguments and checks if base object is null (if checkbase is true)
* checking base object is null (for reciever only when it has not been configured yet)
* @param ret pointer to success of operation
@ -97,8 +81,9 @@ public:
*/
int Server_ReceiveArg(int& ret, char* mess, void* arg, int sizeofArg,bool checkbase=false, void* base=NULL);
/**
* Server verifies if it is locked, sets and prints appropriate message if it is
/** only Receiver
* Server verifies if it is unlocked,
* sets and prints appropriate message if it is locked and different clients
* @param ret pointer to sucess
* @param mess message
* @param lockstatus status of lock
@ -106,8 +91,9 @@ public:
*/
int Server_VerifyLock(int& ret, char* mess, int lockstatus);
/**
* Server verifies if it is locked and idle, sets and prints appropriate message if it is
/** only Receiver
* Server verifies if it is unlocked and idle,
* sets and prints appropriate message if it is locked and different clients
* @param ret pointer to sucess
* @param mess message
* @param lockstatus status of lock
@ -117,20 +103,20 @@ public:
*/
int Server_VerifyLockAndIdle(int& ret, char* mess, int lockstatus, slsDetectorDefs::runStatus status, int fnum);
/**
/** only Receiver
* Server sets and prints error message for null object error (receiver only)
* @param ret pointer to sucess that will be set to FAIL
* @param mess message
*/
void Server_NullObjectError(int& ret, char* mess);
/**
/** only Receiver
* Servers prints error message for socket crash when reading
* @returns always FAIL
*/
int Server_SocketCrash();
/**
/** only Receiver
* Servers sets and prints error message for locked server
* @param ret pointer to sucess that will be set to FAIL
* @param mess message
@ -138,7 +124,7 @@ public:
*/
int Server_LockedError(int& ret, char* mess);
/**
/** only Receiver
* Servers sets and prints error message for server not being idle
* @param ret pointer to sucess that will be set to FAIL
* @param mess message
@ -154,7 +140,7 @@ private:
*/
MySocketTCP *mySocket;
/** index for debugging purposes */
/** index for client debugging purposes */
int index;
/** string for type to differentiate between Detector & Receiver in printouts */

View File

@ -81,11 +81,10 @@ public:
GENERIC, /**< generic sls detector */
EIGER, /**< eiger */
GOTTHARD, /**< gotthard */
MOENCH, /**< moench */
JUNGFRAU, /**< jungfrau */
JUNGFRAUCTB, /**< jungfrauCTBversion */
PROPIX, /**< propix */
MYTHEN3 /**< mythen 3 */
MYTHEN3, /**< mythen 3 */
MOENCH /**< moench */
};