mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 23:30:03 +02:00
lock to ensure json add header can be updated on the fly
This commit is contained in:
parent
f0c576c779
commit
ea601fe1f7
@ -69,7 +69,7 @@ void DataStreamer::SetFlippedDataX(int fd) { flippedDataX = fd; }
|
||||
|
||||
void DataStreamer::SetAdditionalJsonHeader(
|
||||
const std::map<std::string, std::string> &json) {
|
||||
std::lock guard<std::mutex> guard(additionalJsonMutex);
|
||||
std::lock_guard<std::mutex> lock(additionalJsonMutex);
|
||||
additionalJsonHeader = json;
|
||||
isAdditionalJsonUpdated = true;
|
||||
}
|
||||
@ -235,10 +235,11 @@ int DataStreamer::SendHeader(sls_receiver_header *rheader, uint32_t size,
|
||||
zHeader.completeImage =
|
||||
(header.packetNumber < generalData->packetsPerFrame ? false : true);
|
||||
|
||||
// update local copy only if it was updated (to prevent locking each time)
|
||||
if (isAdditionalJsonUpdated) {
|
||||
std::lock_guard<std::mutex> guard(additionalalJsonMutex);
|
||||
std::lock_guard<std::mutex> lock(additionalJsonMutex);
|
||||
localAdditionalJsonHeader = additionalJsonHeader;
|
||||
isAdditionalalJsonUpdated = false;
|
||||
isAdditionalJsonUpdated = false;
|
||||
}
|
||||
zHeader.addJsonHeader = localAdditionalJsonHeader;
|
||||
|
||||
|
@ -16,6 +16,7 @@ class DataStreamer;
|
||||
class ZmqSocket;
|
||||
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
|
||||
class DataStreamer : private virtual slsDetectorDefs, public ThreadObject {
|
||||
|
||||
@ -170,10 +171,10 @@ class DataStreamer : private virtual slsDetectorDefs, public ThreadObject {
|
||||
|
||||
/** Used by streamer thread to update local copy (reduce number of locks
|
||||
* during streaming) */
|
||||
std::atomic<bool>{false};
|
||||
std::atomic<bool> isAdditionalJsonUpdated{false};
|
||||
|
||||
/** mutex to update json and to read and update local copy */
|
||||
std::mutex additionalJsonMutex;
|
||||
mutable std::mutex additionalJsonMutex;
|
||||
|
||||
/** local copy of additional json header (it can be update on the fly) */
|
||||
std::map<std::string, std::string> localAdditionalJsonHeader;
|
||||
|
Loading…
x
Reference in New Issue
Block a user