@@ -34,7 +34,7 @@ class MultiHdlrDomino : public aDominoType
3434{
3535public:
3636 using HdlrName = std::string;
37- using HName_Hdlr_S = std::map <HdlrName, SharedMsgCB>;
37+ using HName_Hdlr_S = std::unordered_map <HdlrName, SharedMsgCB>;
3838
3939 explicit MultiHdlrDomino (const LogName& aUniLogName = ULN_DEFAULT) noexcept : aDominoType(aUniLogName) {}
4040
@@ -98,22 +98,14 @@ Domino::Event MultiHdlrDomino<aDominoType>::multiHdlrOnSameEv(const Domino::EvNa
9898
9999 // set hdlr
100100 auto && newHdlr = MAKE_PTR<MsgCB>(aHdlr);
101- auto && ev = this ->getEventBy (aEvName);
102- auto && ev_hdlrs = ev_hdlrs_S_.find (ev);
103- if (ev_hdlrs == ev_hdlrs_S_.end ())
104- {
105- ev = this ->newEvent (aEvName);
106- ev_hdlrs_S_[ev].emplace (aHdlrName, newHdlr);
107- }
108- else
101+ auto && ev = this ->newEvent (aEvName);
102+
103+ auto [ev_hdlrs, _] = ev_hdlrs_S_.try_emplace (ev);
104+ auto [name_hdlr, insertNew] = ev_hdlrs->second .try_emplace (aHdlrName, newHdlr);
105+ if (!insertNew)
109106 {
110- auto && name_hdlr = ev_hdlrs->second .find (aHdlrName);
111- if (name_hdlr != ev_hdlrs->second .end ())
112- {
113- WRN (" (MultiHdlrDom)!!! Failed since dup EvName=" << aEvName << " + HdlrName=" << aHdlrName);
114- return Domino::D_EVENT_FAILED_RET;
115- }
116- ev_hdlrs->second .emplace (aHdlrName, newHdlr);
107+ WRN (" (MultiHdlrDom)!!! Failed since dup EvName=" << aEvName << " + HdlrName=" << aHdlrName);
108+ return Domino::D_EVENT_FAILED_RET;
117109 }
118110 HID (" (MultiHdlrDom) Succeed for EvName=" << aEvName << " , HdlrName=" << aHdlrName);
119111
0 commit comments