From 80042b6e527238d11dd2c955e47b652941c2ba6e Mon Sep 17 00:00:00 2001 From: Wolf Bergenheim Date: Wed, 10 Feb 2010 11:55:19 +0200 Subject: Updated API to hide the whole resource manager and stuff --- libresourceqt/include/qt4/policy/resource-set.h | 83 ++++++++++++++----------- libresourceqt/include/qt4/policy/resource.h | 19 ++---- libresourceqt/src/resource-engine.cpp | 14 +++-- libresourceqt/src/resource-engine.h | 3 + libresourceqt/src/resource-set.cpp | 41 ++++++++---- libresourceqt/src/resource.cpp | 10 --- 6 files changed, 92 insertions(+), 78 deletions(-) diff --git a/libresourceqt/include/qt4/policy/resource-set.h b/libresourceqt/include/qt4/policy/resource-set.h index d998807..0e18e5b 100644 --- a/libresourceqt/include/qt4/policy/resource-set.h +++ b/libresourceqt/include/qt4/policy/resource-set.h @@ -74,10 +74,11 @@ namespace ResourcePolicy */ ~ResourceSet(); /** - * Initializes the underlaying communications library. - * \return true if initialization is successful. + * Finalizes the ResourceSet. This method should be called after all + * resources have been added to the set. + * \return true if the finalization was successful. */ - bool initialize(); + bool finalize(); /** * This method adds a resource to the set. A set contains only a single @@ -127,57 +128,74 @@ namespace ResourcePolicy */ bool contains(const QList &types) const; + /** + * Returns the unique identifier for this ResourceSet. + * @return the unique identifier for this ResourceSet. + */ quint32 id() const; + + /** + * Returns the registered application class (given in the constructor). + */ QString applicationClass(); /** - * Connects to the Resource Policy Manager. The connected() signal is sent - * when the connection has been established. Acquiring the ResourceSet can - * be attempted at any time after this, but not before. - * \return true if the connection request was successfully sent. - * \param reconnectOnDisconnect. Set to true to automatically reconnect on - * lost connection to the Policy Resource Manager. This optional parameter - * defaults to true. + * Try to acquire the \ref ResourceSet. The resourcesGranted() or + * resourcesDenied() signal will be emited depending on whether the + * requested resources could be acquired or not. */ - bool connectToManager(bool reconnectOnDisconnect); + bool acquire(); /** - * Disconnects from the Resource Policy Manager. Further attempts at acquiring - * the \ref ResourceSet will fail. + * Release the acquired resources. */ - void disconnectFromManager(); + bool release(); /** - * Checks whether the ResourceSet is connected or not. + * Commit changes to the \ref ResourceSet. Remember to call update() + * after adding and/or removing resources. */ - bool isConnectedToManager(); + bool update(); + /** - * Attempt to acquire the ResourceSet. The response is returned as the - * resourcesAcquired() signal. + * Stes the auto-release. When loosing the resources doue to another + * application with a higher priority the default is that we automatically + * re-gain our resources without having to re-request them. However if + * the AutoRelease is set we release the resources and need to re-acquire + * them, when the pre-emting application releases it s resources. + * This feature is by default disabled. + * Remember to call update() when changing this. */ - bool acquire(); + void setAutoRelease(); /** - * Release the acquired resources. + * see \ref setAutoRelease(). */ - bool release(); + void unsetAutoRelease(); /** - * Commit changes to the \ref ResourceSet to the Manager. + * Sets that the resourcesGranted() signal is emited even if we already + * have the requested resources granted. By default this feature is off. */ - bool update(); + void setAlwaysReply(); + /** + * Unsets the always reply flag (see \ref setAlwaysReply()) + */ + void unsetAlwaysReply(); - signals: + signals: /** * This signal is emited when the Resource Policy Manager notifies that * the given resources have become available. - * \param availableResources A list of available resources. + * \param availableResources A list of available resources. The list of + * available resources contains only available resource which we have in the set. */ void resourcesBecameAvailable(QList availableResources); /** * This signal is emited as a response to the acquire() request. * \param grantedOptionalResources The list of granted optional resources. + * All the mandatory resources have also been aquired. */ void resourcesGranted(QList grantedOptionalResources); /** * This signal is emited as a response to the acquire() request, in the - * case where we are not granted any requests. + * case where one or more of the mandatroy resources were not availalble. */ void resourcesDenied(); /** @@ -185,21 +203,14 @@ namespace ResourcePolicy * superseeds us, and as a result we loose our resources. */ void lostResources(); - /** - * This signal is emited when we have successfully connected to the manager. - */ - void connectedToManager(); - /** - * This signal is emited when we loose the connection to the manager. - * A reconnect is automatically attempted. - */ - void disconnectedFromManager(); - private: quint32 identifier; const QString resourceClass; Resource* resourceSet[NumberOfTypes]; + bool connected; + bool autoRelease; + bool alwaysReply; }; } diff --git a/libresourceqt/include/qt4/policy/resource.h b/libresourceqt/include/qt4/policy/resource.h index 13265d5..4b68ab1 100644 --- a/libresourceqt/include/qt4/policy/resource.h +++ b/libresourceqt/include/qt4/policy/resource.h @@ -45,21 +45,7 @@ namespace ResourcePolicy { * programs are allowed to share this resource. * \return true when this resource is shared. */ - bool isShared() const; - /** - * Sets the resource to be shared/private. - * \param resourceIsShared This optional parameter defaults to true. - * When it is set to true (de default) the resource is shared with - * other programs. Setting it to false makes this resource exclusive. - */ - void setShared(bool resourceIsShared=true); - /** - * Whether or not this resource has been granted. - * \return true if this resource has been granted. - */ bool isGranted() const; - void setGranted(); - void unsetGranted(); virtual ResourceType type() const = 0; virtual Resource * clone() const = 0; @@ -70,9 +56,12 @@ namespace ResourcePolicy { ResourceType resourceType; bool optional; - bool shared; quint32 identifier; + private: + void setGranted(); + void unsetGranted(); bool granted; + }; } diff --git a/libresourceqt/src/resource-engine.cpp b/libresourceqt/src/resource-engine.cpp index 9f42a48..1478e33 100644 --- a/libresourceqt/src/resource-engine.cpp +++ b/libresourceqt/src/resource-engine.cpp @@ -17,7 +17,7 @@ static void handleAdviceMessage(resmsg_t *msg, resset_t *rs, void *data); ResourceEngine::ResourceEngine(ResourceSet *resourceSet) : QObject(resourceSet), connected(false), resourceSet(resourceSet), libresourceConnection(NULL), libresourceSet(NULL), requestId(0), - messageMap() + messageMap(), mode(0) { } @@ -105,17 +105,16 @@ bool ResourceEngine::connect() uint32_t allResources, optionalResources, sharedResources; allResources = allResourcesToBitmask(resourceSet); optionalResources = optionalResourcesToBitmask(resourceSet); - sharedResources = sharedResourcesToBitmask(resourceSet); resourceMessage.record.rset.all = allResources; resourceMessage.record.rset.opt = optionalResources; - resourceMessage.record.rset.share = sharedResources; - resourceMessage.record.rset.mask = 0; //find out what it is + resourceMessage.record.rset.share = 0; + resourceMessage.record.rset.mask = 0; QByteArray ba = resourceSet->applicationClass().toLatin1(); resourceMessage.record.klass = ba.data(); - resourceMessage.record.mode = 0; //No auto release + resourceMessage.record.mode = mode; libresourceSet = resconn_connect(libresourceConnection, &resourceMessage, statusCallbackHandler); @@ -299,3 +298,8 @@ void ResourceEngine::handleConnectionIsUp() emit connectedToManager(); } +void ResourceEngine::setMode(quint32 newMode) +{ + mode = newMode; +} + diff --git a/libresourceqt/src/resource-engine.h b/libresourceqt/src/resource-engine.h index 6d81d8e..9d26127 100644 --- a/libresourceqt/src/resource-engine.h +++ b/libresourceqt/src/resource-engine.h @@ -41,6 +41,8 @@ public: void handleStatusMessage(quint32 requestNo); + void setMode(quint32 newMode); + signals: void resourcesBecameAvailable(QList availableResources); void resourcesAcquired(QList grantedResources); @@ -57,6 +59,7 @@ private: resset_t *libresourceSet; quint32 requestId; QMap messageMap; + quint32 mode; }; } diff --git a/libresourceqt/src/resource-set.cpp b/libresourceqt/src/resource-set.cpp index 64bdf8e..f8f3826 100644 --- a/libresourceqt/src/resource-set.cpp +++ b/libresourceqt/src/resource-set.cpp @@ -3,7 +3,9 @@ using namespace ResourcePolicy; ResourceSet::ResourceSet(const QString &applicationClass, QObject * parent) - : QObject(parent), resourceClass(applicationClass) + : QObject(parent), resourceClass(applicationClass), autoRelease(false), + alwaysReply(false) + { identifier = (quint32)this; memset(resourceSet, 0, sizeof(QPointer)*NumberOfTypes); @@ -16,8 +18,16 @@ ResourceSet::~ResourceSet() } } +bool ResourceSet::finalize() +{ + return false; +} + void ResourceSet::addResource(const Resource *resource) { + if((resource->type() == AudioPlaybackType) || (resource->type() == AudioRecorderType)) { + qDebug("audioResource..."); + } resourceSet[resource->type()] = resource->clone(); } @@ -80,36 +90,43 @@ Resource * ResourceSet::resource(ResourceType type) const return NULL; } -bool ResourceSet::connectToManager(bool reconnectOnDisconnect) +bool ResourceSet::acquire() { return false; } -void ResourceSet::disconnectFromManager() +bool ResourceSet::release() { + return false; } -bool ResourceSet::isConnectedToManager() +bool ResourceSet::update() { return false; } -bool ResourceSet::acquire() +QString ResourceSet::applicationClass() { - return false; + return this->resourceClass; } -bool ResourceSet::release() +void ResourceSet::setAutoRelease() { - return false; + autoRelease = true; } -bool ResourceSet::update() +void ResourceSet::unsetAutoRelease() { - return false; + autoRelease = false; } -QString ResourceSet::applicationClass() +void ResourceSet::setAlwaysReply() { - return this->resourceClass; + alwaysReply = true; +} + +void ResourceSet::unsetAlwaysReply() +{ + alwaysReply = false; } + diff --git a/libresourceqt/src/resource.cpp b/libresourceqt/src/resource.cpp index fe1153e..796a345 100644 --- a/libresourceqt/src/resource.cpp +++ b/libresourceqt/src/resource.cpp @@ -29,16 +29,6 @@ void Resource::setOptional(bool resourceIsOptional) optional = resourceIsOptional; } -bool Resource::isShared() const -{ - return shared; -} - -void Resource::setShared(bool shared) -{ - this->shared = shared; -} - bool Resource::isGranted() const { return granted; -- cgit v1.2.3