diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 58dae7d45..6d0558ebe 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1042,6 +1042,8 @@ Result Detector::getRxZmqPort(Positions pos) const { } void Detector::setRxZmqPort(int port, int module_id) { + bool previouslyReceiverStreaming = + getRxZmqDataStream(std::vector{module_id}).squash(false); if (module_id == -1) { std::vector port_list = getPortNumbers(port); for (int idet = 0; idet < size(); ++idet) { @@ -1051,6 +1053,10 @@ void Detector::setRxZmqPort(int port, int module_id) { } else { pimpl->Parallel(&Module::setReceiverStreamingPort, {module_id}, port); } + if (previouslyReceiverStreaming) { + setRxZmqDataStream(false, std::vector{module_id}); + setRxZmqDataStream(true, std::vector{module_id}); + } } Result Detector::getRxZmqIP(Positions pos) const { @@ -1071,6 +1077,7 @@ Result Detector::getClientZmqPort(Positions pos) const { } void Detector::setClientZmqPort(int port, int module_id) { + int previouslyClientStreaming = pimpl->getDataStreamingToClient(); if (module_id == -1) { std::vector port_list = getPortNumbers(port); for (int idet = 0; idet < size(); ++idet) { @@ -1080,6 +1087,10 @@ void Detector::setClientZmqPort(int port, int module_id) { } else { pimpl->Parallel(&Module::setClientStreamingPort, {module_id}, port); } + if (previouslyClientStreaming != 0) { + pimpl->setDataStreamingToClient(false); + pimpl->setDataStreamingToClient(true); + } } Result Detector::getClientZmqIp(Positions pos) const {