From 98cb8de47875b275dfa7db1e6fb1e67635b4bb7a Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 22 Jun 2017 12:27:17 +0200 Subject: [PATCH] when using userReceiver with many instances of the receiver in one program, the index will keep increasing, hence need to adjust zmq port and det index in file name --- slsReceiverSoftware/include/BinaryFileStatic.h | 2 +- slsReceiverSoftware/include/HDF5FileStatic.h | 2 +- slsReceiverSoftware/src/DataStreamer.cpp | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/slsReceiverSoftware/include/BinaryFileStatic.h b/slsReceiverSoftware/include/BinaryFileStatic.h index f33296d12..b9b963e84 100644 --- a/slsReceiverSoftware/include/BinaryFileStatic.h +++ b/slsReceiverSoftware/include/BinaryFileStatic.h @@ -44,7 +44,7 @@ class BinaryFileStatic { { ostringstream osfn; osfn << fpath << "/" << fnameprefix; - if (dindex >= 0) osfn << "_d" << (dindex * numunits + unitindex); + if (dindex >= 0) osfn << "_d" << ((unitindex >= numunits) ? unitindex : (dindex * numunits + unitindex)); //if unit index > numunits, all receivers in one program (userReceiver) if (frindexenable) osfn << "_f" << setfill('0') << setw(12) << fnum; osfn << "_" << findex; osfn << ".raw"; diff --git a/slsReceiverSoftware/include/HDF5FileStatic.h b/slsReceiverSoftware/include/HDF5FileStatic.h index 941cde601..ba8d7ba62 100644 --- a/slsReceiverSoftware/include/HDF5FileStatic.h +++ b/slsReceiverSoftware/include/HDF5FileStatic.h @@ -50,7 +50,7 @@ public: { ostringstream osfn; osfn << fpath << "/" << fnameprefix; - if (dindex >= 0) osfn << "_d" << (dindex * numunits + unitindex); + if (dindex >= 0) osfn << "_d" << ((unitindex >= numunits) ? unitindex : (dindex * numunits + unitindex)); //if unit index > numunits, all receivers in one program (userReceiver) if (frindexenable) osfn << "_f" << setfill('0') << setw(12) << fnum; osfn << "_" << findex; osfn << ".h5"; diff --git a/slsReceiverSoftware/src/DataStreamer.cpp b/slsReceiverSoftware/src/DataStreamer.cpp index bd9eaa918..29436023b 100644 --- a/slsReceiverSoftware/src/DataStreamer.cpp +++ b/slsReceiverSoftware/src/DataStreamer.cpp @@ -160,6 +160,9 @@ int DataStreamer::SetThreadPriority(int priority) { int DataStreamer::CreateZmqSockets(int* dindex, int* nunits) { uint32_t portnum = DEFAULT_ZMQ_PORTNO + ((*dindex) * (*nunits) + index); + //using userReceiver where all receivers in one program (numberofstreamers>*nunits) + if(index >= *nunits) + portnum = DEFAULT_ZMQ_PORTNO + index; zmqSocket = new ZmqSocket(portnum); if (zmqSocket->IsError()) {