mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-01-17 13:01:12 +01:00
const qualified multi calls, python fixes
This commit is contained in:
@@ -56,6 +56,17 @@ std::vector<RT> multiSlsDetector::serialCall(RT (slsDetector::*somefunc)(CT...),
|
||||
return result;
|
||||
}
|
||||
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT> multiSlsDetector::serialCall(RT (slsDetector::*somefunc)(CT...) const,
|
||||
typename NonDeduced<CT>::type... Args) const {
|
||||
std::vector<RT> result;
|
||||
result.reserve(detectors.size());
|
||||
for (auto &d : detectors) {
|
||||
result.push_back((d.get()->*somefunc)(Args...));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT>
|
||||
multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonDeduced<CT>::type... Args) {
|
||||
@@ -75,7 +86,7 @@ multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonD
|
||||
//Const qualified version
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT>
|
||||
multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), typename NonDeduced<CT>::type... Args) const{
|
||||
multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...) const, typename NonDeduced<CT>::type... Args) const {
|
||||
std::vector<std::future<RT>> futures;
|
||||
for (auto &d : detectors) {
|
||||
futures.push_back(
|
||||
@@ -328,7 +339,7 @@ void multiSlsDetector::initSharedMemory(bool verify) {
|
||||
multi_shm.OpenSharedMemory();
|
||||
if (verify && multi_shm()->shmversion != MULTI_SHMVERSION) {
|
||||
FILE_LOG(logERROR) << "Multi shared memory (" << multiId << ") version mismatch "
|
||||
"(expected 0x"
|
||||
"(expected 0x"
|
||||
<< std::hex << MULTI_SHMVERSION << " but got 0x" << multi_shm()->shmversion << std::dec;
|
||||
throw SharedMemoryError("Shared memory version mismatch!");
|
||||
}
|
||||
@@ -765,8 +776,8 @@ int multiSlsDetector::setReceiverPort(int port_number, int detPos) {
|
||||
return sls::minusOneIfDifferent(r);
|
||||
}
|
||||
|
||||
std::vector<int> multiSlsDetector::getReceiverPort() const{
|
||||
return parallelCall(&slsDetector::setReceiverPort, -1);
|
||||
std::vector<int> multiSlsDetector::getReceiverPort() const {
|
||||
return parallelCall(&slsDetector::getReceiverPort);
|
||||
}
|
||||
|
||||
int multiSlsDetector::lockServer(int p, int detPos) {
|
||||
@@ -1624,25 +1635,25 @@ std::string multiSlsDetector::getDetectorIP(int detPos) {
|
||||
return sls::concatenateIfDifferent(r);
|
||||
}
|
||||
|
||||
std::string multiSlsDetector::setReceiver(const std::string &receiver, int detPos) {
|
||||
std::string multiSlsDetector::setReceiverHostname(const std::string &receiver, int detPos) {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->setReceiver(receiver);
|
||||
return detectors[detPos]->setReceiverHostname(receiver);
|
||||
}
|
||||
|
||||
// multi
|
||||
auto r = parallelCall(&slsDetector::setReceiver, receiver);
|
||||
auto r = parallelCall(&slsDetector::setReceiverHostname, receiver);
|
||||
return sls::concatenateIfDifferent(r);
|
||||
}
|
||||
|
||||
std::string multiSlsDetector::getReceiver(int detPos) {
|
||||
std::string multiSlsDetector::getReceiverHostname(int detPos) const {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->getReceiver();
|
||||
return detectors[detPos]->getReceiverHostname();
|
||||
}
|
||||
|
||||
// multi
|
||||
auto r = serialCall(&slsDetector::getReceiver);
|
||||
auto r = parallelCall(&slsDetector::getReceiverHostname);
|
||||
return sls::concatenateIfDifferent(r);
|
||||
}
|
||||
|
||||
@@ -1657,7 +1668,7 @@ std::string multiSlsDetector::setReceiverUDPIP(const std::string &udpip, int det
|
||||
return sls::concatenateIfDifferent(r);
|
||||
}
|
||||
|
||||
std::string multiSlsDetector::getReceiverUDPIP(int detPos) {
|
||||
std::string multiSlsDetector::getReceiverUDPIP(int detPos) const {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->getReceiverUDPIP();
|
||||
@@ -1679,7 +1690,7 @@ std::string multiSlsDetector::setReceiverUDPMAC(const std::string &udpmac, int d
|
||||
return sls::concatenateIfDifferent(r);
|
||||
}
|
||||
|
||||
std::string multiSlsDetector::getReceiverUDPMAC(int detPos) {
|
||||
std::string multiSlsDetector::getReceiverUDPMAC(int detPos) const {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->getReceiverUDPMAC();
|
||||
@@ -1701,7 +1712,7 @@ int multiSlsDetector::setReceiverUDPPort(int udpport, int detPos) {
|
||||
return sls::minusOneIfDifferent(r);
|
||||
}
|
||||
|
||||
int multiSlsDetector::getReceiverUDPPort(int detPos) {
|
||||
int multiSlsDetector::getReceiverUDPPort(int detPos) const {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->getReceiverUDPPort();
|
||||
@@ -1723,7 +1734,7 @@ int multiSlsDetector::setReceiverUDPPort2(int udpport, int detPos) {
|
||||
return sls::minusOneIfDifferent(r);
|
||||
}
|
||||
|
||||
int multiSlsDetector::getReceiverUDPPort2(int detPos) {
|
||||
int multiSlsDetector::getReceiverUDPPort2(int detPos) const {
|
||||
// single
|
||||
if (detPos >= 0) {
|
||||
return detectors[detPos]->getReceiverUDPPort2();
|
||||
|
||||
@@ -143,7 +143,13 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
template <class CT>
|
||||
struct NonDeduced { using type = CT; };
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT> serialCall(RT (slsDetector::*somefunc)(CT...), typename NonDeduced<CT>::type... Args);
|
||||
std::vector<RT> serialCall(RT (slsDetector::*somefunc)(CT...),
|
||||
typename NonDeduced<CT>::type... Args);
|
||||
|
||||
//Const qualified version should be preferred for calling get methods
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT> serialCall(RT (slsDetector::*somefunc)(CT...) const,
|
||||
typename NonDeduced<CT>::type... Args) const;
|
||||
|
||||
/**
|
||||
* Loop through the detectors in parallel threads
|
||||
@@ -153,9 +159,9 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...),
|
||||
typename NonDeduced<CT>::type... Args);
|
||||
|
||||
//Const qualified version
|
||||
//Const qualified version should be preferred for calling get methods
|
||||
template <typename RT, typename... CT>
|
||||
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...),
|
||||
std::vector<RT> parallelCall(RT (slsDetector::*somefunc)(CT...) const,
|
||||
typename NonDeduced<CT>::type... Args) const;
|
||||
|
||||
/**
|
||||
@@ -894,14 +900,14 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the receiver IP address from shared memory
|
||||
*/
|
||||
std::string setReceiver(const std::string &receiver, int detPos = -1);
|
||||
std::string setReceiverHostname(const std::string &receiver, int detPos = -1);
|
||||
|
||||
/**
|
||||
* Returns the receiver IP address
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the receiver IP address
|
||||
*/
|
||||
std::string getReceiver(int detPos = -1);
|
||||
std::string getReceiverHostname(int detPos = -1) const;
|
||||
|
||||
/**
|
||||
* Validates the format of the receiver UDP IP address and sets it
|
||||
@@ -916,7 +922,7 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the receiver UDP IP address
|
||||
*/
|
||||
std::string getReceiverUDPIP(int detPos = -1);
|
||||
std::string getReceiverUDPIP(int detPos = -1) const;
|
||||
|
||||
/**
|
||||
* Validates the format of the receiver UDP MAC address and sets it
|
||||
@@ -931,7 +937,7 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the receiver UDP MAC address
|
||||
*/
|
||||
std::string getReceiverUDPMAC(int detPos = -1);
|
||||
std::string getReceiverUDPMAC(int detPos = -1) const;
|
||||
|
||||
/**
|
||||
* Sets the receiver UDP port
|
||||
@@ -946,7 +952,7 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the receiver UDP port
|
||||
*/
|
||||
int getReceiverUDPPort(int detPos = -1);
|
||||
int getReceiverUDPPort(int detPos = -1) const;
|
||||
|
||||
/**
|
||||
* Sets the receiver UDP port 2
|
||||
@@ -961,7 +967,7 @@ class multiSlsDetector : public virtual slsDetectorDefs,
|
||||
* @param detPos -1 for all detectors in list or specific detector position
|
||||
* @returns the receiver UDP port 2 of same interface
|
||||
*/
|
||||
int getReceiverUDPPort2(int detPos = -1);
|
||||
int getReceiverUDPPort2(int detPos = -1) const;
|
||||
|
||||
/**
|
||||
* (advanced users)
|
||||
|
||||
@@ -844,6 +844,10 @@ int slsDetector::setReceiverPort(int port_number) {
|
||||
return detector_shm()->receiverTCPPort;
|
||||
}
|
||||
|
||||
int slsDetector::getReceiverPort() const{
|
||||
return detector_shm()->receiverTCPPort;
|
||||
}
|
||||
|
||||
int slsDetector::getControlPort() const {
|
||||
return detector_shm()->controlPort;
|
||||
}
|
||||
@@ -852,9 +856,6 @@ int slsDetector::getStopPort() const {
|
||||
return detector_shm()->stopPort;
|
||||
}
|
||||
|
||||
int slsDetector::getReceiverPort() const {
|
||||
return detector_shm()->receiverTCPPort;
|
||||
}
|
||||
|
||||
int slsDetector::lockServer(int lock) {
|
||||
int fnum = F_LOCK_SERVER;
|
||||
@@ -2344,7 +2345,7 @@ std::string slsDetector::getDetectorIP() {
|
||||
return std::string(detector_shm()->detectorIP);
|
||||
}
|
||||
|
||||
std::string slsDetector::setReceiver(const std::string &receiverIP) {
|
||||
std::string slsDetector::setReceiverHostname(const std::string &receiverIP) {
|
||||
FILE_LOG(logDEBUG1) << "Setting up Receiver with " << receiverIP;
|
||||
// recieverIP is none
|
||||
if (receiverIP == "none") {
|
||||
@@ -2430,7 +2431,7 @@ std::string slsDetector::setReceiver(const std::string &receiverIP) {
|
||||
return std::string(detector_shm()->receiver_hostname);
|
||||
}
|
||||
|
||||
std::string slsDetector::getReceiver() {
|
||||
std::string slsDetector::getReceiverHostname() const {
|
||||
return std::string(detector_shm()->receiver_hostname);
|
||||
}
|
||||
|
||||
@@ -2458,7 +2459,7 @@ std::string slsDetector::setReceiverUDPIP(const std::string &udpip) {
|
||||
return std::string(detector_shm()->receiverUDPIP);
|
||||
}
|
||||
|
||||
std::string slsDetector::getReceiverUDPIP() {
|
||||
std::string slsDetector::getReceiverUDPIP() const {
|
||||
return std::string(detector_shm()->receiverUDPIP);
|
||||
}
|
||||
|
||||
@@ -2482,7 +2483,7 @@ std::string slsDetector::setReceiverUDPMAC(const std::string &udpmac) {
|
||||
return std::string(detector_shm()->receiverUDPMAC);
|
||||
}
|
||||
|
||||
std::string slsDetector::getReceiverUDPMAC() {
|
||||
std::string slsDetector::getReceiverUDPMAC() const {
|
||||
return std::string(detector_shm()->receiverUDPMAC);
|
||||
}
|
||||
|
||||
@@ -2496,7 +2497,7 @@ int slsDetector::setReceiverUDPPort(int udpport) {
|
||||
return detector_shm()->receiverUDPPort;
|
||||
}
|
||||
|
||||
int slsDetector::getReceiverUDPPort() {
|
||||
int slsDetector::getReceiverUDPPort() const {
|
||||
return detector_shm()->receiverUDPPort;
|
||||
}
|
||||
|
||||
@@ -2513,7 +2514,7 @@ int slsDetector::setReceiverUDPPort2(int udpport) {
|
||||
return detector_shm()->receiverUDPPort2;
|
||||
}
|
||||
|
||||
int slsDetector::getReceiverUDPPort2() {
|
||||
int slsDetector::getReceiverUDPPort2() const {
|
||||
return detector_shm()->receiverUDPPort2;
|
||||
}
|
||||
|
||||
@@ -4023,7 +4024,7 @@ int64_t slsDetector::getRateCorrection() {
|
||||
|
||||
void slsDetector::printReceiverConfiguration(TLogLevel level) {
|
||||
FILE_LOG(level) << "#Detector " << detId << ":\n"
|
||||
<< "Receiver Hostname:\t" << getReceiver() << "\nDetector UDP IP (Source):\t\t" << getDetectorIP() << "\nDetector UDP MAC:\t\t" << getDetectorMAC() << "\nReceiver UDP IP:\t" << getReceiverUDPIP() << "\nReceiver UDP MAC:\t" << getReceiverUDPMAC() << "\nReceiver UDP Port:\t" << getReceiverUDPPort() << "\nReceiver UDP Port2:\t" << getReceiverUDPPort2();
|
||||
<< "Receiver Hostname:\t" << getReceiverHostname() << "\nDetector UDP IP (Source):\t\t" << getDetectorIP() << "\nDetector UDP MAC:\t\t" << getDetectorMAC() << "\nReceiver UDP IP:\t" << getReceiverUDPIP() << "\nReceiver UDP MAC:\t" << getReceiverUDPMAC() << "\nReceiver UDP Port:\t" << getReceiverUDPPort() << "\nReceiver UDP Port2:\t" << getReceiverUDPPort2();
|
||||
}
|
||||
|
||||
int slsDetector::setReceiverOnline(int value) {
|
||||
|
||||
@@ -819,13 +819,13 @@ class slsDetector : public virtual slsDetectorDefs, public virtual errorDefs {
|
||||
* @param receiver receiver hostname or IP address
|
||||
* @returns the receiver IP address from shared memory
|
||||
*/
|
||||
std::string setReceiver(const std::string &receiver);
|
||||
std::string setReceiverHostname(const std::string &receiver);
|
||||
|
||||
/**
|
||||
* Returns the receiver IP address\sa sharedSlsDetector
|
||||
* @returns the receiver IP address
|
||||
*/
|
||||
std::string getReceiver();
|
||||
std::string getReceiverHostname() const;
|
||||
|
||||
/**
|
||||
* Validates the format of the receiver UDP IP address and sets it \sa sharedSlsDetector
|
||||
@@ -838,7 +838,7 @@ class slsDetector : public virtual slsDetectorDefs, public virtual errorDefs {
|
||||
* Returns the receiver UDP IP address\sa sharedSlsDetector
|
||||
* @returns the receiver UDP IP address
|
||||
*/
|
||||
std::string getReceiverUDPIP();
|
||||
std::string getReceiverUDPIP() const;
|
||||
|
||||
/**
|
||||
* Validates the format of the receiver UDP MAC address and sets it \sa sharedSlsDetector
|
||||
@@ -851,7 +851,7 @@ class slsDetector : public virtual slsDetectorDefs, public virtual errorDefs {
|
||||
* Returns the receiver UDP MAC address\sa sharedSlsDetector
|
||||
* @returns the receiver UDP MAC address
|
||||
*/
|
||||
std::string getReceiverUDPMAC();
|
||||
std::string getReceiverUDPMAC() const;
|
||||
|
||||
/**
|
||||
* Sets the receiver UDP port\sa sharedSlsDetector
|
||||
@@ -864,7 +864,7 @@ class slsDetector : public virtual slsDetectorDefs, public virtual errorDefs {
|
||||
* Returns the receiver UDP port\sa sharedSlsDetector
|
||||
* @returns the receiver UDP port
|
||||
*/
|
||||
int getReceiverUDPPort();
|
||||
int getReceiverUDPPort() const;
|
||||
|
||||
/**
|
||||
* Sets the receiver UDP port 2\sa sharedSlsDetector
|
||||
@@ -877,7 +877,7 @@ class slsDetector : public virtual slsDetectorDefs, public virtual errorDefs {
|
||||
* Returns the receiver UDP port 2 of same interface\sa sharedSlsDetector
|
||||
* @returns the receiver UDP port 2 of same interface
|
||||
*/
|
||||
int getReceiverUDPPort2();
|
||||
int getReceiverUDPPort2() const;
|
||||
|
||||
/**
|
||||
* Sets the client zmq port\sa sharedSlsDetector
|
||||
|
||||
@@ -2796,9 +2796,9 @@ std::string slsDetectorCommand::cmdNetworkParameter(int narg, char *args[], int
|
||||
return myDet->getDetectorIP(detPos);
|
||||
} else if (cmd == "rx_hostname") {
|
||||
if (action == PUT_ACTION) {
|
||||
myDet->setReceiver(args[1], detPos);
|
||||
myDet->setReceiverHostname(args[1], detPos);
|
||||
}
|
||||
return myDet->getReceiver(detPos);
|
||||
return myDet->getReceiverHostname(detPos);
|
||||
} else if (cmd == "rx_udpip") {
|
||||
if (action == PUT_ACTION) {
|
||||
myDet->setReceiverUDPIP(args[1], detPos);
|
||||
|
||||
Reference in New Issue
Block a user