From f0198d2d2ede5631acf5e907f538b607d800a0cf Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Fri, 7 Apr 2017 14:50:17 +0200 Subject: [PATCH] alejandro's changes from ESRF --- .../include/UDPStandardImplementation.h | 4 ++-- slsReceiverSoftware/include/circularFifo.h | 2 +- slsReceiverSoftware/include/logger.h | 18 ++++++++++++------ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/slsReceiverSoftware/include/UDPStandardImplementation.h b/slsReceiverSoftware/include/UDPStandardImplementation.h index ccada5681..a97ab3de6 100644 --- a/slsReceiverSoftware/include/UDPStandardImplementation.h +++ b/slsReceiverSoftware/include/UDPStandardImplementation.h @@ -739,7 +739,7 @@ private: //***data call back thread parameters*** /** Ensures if zmq threads created successfully */ - bool zmqThreadStarted; + volatile bool zmqThreadStarted; /** Number of data callback Threads */ int numberofDataCallbackThreads; @@ -760,7 +760,7 @@ private: //***general and listening thread parameters*** /** Ensures if threads created successfully */ - bool threadStarted; + volatile bool threadStarted; /** Current Thread Index*/ int currentThreadIndex; diff --git a/slsReceiverSoftware/include/circularFifo.h b/slsReceiverSoftware/include/circularFifo.h index 1d6fd427d..b0d70eab4 100644 --- a/slsReceiverSoftware/include/circularFifo.h +++ b/slsReceiverSoftware/include/circularFifo.h @@ -134,7 +134,7 @@ bool CircularFifo::isEmpty() const template bool CircularFifo::isFull() const { - int tailCheck = (tail+1) % Capacity; + int tailCheck = increment(tail); return (tailCheck == head); } diff --git a/slsReceiverSoftware/include/logger.h b/slsReceiverSoftware/include/logger.h index d01b1db2d..ff1762c19 100644 --- a/slsReceiverSoftware/include/logger.h +++ b/slsReceiverSoftware/include/logger.h @@ -123,14 +123,18 @@ inline std::string NowTime() inline std::string NowTime() { char buffer[11]; + const int buffer_len = sizeof(buffer); time_t t; time(&t); tm r = {0}; - strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r)); + strftime(buffer, buffer_len, "%X", localtime_r(&t, &r)); + buffer[buffer_len - 1] = 0; struct timeval tv; gettimeofday(&tv, 0); - char result[100] = {0}; - sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000); + char result[100]; + const int result_len = sizeof(result); + snprintf(result, result_len, "%s.%03ld", buffer, (long)tv.tv_usec / 1000); + result[result_len - 1] = 0; return result; } @@ -144,7 +148,8 @@ template std::ostringstream& Log::Get(TLogLevel level) lev = level; os << "- " << NowTime(); os << " " << ToString(level) << ": "; - os << std::string(level > logDEBUG ? level - logDEBUG : 0, '\t'); + if (level > logDEBUG) + os << std::string(level - logDEBUG, '\t'); return os; } @@ -216,14 +221,15 @@ inline void Output2FILE::Output(const std::string& msg, TLogLevel level) FILE* pStream = Stream(); if (!pStream) return; + bool out = true; switch(level){ case logERROR: cprintf(RED BOLD,"%s",msg.c_str()); break; case logWARNING: cprintf(YELLOW BOLD,"%s",msg.c_str()); break; case logINFO: cprintf(GRAY,"%s",msg.c_str());break; // case logINFO: cprintf(DARKGRAY BOLD,"%s",msg.c_str());break; - default: fprintf(pStream,"%s",msg.c_str()); break; + default: fprintf(pStream,"%s",msg.c_str()); out = false; break; } - fflush(pStream); + fflush(out ? stdout : pStream); } #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)