diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 7ce338002..e39c49921 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -4962,7 +4962,7 @@ void multiSlsDetector::readFrameFromReceiver() { rapidjson::Document doc; if (!zmqSocket[isocket]->ReceiveHeader(isocket, doc, SLS_DETECTOR_JSON_HEADER_VERSION)) { - zmqSocket[isocket]->CloseHeaderMessage(); + // zmqSocket[isocket]->CloseHeaderMessage(); // parse error, version error or end of acquisition for socket runningList[isocket] = false; --numRunning; @@ -5023,7 +5023,7 @@ void multiSlsDetector::readFrameFromReceiver() { coordX, coordY, flippedDataX); #endif - zmqSocket[isocket]->CloseHeaderMessage(); + // zmqSocket[isocket]->CloseHeaderMessage(); } // DATA diff --git a/slsReceiverSoftware/include/ZmqSocket.h b/slsReceiverSoftware/include/ZmqSocket.h index 6815ecc96..9e58d9862 100644 --- a/slsReceiverSoftware/include/ZmqSocket.h +++ b/slsReceiverSoftware/include/ZmqSocket.h @@ -18,12 +18,13 @@ #include //json header in zmq stream #include #include //usleep in some machines +#include using namespace rapidjson; #define MAX_STR_LENGTH 1000 -//#define ZMQ_DETAIL +// #define ZMQ_DETAIL #define ROIVERBOSITY class ZmqSocket { @@ -36,8 +37,6 @@ public: // eg. int value = -1; // if (zmq_setsockopt(socketDescriptor, ZMQ_LINGER, &value,sizeof(value))) { // Close(); - // } - /** * Constructor for a client * Creates socket, context and connects to server @@ -45,7 +44,9 @@ public: * @param portnumber port number */ ZmqSocket (const char* const hostname_or_ip, const uint32_t portnumber): - portno (portnumber) { + portno (portnumber) + // headerMessage(0) + { char ip[MAX_STR_LENGTH] = ""; memset(ip, 0, MAX_STR_LENGTH); @@ -100,7 +101,10 @@ public: * @param ethip is the ip of the ethernet interface to stream zmq from */ ZmqSocket (const uint32_t portnumber, const char *ethip): - portno (portnumber) { + + portno (portnumber) + // headerMessage(0) + { sockfd.server = true; // create context @@ -361,18 +365,20 @@ public: */ int ReceiveHeader(const int index, Document& document, uint32_t version) { - zmq_msg_t message; - headerMessage= &message; - zmq_msg_init (&message); - int len = ReceiveMessage(index, message); + // zmq_msg_t message; + // headerMessage= &message; + // zmq_msg_init (&message); + // int len = ReceiveMessage(index, message); + std::vectorbuffer(MAX_STR_LENGTH); + int len = zmq_recv(socketDescriptor, buffer.data(), buffer.size(),0); if ( len > 0 ) { bool dummy = false; #ifdef ZMQ_DETAIL - cprintf( BLUE,"Header %d [%d] Length: %d Header:%s \n", index, portno, len, (char*) zmq_msg_data (&message) ); + cprintf( BLUE,"Header %d [%d] Length: %d Header:%s \n", index, portno, len, buffer.data()); #endif - if ( ParseHeader (index, len, message, document, dummy, version)) { + if ( ParseHeader (index, len, buffer.data(), document, dummy, version)) { #ifdef ZMQ_DETAIL - cprintf( RED,"Parsed Header %d [%d] Length: %d Header:%s \n", index, portno, len, (char*) zmq_msg_data (&message) ); + cprintf( RED,"Parsed Header %d [%d] Length: %d Header:%s \n", index, portno, len, buffer.data() ); #endif if (dummy) { #ifdef ZMQ_DETAIL @@ -393,11 +399,11 @@ public: /** * Close Header Message. Call this function if ReceiveHeader returned 1 */ - void CloseHeaderMessage() { - if (headerMessage) - zmq_msg_close(headerMessage); - headerMessage = 0; - }; + // void CloseHeaderMessage() { + // if (headerMessage) + // zmq_msg_close(headerMessage); + // headerMessage = 0; + // }; /** * Parse Header * @param index self index for debugging @@ -408,15 +414,15 @@ public: * @param version version that has to match, -1 to not care * @returns true if successful else false */ - int ParseHeader(const int index, int length, zmq_msg_t& message, + int ParseHeader(const int index, int length, char* buff, Document& document, bool& dummy, uint32_t version) { - if ( document.Parse( (char*) zmq_msg_data (&message), zmq_msg_size (&message)).HasParseError() ) { - cprintf( RED,"%d Could not parse. len:%d: Message:%s \n", index, length, (char*) zmq_msg_data (&message) ); + if ( document.Parse( buff, length).HasParseError() ) { + cprintf( RED,"%d Could not parse. len:%d: Message:%s \n", index, length, buff ); fflush ( stdout ); - char* buf = (char*) zmq_msg_data (&message); + // char* buf = (char*) zmq_msg_data (&message); for ( int i= 0; i < length; ++i ) { - cprintf(RED,"%02x ",buf[i]); + cprintf(RED,"%02x ",buff[i]); } printf("\n"); fflush( stdout ); @@ -589,5 +595,5 @@ private: mySocketDescriptors sockfd; /** Header Message pointer */ - zmq_msg_t* headerMessage; + //zmq_msg_t* headerMessage; };