18#ifndef O2_DCS_DATAPOINT_VALUE
19#define O2_DCS_DATAPOINT_VALUE
335 const uint16_t
flags,
336 const uint16_t milliseconds,
337 const uint32_t seconds,
338 const uint64_t*
const payload) noexcept :
flags(
flags),
msec(milliseconds),
sec(seconds)
364 const uint16_t
flags,
365 const uint16_t milliseconds,
366 const uint32_t seconds,
367 const uint64_t*
const payload,
386 const uint64_t*
const data,
396 this->payload_pt1 =
data[0] & 0x00000000FFFFFFFF;
400 this->payload_pt1 = (
data[0] ? 1 : 0);
404 this->payload_pt1 =
data[0] & 0x00000000000000FF;
410 this->payload_pt1 =
data[0];
428 throw std::domain_error(
"Invalid DeliveryType.");
449 msec = current_time % 1000;
450 sec = current_time / 1000;
465#if defined(__linux__) || defined(__APPLE__)
468 std::time_t ts((uint64_t)
sec);
469 std::strftime(
buffer, 32,
"%FT%T", std::gmtime(&ts));
470 std::ostringstream oss;
472 return std::make_unique<std::string>(
473 std::move(oss.str()));
475 return std::make_unique<std::string>(
"Unsupported platform");
487 return (((uint64_t)
sec) * 1000) +
msec;
524 return !(*
this ==
other);
544 const uint16_t
flags,
545 const uint16_t milliseconds,
546 const uint32_t seconds,
547 const uint64_t*
const payload,
551 this->msec = milliseconds;
572 const uint16_t milliseconds,
573 const uint32_t seconds,
574 const uint64_t*
const payload,
597 const uint64_t*
const data,
600 this->flags =
data[0];
601 this->msec =
data[0] >> 16;
602 this->sec =
data[0] >> 32;
616 << ((dpval.flags &
END_FLAG) ?
"Z" :
"-")
617 << ((dpval.flags &
FBI_FLAG) ?
"M" :
"-")
618 << ((dpval.flags &
NEW_FLAG) ?
"N" :
"-")
620 << ((dpval.flags &
TURN_FLAG) ?
"U" :
"-")
622 << ((dpval.flags &
READ_FLAG) ?
"R " :
"- ")
631 << *(dpval.get_timestamp());
667 flags &= ~WRITE_FLAG;
GLint GLint GLsizei GLint GLenum GLenum type
uint64_t epoch_time() noexcept
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::string to_string(gsl::span< T, Size > span)
DataPointValue(const DataPointValue &other)=default
uint64_t get_epoch_time() const noexcept
void set_payload(const uint64_t *const data, const DeliveryType type)
void set(const uint16_t milliseconds, const uint32_t seconds, const uint64_t *const payload, const DeliveryType type)
static constexpr uint16_t BAD_TIMESTAMP_FLAG
static constexpr uint16_t WRITE_FLAG
static constexpr uint16_t DIRTY_FLAG
static constexpr uint64_t TURN_FLAG
void update_timestamp() noexcept
DataPointValue & operator=(const DataPointValue &other)=default
static constexpr uint16_t FBI_FLAG
static constexpr uint16_t END_FLAG
static constexpr uint16_t BAD_PAYLOAD_FLAG
static constexpr uint16_t ERROR_MASK
uint16_t get_flags() const noexcept
static constexpr uint16_t BAD_DPID_FLAG
void set(const uint16_t flags, const uint16_t milliseconds, const uint32_t seconds, const uint64_t *const payload, const DeliveryType type)
static constexpr uint16_t KEEP_ALIVE_FLAG
bool operator==(const DataPointValue &other) const noexcept
DataPointValue(const uint16_t flags, const uint16_t milliseconds, const uint32_t seconds, const uint64_t *const payload) noexcept
void release_write_lock()
void set(const uint64_t *const data, const DeliveryType type)
static constexpr uint16_t DIM_ERROR_FLAG
static constexpr uint16_t SESSION_MASK
static constexpr uint16_t OVERWRITE_FLAG
friend std::ostream & operator<<(std::ostream &os, const DataPointValue &dpval) noexcept
std::unique_ptr< std::string > get_timestamp() const noexcept
static constexpr uint16_t BAD_FBI_FLAG
static constexpr uint16_t VICTIM_FLAG
static constexpr uint16_t BAD_FLAGS_FLAG
DataPointValue(const uint16_t flags, const uint16_t milliseconds, const uint32_t seconds, const uint64_t *const payload, const DeliveryType type)
void acquire_write_lock()
static constexpr uint16_t CONTROL_MASK
static constexpr uint16_t READ_FLAG
static constexpr uint16_t NEW_FLAG
bool operator!=(const DataPointValue &other) const noexcept
ClassDefNV(DataPointValue, 1)
VectorOfTObjectPtrs other