summaryrefslogtreecommitdiff
path: root/libresourceqt/src/resource-engine.cpp
diff options
context:
space:
mode:
authorWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-04-13 10:17:49 +0300
committerWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-04-13 10:17:49 +0300
commit53b8da9ba8c6c08e7cddb193c57b664811c2c29a (patch)
tree7080e6fd7a65dbbef5db7c34d1589a14b2e59d3f /libresourceqt/src/resource-engine.cpp
parent94b640a0939f49649340d01460c0e3fc7c318f59 (diff)
Added support for multiple ResourceSet instances
Diffstat (limited to 'libresourceqt/src/resource-engine.cpp')
-rw-r--r--libresourceqt/src/resource-engine.cpp50
1 files changed, 42 insertions, 8 deletions
diff --git a/libresourceqt/src/resource-engine.cpp b/libresourceqt/src/resource-engine.cpp
index b90081e..02bbabc 100644
--- a/libresourceqt/src/resource-engine.cpp
+++ b/libresourceqt/src/resource-engine.cpp
@@ -60,13 +60,19 @@ bool ResourceEngine::initialize()
return true;
}
-static void handleUnregisterMessage(resmsg_t *, resset_t *libresourceSet, void *)
+static void handleUnregisterMessage(resmsg_t *message, resset_t *libresourceSet, void *)
{
if (NULL == libresourceSet->userdata) {
qDebug("IGNORING unregister, no context");
return;
}
ResourceEngine *engine = reinterpret_cast<ResourceEngine *>(libresourceSet->userdata);
+ qDebug("recv: unregister: id=%d, engine->id() = %d", message->any.id, engine->id());
+ if(engine->id() != message->any.id) {
+ qDebug("Received an unregister notification, but it is not for us. Ignoring (%d != %d)",
+ message->any.id, engine->id());
+ return;
+ }
engine->disconnected();
}
@@ -86,6 +92,14 @@ static void handleGrantMessage(resmsg_t *message, resset_t *libresourceSet, void
return;
}
ResourceEngine *engine = reinterpret_cast<ResourceEngine *>(libresourceSet->userdata);
+ qDebug("recv: grant: type=%d, id=%d, reqno=%d, resc=0x%04x engine->id() = %d",
+ message->notify.type, message->notify.id, message->notify.reqno,
+ message->notify.resrc, engine->id());
+ if(engine->id() != message->any.id) {
+ qDebug("Received a grant message, but it is not for us. Ignoring (%d != %d)",
+ engine->id(), message->any.id);
+ return;
+ }
engine->receivedGrant(&(message->notify));
}
@@ -122,14 +136,19 @@ void ResourceEngine::receivedGrant(resmsg_notify_t *notifyMessage)
static void handleAdviceMessage(resmsg_t *message, resset_t *libresourceSet, void *)
{
- qDebug("ADVICE: type=0x%04x, id=0x%04x, reqno=0x%04x, resc=0x%04x",
- message->notify.type, message->notify.id, message->notify.reqno, message->notify.resrc);
-
if (NULL == libresourceSet->userdata) {
qDebug("IGNORING advice, no context");
return;
}
ResourceEngine *engine = reinterpret_cast<ResourceEngine *>(libresourceSet->userdata);
+ qDebug("recv: advice: type=%d, id=%d, reqno=%d, resc=0x%04x engine->id() = %d",
+ message->notify.type, message->notify.id, message->notify.reqno,
+ message->notify.resrc, engine->id());
+ if(engine->id() != message->any.id) {
+ qDebug("Received an advice message, but it is not for us. Ignoring (%d != %d)",
+ engine->id(), message->any.id);
+ return;
+ }
engine->receivedAdvice(&(message->notify));
}
@@ -264,6 +283,12 @@ static void statusCallbackHandler(resset_t *libresourceSet, resmsg_t *message)
return;
}
ResourceEngine *resourceEngine = reinterpret_cast<ResourceEngine *>(libresourceSet->userdata);
+ qDebug("recv: status: id=%d, engine->id() = %d", message->any.id, resourceEngine->id());
+ if(resourceEngine->id() != libresourceSet->id) {
+ qDebug("Received a status notification, but it is not for us. Ignoring (%d != %d)",
+ resourceEngine->id(), libresourceSet->id);
+ return;
+ }
qDebug("Received a status notification");
if (message->type != RESMSG_STATUS) {
qDebug("Invalid message type.. (got %x, expected %x", message->type, RESMSG_STATUS);
@@ -439,12 +464,21 @@ static void connectionIsUp(resconn_t *connection)
ResourceEngine *resourceEngine;
resourceEngine = reinterpret_cast<ResourceEngine *>(connection->dbus.rsets->userdata);
-
- resourceEngine->handleConnectionIsUp();
+ qDebug("connection is up");
+ resourceEngine->handleConnectionIsUp(connection);
}
-void ResourceEngine::handleConnectionIsUp()
+void ResourceEngine::handleConnectionIsUp(resconn_t *connection)
{
- emit connectedToManager();
+ if(libresourceConnection == connection)
+ emit connectedToManager();
+ else {
+ qDebug("ignoring Connection is up, it is not for us (%p != %p)",
+ libresourceConnection, connection);
+ }
}
+quint32 ResourceEngine::id()
+{
+ return resourceSet->id();
+}