6 #ifndef CM_GROUPMANAGER_H
7 #define CM_GROUPMANAGER_H
9 #include "motorcortex.pb.h"
19 #include "utl_timer.h"
23 namespace parameter_server {
29 constexpr
auto MAX_PARAM_NUMBER_IN_GROUP = 512;
30 constexpr
auto TIMESTAMP_SIZE =
sizeof(utils::Timespec64);
40 uint32_t frame_counter;
43 typedef std::vector<ParameterContainer> ParameterMap;
51 std::set<uint32_t> subs;
53 typedef std::map<std::string, GroupContainer> GroupMap;
68 bool removeGroup(
const char* alias, uint32_t client_id);
70 bool removeSubscriber(uint32_t client_id);
72 bool getGroupMap(
long& old_counter_value, GroupMap& groups)
const;
74 void setExtraSize(
unsigned int n_bytes);
76 unsigned int getExtraSize()
const;
79 bool removeGroupRoutine(GroupMap::iterator& group_itr, uint32_t client_id);
83 uint32_t groups_running_counter_;
84 mutable std::mutex groups_access_mutex_;
85 std::atomic<long> groups_update_counter_{};
86 unsigned int extra_size_bytes_;