summaryrefslogtreecommitdiff
path: root/cpp/src/qmf/engine/ConsoleImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qmf/engine/ConsoleImpl.cpp')
-rw-r--r--cpp/src/qmf/engine/ConsoleImpl.cpp69
1 files changed, 64 insertions, 5 deletions
diff --git a/cpp/src/qmf/engine/ConsoleImpl.cpp b/cpp/src/qmf/engine/ConsoleImpl.cpp
index c856f04c51..c2d1f51f2b 100644
--- a/cpp/src/qmf/engine/ConsoleImpl.cpp
+++ b/cpp/src/qmf/engine/ConsoleImpl.cpp
@@ -57,11 +57,13 @@ ConsoleEvent ConsoleEventImpl::copy()
::memset(&item, 0, sizeof(ConsoleEvent));
item.kind = kind;
item.agent = agent.get();
- item.classKey = classKey.get();
- item.object = object;
+ item.classKey = classKey;
+ item.object = object.get();
item.context = context;
item.event = event;
item.timestamp = timestamp;
+ item.hasProps = hasProps;
+ item.hasStats = hasStats;
STRING_REF(name);
@@ -274,9 +276,11 @@ void ConsoleImpl::endSync(SyncQuery& sync)
void ConsoleImpl::learnPackage(const string& packageName)
{
Mutex::ScopedLock _lock(lock);
- if (packages.find(packageName) == packages.end())
+ if (packages.find(packageName) == packages.end()) {
packages.insert(pair<string, pair<ObjectClassList, EventClassList> >
(packageName, pair<ObjectClassList, EventClassList>(ObjectClassList(), EventClassList())));
+ eventNewPackage(packageName);
+ }
}
void ConsoleImpl::learnClass(SchemaObjectClass* cls)
@@ -288,8 +292,10 @@ void ConsoleImpl::learnClass(SchemaObjectClass* cls)
return;
ObjectClassList& list = pIter->second.first;
- if (list.find(key) == list.end())
+ if (list.find(key) == list.end()) {
list[key] = cls;
+ eventNewClass(key);
+ }
}
void ConsoleImpl::learnClass(SchemaEventClass* cls)
@@ -301,8 +307,10 @@ void ConsoleImpl::learnClass(SchemaEventClass* cls)
return;
EventClassList& list = pIter->second.second;
- if (list.find(key) == list.end())
+ if (list.find(key) == list.end()) {
list[key] = cls;
+ eventNewClass(key);
+ }
}
bool ConsoleImpl::haveClass(const SchemaClassKey* key) const
@@ -333,6 +341,57 @@ SchemaObjectClass* ConsoleImpl::getSchema(const SchemaClassKey* key) const
return iter->second;
}
+void ConsoleImpl::eventAgentAdded(boost::shared_ptr<AgentProxy> agent)
+{
+ ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::AGENT_ADDED));
+ event->agent = agent;
+ Mutex::ScopedLock _lock(lock);
+ eventQueue.push_back(event);
+}
+
+void ConsoleImpl::eventAgentDeleted(boost::shared_ptr<AgentProxy> agent)
+{
+ ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::AGENT_DELETED));
+ event->agent = agent;
+ Mutex::ScopedLock _lock(lock);
+ eventQueue.push_back(event);
+}
+
+void ConsoleImpl::eventNewPackage(const string& packageName)
+{
+ ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::NEW_PACKAGE));
+ event->name = packageName;
+ Mutex::ScopedLock _lock(lock);
+ eventQueue.push_back(event);
+}
+
+void ConsoleImpl::eventNewClass(const SchemaClassKey* key)
+{
+ ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::NEW_CLASS));
+ event->classKey = key;
+ Mutex::ScopedLock _lock(lock);
+ eventQueue.push_back(event);
+}
+
+void ConsoleImpl::eventObjectUpdate(ObjectPtr object, bool prop, bool stat)
+{
+ ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::OBJECT_UPDATE));
+ event->object = object;
+ event->hasProps = prop;
+ event->hasStats = stat;
+ Mutex::ScopedLock _lock(lock);
+ eventQueue.push_back(event);
+}
+
+void ConsoleImpl::eventAgentHeartbeat(boost::shared_ptr<AgentProxy> agent, uint64_t timestamp)
+{
+ ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::AGENT_HEARTBEAT));
+ event->agent = agent;
+ event->timestamp = timestamp;
+ Mutex::ScopedLock _lock(lock);
+ eventQueue.push_back(event);
+}
+
//==================================================================
// Wrappers
//==================================================================