mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-05 17:40:40 +02:00
developer: moench empty data callback (#936)
* moench (feature to wait for post processing to be done in new sls_detector_acquire_zmq executable) READOUT_ACTION_ZMQ added to action enums sls_detector_acquire_zmq added to executables empty data call back so that client listens to last dummy zmq packet from moench post processor processor: remove NEWZMQ ifdefs and remove connect for zmq publisher socket * fix to compile * cmds generated and parsed
This commit is contained in:
parent
c13049f144
commit
de33aff077
@ -183,8 +183,8 @@ int main(int argc, char *argv[]) {
|
||||
gainfname = args["gainfile"];
|
||||
etafname = args["etafilefile"];
|
||||
|
||||
if (atoi(args["nuninterfaces"].c_str())>1){
|
||||
cprintf(RED, "Sorry, at the moment only a single interface is supported instead of %d\n",atoi(args["nuninterfaces"].c_str()));
|
||||
if (atoi(args["numinterfaces"].c_str())>1){
|
||||
cprintf(RED, "Sorry, at the moment only a single interface is supported instead of %d\n",atoi(args["numinterfaces"].c_str()));
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
@ -272,54 +272,34 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
sls::ZmqSocket *zmqsocket = NULL;
|
||||
|
||||
#ifdef NEWZMQ
|
||||
// receive socket
|
||||
try {
|
||||
#endif
|
||||
|
||||
zmqsocket = new sls::ZmqSocket(socketip.c_str(), portnum);
|
||||
|
||||
#ifdef NEWZMQ
|
||||
} catch (...) {
|
||||
cprintf(RED,
|
||||
"Error: Could not create Zmq socket on port %d with ip %s\n",
|
||||
"Error: Could not create Zmq receiving socket on port %d with ip %s\n",
|
||||
portnum, socketip.c_str());
|
||||
delete zmqsocket;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NEWZMQ
|
||||
if (zmqsocket->IsError()) {
|
||||
cprintf(RED,
|
||||
"Error: Could not create Zmq socket on port %d with ip %s\n",
|
||||
portnum, socketip.c_str());
|
||||
delete zmqsocket;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
#endif
|
||||
if (zmqsocket->Connect()) {
|
||||
cprintf(RED, "Error: Could not connect to socket %s\n",
|
||||
cprintf(RED, "Error: Could not connect to Zmq receiving socket %s\n",
|
||||
(zmqsocket->GetZmqServerAddress()).c_str());
|
||||
delete zmqsocket;
|
||||
return EXIT_FAILURE;
|
||||
} else
|
||||
printf("Zmq Client at %s\n", zmqsocket->GetZmqServerAddress().c_str());
|
||||
printf("Zmq receiving socket at %s\n", zmqsocket->GetZmqServerAddress().c_str());
|
||||
|
||||
// send socket
|
||||
sls::ZmqSocket *zmqsocket2 = 0;
|
||||
// cout << "zmq2 " << endl;
|
||||
if (send) {
|
||||
#ifdef NEWZMQ
|
||||
// receive socket
|
||||
try {
|
||||
#endif
|
||||
zmqsocket2 = new sls::ZmqSocket(portnum2, socketip2.c_str());
|
||||
|
||||
#ifdef NEWZMQ
|
||||
zmqsocket2 = new sls::ZmqSocket(portnum2, socketip2.c_str());
|
||||
} catch (...) {
|
||||
cprintf(RED,
|
||||
"Error: Could not create Zmq socket server on port %d and "
|
||||
"Error: Could not create Zmq sending socket on port %d and "
|
||||
"ip %s\n",
|
||||
portnum2, socketip2.c_str());
|
||||
// delete zmqsocket2;
|
||||
@ -328,28 +308,7 @@ int main(int argc, char *argv[]) {
|
||||
// return EXIT_FAILURE;
|
||||
send = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NEWZMQ
|
||||
if (zmqsocket2->IsError()) {
|
||||
cprintf(RED,
|
||||
"AAA Error: Could not create Zmq socket server on port %d "
|
||||
"and ip %s\n",
|
||||
portnum2, socketip2.c_str());
|
||||
// delete zmqsocket2;
|
||||
// delete zmqsocket;
|
||||
// return EXIT_FAILURE;
|
||||
send = false;
|
||||
}
|
||||
#endif
|
||||
if (zmqsocket2->Connect()) {
|
||||
cprintf(RED, "BBB Error: Could not connect to socket %s\n",
|
||||
zmqsocket2->GetZmqServerAddress().c_str());
|
||||
// delete zmqsocket2;
|
||||
send = false;
|
||||
// return EXIT_FAILURE;
|
||||
} else
|
||||
printf("Zmq Client at %s\n",
|
||||
printf("Zmq sending socket at %s\n",
|
||||
zmqsocket2->GetZmqServerAddress().c_str());
|
||||
}
|
||||
|
||||
|
@ -82,10 +82,11 @@ if(SLS_USE_TEXTCLIENT)
|
||||
set(det_bin_names "sls_detector_put"
|
||||
"sls_detector_get"
|
||||
"sls_detector_acquire"
|
||||
"sls_detector_acquire_zmq"
|
||||
"sls_detector_help"
|
||||
"sls_detector"
|
||||
)
|
||||
set(det_cmd_name "PUT" "GET" "READOUT" "HELP" "INFER")
|
||||
set(det_cmd_name "PUT" "GET" "READOUT" "READOUTZMQ" "HELP" "INFER")
|
||||
list(LENGTH det_bin_names len1)
|
||||
math(EXPR len2 "${len1} - 1")
|
||||
|
||||
|
@ -71,6 +71,8 @@ class Caller {
|
||||
using StringMap = std::map<std::string, std::string>;
|
||||
Detector *ptr; // pointer to the detector that executes the command
|
||||
|
||||
static void EmptyDataCallBack(detectorData *data, uint64_t frameIndex, uint32_t subFrameIndex, void *this_pointer);
|
||||
|
||||
FunctionMap functions{
|
||||
{"list", &Caller::list},
|
||||
|
||||
|
@ -397,6 +397,9 @@ class Caller {
|
||||
using StringMap = std::map<std::string, std::string>;
|
||||
Detector *ptr; // pointer to the detector that executes the command
|
||||
|
||||
static void EmptyDataCallBack(detectorData *data, uint64_t frameIndex,
|
||||
uint32_t subFrameIndex, void *this_pointer);
|
||||
|
||||
FunctionMap functions{
|
||||
{"list", &Caller::list},
|
||||
|
||||
|
@ -212,6 +212,12 @@ std::string Caller::hostname(int action) {
|
||||
}
|
||||
return os.str();
|
||||
}
|
||||
|
||||
void Caller::EmptyDataCallBack(detectorData *data, uint64_t frameIndex,
|
||||
uint32_t subFrameIndex, void *this_pointer) {
|
||||
LOG(logDEBUG) << "EmptyDataCallBack to start up zmq sockets";
|
||||
}
|
||||
|
||||
std::string Caller::acquire(int action) {
|
||||
std::ostringstream os;
|
||||
if (action == defs::HELP_ACTION) {
|
||||
@ -232,6 +238,9 @@ std::string Caller::acquire(int action) {
|
||||
if (det_id >= 0) {
|
||||
throw RuntimeError("Individual detectors not allowed for readout.");
|
||||
}
|
||||
if (action == defs::READOUT_ZMQ_ACTION) {
|
||||
det->registerDataCallback(&(EmptyDataCallBack), this);
|
||||
}
|
||||
det->acquire();
|
||||
|
||||
if (det->getUseReceiverFlag().squash(false)) {
|
||||
|
@ -20,6 +20,10 @@ int main(int argc, char *argv[]) {
|
||||
int action = slsDetectorDefs::READOUT_ACTION;
|
||||
#endif
|
||||
|
||||
#ifdef READOUTZMQ
|
||||
int action = slsDetectorDefs::READOUT_ZMQ_ACTION;
|
||||
#endif
|
||||
|
||||
#ifdef HELP
|
||||
int action = slsDetectorDefs::HELP_ACTION;
|
||||
#endif
|
||||
@ -38,7 +42,7 @@ int main(int argc, char *argv[]) {
|
||||
sls::CmdParser parser;
|
||||
parser.Parse(argc, argv);
|
||||
|
||||
if (action == slsDetectorDefs::READOUT_ACTION)
|
||||
if (action == slsDetectorDefs::READOUT_ACTION || action == slsDetectorDefs::READOUT_ZMQ_ACTION)
|
||||
parser.setCommand("acquire");
|
||||
|
||||
if (parser.isHelp())
|
||||
|
@ -216,7 +216,7 @@ typedef struct {
|
||||
/**
|
||||
type of action performed (for text client)
|
||||
*/
|
||||
enum { GET_ACTION, PUT_ACTION, READOUT_ACTION, HELP_ACTION };
|
||||
enum { GET_ACTION, PUT_ACTION, READOUT_ACTION, HELP_ACTION, READOUT_ZMQ_ACTION };
|
||||
|
||||
/**
|
||||
dimension indexes
|
||||
|
Loading…
x
Reference in New Issue
Block a user