The QRemoteServiceRegister class manages instances of remote service objects. More...
#include <QRemoteServiceRegister>
Inherits: QObject.
This class was introduced in Qt Mobility 1.1.
class | Entry |
enum | InstanceType { GlobalInstance, PrivateInstance } |
QRemoteServiceRegister ( QObject * parent = 0 ) | |
~QRemoteServiceRegister () | |
Entry | createEntry ( const QString & serviceName, const QString & interfaceName, const QString & version ) |
void | publishEntries ( const QString & ident ) |
bool | quitOnLastInstanceClosed () const |
void | setQuitOnLastInstanceClosed ( const bool quit ) |
SecurityFilter | setSecurityFilter ( SecurityFilter filter ) |
void | allInstancesClosed () |
void | instanceClosed ( const QRemoteServiceRegister::Entry & entry ) |
The QRemoteServiceRegister class manages instances of remote service objects.
This class registers and publishes IPC based service objects. It owns the service's objects and uess the platform specific IPC mechanism to publish the service.
In order for the remote services to be discoverable by QServiceManager each QRemoteServiceRegister::Entry must be registered with the same information in the XML description, otherwise no corresponding QServiceInterfaceDescriptor can be found.
The following XML descriptor is used for subsequent examples.
<SFW version="1.1"> <service> <name>MyService</name> <ipcaddress>my_executable</ipcaddress> <description>My service example</description> <interface> <name>com.nokia.qt.example.myService</name> <version>1.0</version> <description>My private service</description> <capabilities></capabilities> </interface> </service> </SFW>
The snippet belows demonstrates how an application can register the class MyClass as a remote service, which is published and accessible to clients who wish to load service object instances.
int main(int argc, char** argv) { QCoreApplication app(argc, argv); QRemoteServiceRegister *serviceRegister = new QRemoteServiceRegister(); QRemoteServiceRegister::Entry myService; myService = serviceRegister->createEntry<MyClass>( "MyService", "com.nokia.qt.example.myservice", "1.0"); serviceRegister->publishEntries("my_service"); return app.exec(); delete serviceRegister; }
By default all entries are created as QRemoteServiceRegister::GlobalInstance types. This can be changed by calling QRemoteServiceRegister::Entry::setInstantiationType() on the entry. Once the service register has been published the associated service entries can no longer be changed.
See also QRemoteServiceRegister::Entry.
Defines the two types of instances for a registration entry
Constant | Value | Description |
---|---|---|
QRemoteServiceRegister::GlobalInstance | 0 | New requests for a service gets the same service instance |
QRemoteServiceRegister::PrivateInstance | 1 | New requests for a service gets a new service instance |
This property holds terminate the service when all clients have closed all objects. Default value is true.
This property was introduced in Qt Mobility 1.1.
Access functions:
bool | quitOnLastInstanceClosed () const |
void | setQuitOnLastInstanceClosed ( const bool quit ) |
Creates a service register instance with the given parent.
This function was introduced in Qt Mobility 1.1.
Destroys the service register instance
This signal is emitted whenever all service instances have been closed. This indicates that the last connected client has either shutdown or released the loaded service object.
This function was introduced in Qt Mobility 1.1.
See also instanceClosed().
Creates an entry on our remote instance manager. The serviceName, interfaceName and version must match the service XML descriptor in order for the remote service to be discoverable.
This function was introduced in Qt Mobility 1.1.
See also publishEntries().
This signal is emitted whenever a created instance has been closed. This indicates that a connected client has either shutdown or released the loaded service object.
entry is supplied to identify which registered service entry the closed instance belonged to.
This function was introduced in Qt Mobility 1.1.
See also allInstancesClosed().
Publishes every service QRemoteServiceRegister::Entry that has been created using createEntry(). The ident is the service specific IPC address under which the service can be reached.
This address must match the address provided in the services XML descriptor, otherwise the service will not be discoverable. In some cases this may also cause the IPC rendezvous feature to fail.
This function was introduced in Qt Mobility 1.1.
See also createEntry().
Allows a security filter to be set which can access QRemoteServiceRegister::QRemoteServiceRegisterCredentials.
The filter is a function pointer where the function code implements possible permission checks and returns true or false. If a connecting client fails the security filter it will be denied access and unable to obtain a valid service instance.
The following snippet is an example of how to use the security filter feature.
bool myFunction(const void *p) { const QRemoteServiceRegisterCredentials *cred = (const struct QRemoteServiceRegisterCredentials *)p; // allow the superuser if (cred->uid == 0) return true; return false; } int main(int argc, char** argv) { ... QRemoteServiceRegister* serviceRegister = new QRemoteServiceRegister(); service->setSecurityFilter(myFunction); ... }
This function was introduced in Qt Mobility 1.1.
© 2008-2011 Nokia Corporation and/or its subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide.
All other trademarks are property of their respective owners. Privacy Policy
Licensees holding valid Qt Commercial licenses may use this document in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Nokia.
Alternatively, this document may be used under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation.