MessageGroup.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <chrono>
4 #include <memory>
5 #include <unordered_map>
6 #include <vector>
7 
10 
11 namespace dai {
12 
16 class MessageGroup : public Buffer {
17  std::shared_ptr<RawBuffer> serialize() const override;
19  std::unordered_map<std::string, std::shared_ptr<ADatatype>> group;
20 
21  public:
23  MessageGroup();
24  explicit MessageGroup(std::shared_ptr<RawMessageGroup> ptr);
25  virtual ~MessageGroup() = default;
26 
28  std::shared_ptr<ADatatype> operator[](const std::string& name);
29  template <typename T>
30  std::shared_ptr<T> get(const std::string& name) {
31  return std::dynamic_pointer_cast<T>(group[name]);
32  }
33  void add(const std::string& name, const std::shared_ptr<ADatatype>& value);
34  template <typename T>
35  void add(const std::string& name, const T& value) {
36  static_assert(std::is_base_of<ADatatype, T>::value, "T must derive from ADatatype");
37  group[name] = std::make_shared<T>(value);
38  rawGrp.group[name] = {value.getRaw(), 0};
39  }
40 
41  // Iterators
42  std::unordered_map<std::string, std::shared_ptr<ADatatype>>::iterator begin();
43  std::unordered_map<std::string, std::shared_ptr<ADatatype>>::iterator end();
44 
49  bool isSynced(int64_t thresholdNs) const;
50 
54  int64_t getIntervalNs() const;
55 
56  int64_t getNumMessages() const;
57 
61  std::vector<std::string> getMessageNames() const;
62 
66  MessageGroup& setTimestamp(std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> timestamp);
67 
71  MessageGroup& setTimestampDevice(std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration> timestamp);
72 
76  MessageGroup& setSequenceNum(int64_t sequenceNum);
77 };
78 
79 } // namespace dai
dai::MessageGroup
Definition: MessageGroup.hpp:16
dai::MessageGroup::~MessageGroup
virtual ~MessageGroup()=default
dai::MessageGroup::serialize
std::shared_ptr< RawBuffer > serialize() const override
Definition: MessageGroup.cpp:11
dai::MessageGroup::getNumMessages
int64_t getNumMessages() const
Definition: MessageGroup.cpp:47
dai::MessageGroup::MessageGroup
MessageGroup()
Construct MessageGroup message.
Definition: MessageGroup.cpp:15
dai::RawMessageGroup
Definition: RawMessageGroup.hpp:21
RawMessageGroup.hpp
dai::MessageGroup::isSynced
bool isSynced(int64_t thresholdNs) const
Definition: MessageGroup.cpp:60
dai::MessageGroup::begin
std::unordered_map< std::string, std::shared_ptr< ADatatype > >::iterator begin()
Definition: MessageGroup.cpp:26
dai::MessageGroup::operator[]
std::shared_ptr< ADatatype > operator[](const std::string &name)
Group.
Definition: MessageGroup.cpp:18
dai::MessageGroup::rawGrp
RawMessageGroup & rawGrp
Definition: MessageGroup.hpp:18
dai::Buffer
Base message - buffer of binary data.
Definition: Buffer.hpp:13
dai::RawMessageGroup::group
std::unordered_map< std::string, RawGroupMessage > group
Definition: RawMessageGroup.hpp:22
dai::MessageGroup::setTimestamp
MessageGroup & setTimestamp(std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > timestamp)
Definition: MessageGroup.cpp:65
dai::MessageGroup::end
std::unordered_map< std::string, std::shared_ptr< ADatatype > >::iterator end()
Definition: MessageGroup.cpp:29
dai::MessageGroup::getMessageNames
std::vector< std::string > getMessageNames() const
Definition: MessageGroup.cpp:51
dai::MessageGroup::get
std::shared_ptr< T > get(const std::string &name)
Definition: MessageGroup.hpp:30
dai::MessageGroup::group
std::unordered_map< std::string, std::shared_ptr< ADatatype > > group
Definition: MessageGroup.hpp:19
dai::MessageGroup::getIntervalNs
int64_t getIntervalNs() const
Definition: MessageGroup.cpp:33
Buffer.hpp
dai
Definition: CameraExposureOffset.hpp:6
dai::MessageGroup::setSequenceNum
MessageGroup & setSequenceNum(int64_t sequenceNum)
Definition: MessageGroup.cpp:73
dai::MessageGroup::setTimestampDevice
MessageGroup & setTimestampDevice(std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > timestamp)
Definition: MessageGroup.cpp:69
dai::MessageGroup::add
void add(const std::string &name, const T &value)
Definition: MessageGroup.hpp:35
dai::MessageGroup::add
void add(const std::string &name, const std::shared_ptr< ADatatype > &value)
Definition: MessageGroup.cpp:21


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19