ChimeraTK-DeviceAccess-EPICS-Backend 01.00.02
Loading...
Searching...
No Matches
EPICSVersionMapper.cc
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Helmholtz-Zentrum Dresden-Rossendorf, FWKE, ChimeraTK Project <chimeratk-support@desy.de>
2// SPDX-License-Identifier: LGPL-3.0-or-later
3/*
4 * VersionMapper.cc
5 *
6 * Created on: Mar 23, 2021
7 * Author: Klaus Zenker (HZDR)
8 */
9
10#include "EPICSVersionMapper.h"
11
12ChimeraTK::VersionNumber EPICS::VersionMapper::getVersion(const epicsTimeStamp& timeStamp) {
13 std::lock_guard<std::mutex> lock(_mapMutex);
14 int64_t timeStampEPOCH = (_epicsTimeOffset + timeStamp.secPastEpoch) * 1e9 + timeStamp.nsec;
15 if(!_versionMap.count(timeStampEPOCH)) {
16 if(_versionMap.size() == maxSizeEventIdMap) _versionMap.erase(_versionMap.begin());
17 std::chrono::duration<int64_t, std::nano> tp(timeStampEPOCH);
18 _versionMap[timeStampEPOCH] = ChimeraTK::VersionNumber(timePoint_t(tp));
19 }
20 return _versionMap[timeStampEPOCH];
21}
std::chrono::time_point< std::chrono::system_clock, std::chrono::duration< int64_t, std::nano > > timePoint_t
ChimeraTK::VersionNumber getVersion(const epicsTimeStamp &timeStamp)