X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FEvents%2FEvents_Listener.cpp;h=60f280773e3a55906dd2fc822bd36d7c687e2e99;hb=9270adddc12db9661c676544537b0e8eb78c1624;hp=8a7720c72af788edfb5a3ca4093c69e29ab8d078;hpb=37bf139347283d16d59b08079d52be5f6f29a38c;p=modules%2Fshaper.git diff --git a/src/Events/Events_Listener.cpp b/src/Events/Events_Listener.cpp index 8a7720c72..60f280773 100644 --- a/src/Events/Events_Listener.cpp +++ b/src/Events/Events_Listener.cpp @@ -1,5 +1,50 @@ -// File: Events_Listener.cxx -// Created: Thu Mar 13 2014 -// Author: Mikhail PONIKAROV +// Copyright (C) 2014-2022 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include +#include +#include + +void Events_Listener::groupWhileFlush(const std::shared_ptr& theMessage) { + std::shared_ptr aGroup = + std::dynamic_pointer_cast(theMessage); + if (aGroup) { + std::map >::iterator aMyGroup = myGroups.find( + aGroup->eventID().eventText()); + if (aMyGroup == myGroups.end()) { // create a new group of messages for accumulation + myGroups[aGroup->eventID().eventText()] = aGroup->newEmpty(); + aMyGroup = myGroups.find(aGroup->eventID().eventText()); + } + std::shared_ptr aStored = + std::dynamic_pointer_cast(aMyGroup->second); + aStored->Join(aGroup); + //std::cout<<"Add to group "<eventID().eventText()< >::iterator aMyGroup = + myGroups.find(theID.eventText()); + if (aMyGroup != myGroups.end()) { + std::shared_ptr aMessage = aMyGroup->second; + myGroups.erase(aMyGroup); + processEvent(aMessage); + } +}