From d10d9462a3bb2b350c6f77751b06c6352e6f54a5 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 16 Aug 2019 19:31:26 +0200 Subject: [PATCH] virtual servers using command virtual numdet port --- .../bin/eigerDetectorServer_developer | Bin 302632 -> 302616 bytes .../include/multiSlsDetector.h | 7 ++++ slsDetectorSoftware/src/multiSlsDetector.cpp | 12 ++++++- .../src/slsDetectorCommand.cpp | 30 +++++++++++++++--- 4 files changed, 44 insertions(+), 5 deletions(-) diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer index 4e842b523fce5549bb1d6c2b5c76409461dc0537..b7aa410527d9c9507ac91466b86eb9e60427c18b 100755 GIT binary patch delta 38633 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�NPM3 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 COxr#H delta 37627 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 hostnames; + for (int i = 0; i < numdet; ++i) { + // * 2 is for control and stop port + hostnames.push_back(std::string("localhost:") + std::to_string(port + i * 2)); + } + setHostname(hostnames); +} + void multiSlsDetector::setHostname(const std::vector &name) { // this check is there only to allow the previous detsizechan command if (multi_shm()->numberOfDetectors != 0) { @@ -363,6 +372,7 @@ void multiSlsDetector::setHostname(const std::vector &name) { for (const auto &hostname : name) { addSlsDetector(hostname); } + updateDetectorSize(); } void multiSlsDetector::setHostname(const char *name, int detPos) { @@ -392,7 +402,7 @@ std::string multiSlsDetector::getHostname(int detPos) const { // multi auto r = serialCall(&slsDetector::getHostname); - return sls::concatenateIfDifferent(r); + return sls::concatenateNonEmptyStrings(r); } void multiSlsDetector::addMultipleDetectors(const char *name) { diff --git a/slsDetectorSoftware/src/slsDetectorCommand.cpp b/slsDetectorSoftware/src/slsDetectorCommand.cpp index 615a6cefa..cc3ac0423 100755 --- a/slsDetectorSoftware/src/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/src/slsDetectorCommand.cpp @@ -268,6 +268,14 @@ slsDetectorCommand::slsDetectorCommand(multiSlsDetector *det) { descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdHostname; ++i; + /*! \page config + - virtual [n] [p] \c connects to n virtual detector servers at local host starting at port p \c Returns the list of the hostnames of the multi-detector structure. \c (string) + */ + descrToFuncMap[i].m_pFuncName = "virtual"; + descrToFuncMap[i].m_pFuncPtr = &slsDetectorCommand::cmdHostname; + ++i; + + /*! \page config - user \c Returns user details from shared memory. Only allowed at multi detector level. Cannot put. \c (string) */ @@ -2345,7 +2353,7 @@ std::string slsDetectorCommand::cmdHostname(int narg, const char * const args[], if (action == PUT_ACTION) { if (detPos >= 0) { - return std::string("Wrong usage - setting hostname/add only from " + return std::string("Wrong usage - setting hostname/virtual only from " "multiDetector level"); } @@ -2357,10 +2365,23 @@ std::string slsDetectorCommand::cmdHostname(int narg, const char * const args[], if (narg > 2) strcat(hostname, "+"); } - - myDet->setHostname(hostname, detPos); + if (cmd == "hostname") { + myDet->setHostname(hostname, detPos); + } + else if (cmd == "virtual") { + int port = -1; + int numDetectors = 0; + if (!sscanf(args[1], "%d", &numDetectors)) { + throw sls::RuntimeError("Cannot scan number of detector servers from virtual command\n"); + } + if (!sscanf(args[2], "%d", &port)) { + throw sls::RuntimeError("Cannot scan port from virtual command\n"); + } + myDet->setVirtualDetectorServers(numDetectors, port); + } else { + throw sls::RuntimeError("unknown command\n"); + } } - return myDet->getHostname(detPos); } @@ -2372,6 +2393,7 @@ std::string slsDetectorCommand::helpHostname(int action) { if (action == PUT_ACTION || action == HELP_ACTION) { os << std::string("hostname name [name name]\t frees shared memory and " "sets the hostname (or IP adress). Only allowed at multi detector level.\n"); + os << std::string("virtual [n] [p]\t connects to n virtual detector servers at local host starting at port p \n"); } return os.str(); }