From f27fbdd82c1f56b4db9f5d6263f91aa13c428b53 Mon Sep 17 00:00:00 2001 From: Hamidreza Norouzi Date: Fri, 22 Mar 2024 09:01:07 -0700 Subject: [PATCH] message event update for points and boundaries --- src/phasicFlow/eventManagement/message.hpp | 45 ++++++++++++++++----- src/phasicFlow/eventManagement/observer.cpp | 15 +++++++ src/phasicFlow/eventManagement/observer.hpp | 2 + 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/src/phasicFlow/eventManagement/message.hpp b/src/phasicFlow/eventManagement/message.hpp index 2ef7ff17..5b055d90 100644 --- a/src/phasicFlow/eventManagement/message.hpp +++ b/src/phasicFlow/eventManagement/message.hpp @@ -21,6 +21,7 @@ Licence: #define __message_hpp__ #include +#include #include "types.hpp" #include "iOstream.hpp" @@ -35,22 +36,40 @@ public: enum EVENT : size_t { DEFAULT = 0, - CAP_CHANGED = 1, - SIZE_CHANGED = 2, - ITEM_DELETE = 3, - ITEM_INSERT = 4, - RANGE_CHANGED = 5, - ITEM_REARRANGE = 6, - ITEM_TRANSFER = 7, - RESET_COUNTERS = 8 + CAP_CHANGED = 1, // internal points capacity changed + SIZE_CHANGED = 2, // internal points size changed + ITEM_DELETE = 3, // internal points item deleted + ITEM_INSERT = 4, // internal points item inserted + RANGE_CHANGED = 5, // internal points range changed + ITEM_REARRANGE = 6, // internal points item rearrange + BNDR_REARRANGE = 7, // boundary indices rearrange + BNDR_TRANSFER = 8, // boundary indices transfered + BNDR_RESET = 9, // boundary indices reset entirely + BNDR_DELETE = 10 // boundary indices deleted }; -protected: + +private: - static constexpr size_t numberOfEvents_ = 9; + static constexpr size_t numberOfEvents_ = 11; std::bitset events_{0x0000}; + static + inline const std::array eventNames_ + { + "", + "capacity", + "size", + "deletedIndices", + "insertedIndices", + "range", + "rearrangedIndices", + "rearrangedIndices", + "transferredIndices", + "", + "deletedIndices" + }; public: @@ -141,6 +160,12 @@ public: message msg; return msg; } + + static + const word& eventName(size_t event) + { + return eventNames_[event]; + } }; diff --git a/src/phasicFlow/eventManagement/observer.cpp b/src/phasicFlow/eventManagement/observer.cpp index 7d131d75..d7bf299a 100644 --- a/src/phasicFlow/eventManagement/observer.cpp +++ b/src/phasicFlow/eventManagement/observer.cpp @@ -48,6 +48,21 @@ pFlow::observer::~observer() invalidateSubscriber(); } +pFlow::observer &pFlow::observer::addEvent(message::EVENT event) +{ + if( !message_.equivalentTo(event) ) + { + message_.add(event); + if(!subscriber_->subscribe(message(event),this)) + { + fatalErrorInFunction<< + "error when subcribing event from observer "<