From 2d52058a55c7a0bd899cc168881a6dc7d298089d Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 24 Aug 2017 16:06:00 +0200 Subject: [PATCH] Printing thread Ids created and exited, others (if others) are zmqs internal threading, moved all zmq socket type to publish subscriber type: (non blocking in send if no client) as per Aldos gui and probably faster, as only clients to receiver standard impl is aldos gui/slsDetectorGui/xiaoqiangs call back via detector class --- slsReceiverSoftware/gitInfo.txt | 10 +++++----- slsReceiverSoftware/include/ZmqSocket.h | 9 +++++++-- slsReceiverSoftware/include/gitInfoReceiver.h | 8 ++++---- slsReceiverSoftware/src/ThreadObject.cpp | 4 +++- slsReceiverSoftware/src/main.cpp | 6 +++++- slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp | 5 ++++- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/slsReceiverSoftware/gitInfo.txt b/slsReceiverSoftware/gitInfo.txt index 8f8e51a69..e84f55cc6 100644 --- a/slsReceiverSoftware/gitInfo.txt +++ b/slsReceiverSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsReceiverSoftware URL: origin git@git.psi.ch:sls_detectors_software/sls_receiver_software.git Repository Root: origin git@git.psi.ch:sls_detectors_software/sls_receiver_software.git -Repsitory UUID: 1102ff107a9d19583f85fde2b7eddbe7e9b50715 -Revision: 648 -Branch: 3.0-rc +Repsitory UUID: ec1b8333034e4a09d819b2317994813435c7159f +Revision: 651 +Branch: 3.0 Last Changed Author: Dhanya_Maliakal -Last Changed Rev: 653 -Last Changed Date: 2017-08-18 18:24:30.000000002 +0200 ./src/Listener.cpp +Last Changed Rev: 656 +Last Changed Date: 2017-08-24 14:09:36.000000002 +0200 ./src/Fifo.cpp diff --git a/slsReceiverSoftware/include/ZmqSocket.h b/slsReceiverSoftware/include/ZmqSocket.h index 580dd50f0..b3ded9942 100644 --- a/slsReceiverSoftware/include/ZmqSocket.h +++ b/slsReceiverSoftware/include/ZmqSocket.h @@ -63,13 +63,18 @@ public: return; // create publisher - socketDescriptor = zmq_socket (contextDescriptor, ZMQ_PULL); + socketDescriptor = zmq_socket (contextDescriptor, ZMQ_SUB); if (socketDescriptor == NULL) { PrintError (); Close (); } //Socket Options provided above + // an empty string implies receiving any messages + if ( zmq_setsockopt(socketDescriptor, ZMQ_SUBSCRIBE, "", 0)) { + PrintError (); + Close(); + } //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; @@ -104,7 +109,7 @@ public: if (contextDescriptor == NULL) return; // create publisher - socketDescriptor = zmq_socket (contextDescriptor, ZMQ_PUSH); + socketDescriptor = zmq_socket (contextDescriptor, ZMQ_PUB); if (socketDescriptor == NULL) { PrintError (); Close (); diff --git a/slsReceiverSoftware/include/gitInfoReceiver.h b/slsReceiverSoftware/include/gitInfoReceiver.h index 92733cb4a..cedc598bf 100644 --- a/slsReceiverSoftware/include/gitInfoReceiver.h +++ b/slsReceiverSoftware/include/gitInfoReceiver.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURL "git@git.psi.ch:sls_detectors_software/sls_receiver_software.git" //#define SVNREPPATH "" -#define SVNREPUUID "1102ff107a9d19583f85fde2b7eddbe7e9b50715" -//#define SVNREV 0x653 +#define SVNREPUUID "ec1b8333034e4a09d819b2317994813435c7159f" +//#define SVNREV 0x656 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTH "Dhanya_Maliakal" -#define SVNREV 0x653 -#define SVNDATE 0x20170818 +#define SVNREV 0x656 +#define SVNDATE 0x20170824 // diff --git a/slsReceiverSoftware/src/ThreadObject.cpp b/slsReceiverSoftware/src/ThreadObject.cpp index 08a7fc4e2..e59b3f6b7 100644 --- a/slsReceiverSoftware/src/ThreadObject.cpp +++ b/slsReceiverSoftware/src/ThreadObject.cpp @@ -8,6 +8,7 @@ #include "ThreadObject.h" #include +#include using namespace std; @@ -74,6 +75,7 @@ void* ThreadObject::StartThread(void* thisPointer) { void ThreadObject::RunningThread() { + bprintf(BLUE,"Created [ %s Thread %d, Tid: %ld ]\n", GetType().c_str(),index, (long)syscall(SYS_gettid)); while(true) { while(IsRunning()) { @@ -87,7 +89,7 @@ void ThreadObject::RunningThread() { sem_wait(&semaphore); if(killThread) { - bprintf(BLUE,"%s Thread %d: Goodbye\n",GetType().c_str(),index); + bprintf(BLUE,"Exiting [ %s Thread %d, Tid: %ld ]\n", GetType().c_str(),index, (long)syscall(SYS_gettid)); pthread_exit(NULL); } diff --git a/slsReceiverSoftware/src/main.cpp b/slsReceiverSoftware/src/main.cpp index 6aa9f3e66..5fb967f20 100644 --- a/slsReceiverSoftware/src/main.cpp +++ b/slsReceiverSoftware/src/main.cpp @@ -14,6 +14,7 @@ #include //wait #include //wait +#include using namespace std; @@ -58,7 +59,7 @@ void GetData(uint64_t frameNumber, uint32_t expLength, uint32_t packetNumber, ui int main(int argc, char *argv[]) { keeprunning = true; - bprintf(BLUE,"[ Pid: %ld ]\n", (long)getpid()); + bprintf(BLUE,"Created [ Tid: %ld ]\n", (long)syscall(SYS_gettid)); // Catch signal SIGINT to close files and call destructors properly struct sigaction sa; @@ -85,6 +86,7 @@ int main(int argc, char *argv[]) { slsReceiverUsers *receiver = new slsReceiverUsers(argc, argv, ret); if(ret==slsReceiverDefs::FAIL){ delete receiver; + bprintf(BLUE,"Exiting [ Tid: %ld ]\n", (long)syscall(SYS_gettid)); exit(EXIT_FAILURE); } @@ -133,6 +135,7 @@ int main(int argc, char *argv[]) { //start tcp server thread if (receiver->start() == slsReceiverDefs::FAIL){ delete receiver; + bprintf(BLUE,"Exiting [ Tid: %ld ]\n", (long)syscall(SYS_gettid)); exit(EXIT_FAILURE); } @@ -142,6 +145,7 @@ int main(int argc, char *argv[]) { usleep(5 * 1000 * 1000); delete receiver; + bprintf(BLUE,"Exiting [ Tid: %ld ]\n", (long)syscall(SYS_gettid)); FILE_LOG(logINFO) << "Goodbye!"; return 0; } diff --git a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp index bb1a9374c..9743936cb 100644 --- a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp +++ b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp @@ -15,6 +15,7 @@ #include #include #include +#include using namespace std; @@ -185,7 +186,7 @@ void* slsReceiverTCPIPInterface::startTCPServerThread(void *this_pointer){ void slsReceiverTCPIPInterface::startTCPServer(){ - + bprintf(BLUE,"Created [ TCP server Tid: %ld ]\n", (long)syscall(SYS_gettid)); #ifdef VERYVERBOSE FILE_LOG(logDEBUG5) << "Starting Receiver TCP Server"; @@ -221,6 +222,7 @@ void slsReceiverTCPIPInterface::startTCPServer(){ } mySock->exitServer(); + bprintf(BLUE,"Exiting [ TCP server Tid: %ld ]\n", (long)syscall(SYS_gettid)); pthread_exit(NULL); } @@ -231,6 +233,7 @@ void slsReceiverTCPIPInterface::startTCPServer(){ receiverBase->shutDownUDPSockets(); } } + bprintf(BLUE,"Exiting [ TCP server Tid: %ld ]\n", (long)syscall(SYS_gettid)); pthread_exit(NULL); }