+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
// File: Events_LongOp.cpp
// Created: 29 Jul 2014
// Author: Mikhail PONIKAROV
std::map<void*, int> MY_SENDERS;
Events_LongOp::Events_LongOp(void* theSender)
- : Events_Message(Events_LongOp::errorID(), theSender)
+ : Events_Message(Events_LongOp::eventID(), theSender)
{
}
{
}
-Events_ID Events_LongOp::errorID()
+Events_ID Events_LongOp::eventID()
{
Events_Loop* aLoop = Events_Loop::loop();
return aLoop->eventByName("LongOperation");
void Events_LongOp::start(void* theSender)
{
- if (MY_SENDERS.empty()) {
- Events_LongOp anError(theSender);
- Events_Loop::loop()->send(anError);
- }
+ bool toSend = MY_SENDERS.empty();
if (MY_SENDERS.find(theSender) == MY_SENDERS.end())
MY_SENDERS[theSender] = 1;
- else
+ else
MY_SENDERS[theSender]++;
+
+ if (toSend) {
+ std::shared_ptr<Events_Message> aNewOne =
+ std::shared_ptr<Events_Message>(new Events_LongOp(theSender));
+ Events_Loop::loop()->send(aNewOne);
+ }
}
void Events_LongOp::end(void* theSender)
{
if (MY_SENDERS.find(theSender) != MY_SENDERS.end()) {
int aCount = MY_SENDERS[theSender];
- if (aCount <= 1) MY_SENDERS.erase(theSender);
- else MY_SENDERS[theSender] = aCount - 1;
+ if (aCount <= 1)
+ MY_SENDERS.erase(theSender);
+ else
+ MY_SENDERS[theSender] = aCount - 1;
}
if (MY_SENDERS.empty()) {
- Events_LongOp anError(theSender);
- Events_Loop::loop()->send(anError);
+ std::shared_ptr<Events_Message> aNewOne =
+ std::shared_ptr<Events_Message>(new Events_LongOp(theSender));
+ Events_Loop::loop()->send(aNewOne);
}
}
+
+bool Events_LongOp::isPerformed()
+{
+ return !MY_SENDERS.empty();
+}