diff --git a/slsReceiverSoftware/include/ZmqSocket.h b/slsReceiverSoftware/include/ZmqSocket.h index e8e9d3418..d63d5093b 100644 --- a/slsReceiverSoftware/include/ZmqSocket.h +++ b/slsReceiverSoftware/include/ZmqSocket.h @@ -17,7 +17,7 @@ #include //json header in zmq stream using namespace rapidjson; -#define DEFAULT_ZMQ_PORTNO 70001 +#define DEFAULT_ZMQ_PORTNO 30001 class ZmqSocket { @@ -68,6 +68,15 @@ public: } //Socket Options provided above + //ZMQ_LINGER default is already -1 means no messages discarded. use this options if optimizing required + //ZMQ_SNDHWM default is 0 means no limit. use this to optimize if optimizing required + // eg. int value = -1; + int value = -1; + if (zmq_setsockopt(socketDescriptor, ZMQ_LINGER, &value,sizeof(value))) { + PrintError (); + Close(); + } + //connect socket if (zmq_connect(socketDescriptor, serverAddress) < 0) { @@ -231,7 +240,7 @@ public: modId, xCoord, yCoord, zCoord, debug, roundRNumber, detType, version); #ifdef VERBOSE - if(!index) + //if(!index) printf("%d Streamer: buf:%s\n", index, buf); #endif @@ -295,7 +304,7 @@ public: if ( len > 0 ) { bool dummy = false; #ifdef VERBOSE - cprintf( RED,"Header %d Length: %d Header:%s \n", index, length, (char*) zmq_msg_data (&message) ); + cprintf( BLUE,"Header %d Length: %d Header:%s \n", index, len, (char*) zmq_msg_data (&message) ); #endif if ( ParseHeader (index, len, message, acqIndex, frameIndex, subframeIndex, filename, dummy)) { zmq_msg_close (&message); @@ -308,6 +317,7 @@ public: #endif return 0; } + cprintf(GREEN,"%d data\n",index); return 1; } } diff --git a/slsReceiverSoftware/src/Listener.cpp b/slsReceiverSoftware/src/Listener.cpp index 1b03ccaff..d98c4a2c5 100644 --- a/slsReceiverSoftware/src/Listener.cpp +++ b/slsReceiverSoftware/src/Listener.cpp @@ -324,7 +324,7 @@ uint32_t Listener::ListenToAnImage(char* buf) { //look for carry over if (carryOverFlag) { - //if(!index) cprintf(RED,"carry flag\n"); + cprintf(RED,"%d carry flag\n",index); //check if its the current image packet // -------------------------- new header ---------------------------------------------------------------------- if (standardheader) { @@ -347,8 +347,21 @@ uint32_t Listener::ListenToAnImage(char* buf) { return generalData->imageSize; } - memcpy(buf + fifohsize + (pnum * dsize), - carryOverPacket + hsize, dsize); + //copy packet + switch(myDetectorType) { + //for gotthard, 1st packet: 4 bytes fnum, CACA, 1278 bytes data + // 2nd packet: 4 bytes fnu, 1282 bytes data !! + case GOTTHARD: + if(!pnum) + memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize+4, dsize-2); + else + memcpy(buf + fifohsize + (pnum * dsize) - 2, carryOverPacket + hsize, dsize+2); + break; + default: + memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, dsize); + break; + } + carryOverFlag = false; numpackets++; //number of packets in this image (each time its copied to buf) @@ -430,8 +443,19 @@ uint32_t Listener::ListenToAnImage(char* buf) { } //copy packet - memcpy(buf + fifohsize + (pnum * dsize), - listeningPacket + hsize, dsize); + switch(myDetectorType) { + //for gotthard, 1st packet: 4 bytes fnum, CACA, 1278 bytes data + // 2nd packet: 4 bytes fnu, 1282 bytes data !! + case GOTTHARD: + if(!pnum) + memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize+4, dsize-2); + else + memcpy(buf + fifohsize + (pnum * dsize) - 2, listeningPacket + hsize, dsize+2); + break; + default: + memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, dsize); + break; + } numpackets++; //number of packets in this image (each time its copied to buf) if(isHeaderEmpty) { // -------------------------- new header ----------------------------------------------------------------------