DCOPRef Class Reference
A DCOPRef(erence) encapsulates a remote DCOP object as a triple <app,obj,type> where type is optional. More...
#include <dcopref.h>
Public Member Functions | |
DCOPRef () | |
Creates a null reference. | |
DCOPRef (const DCOPRef &ref) | |
Copy constructor. | |
DCOPRef (const QCString &app, const QCString &obj="") | |
Creates a reference for application app and object obj . | |
DCOPRef (DCOPObject *object) | |
Creates a reference to an existing dcop object. | |
DCOPRef (const QCString &app, const QCString &obj, const QCString &type) | |
Creates a reference for application app and object obj with a specified type type . | |
bool | isNull () const |
Tests wether it is a null reference. | |
QCString | app () const |
Name of the application in which the object resides. | |
QCString | obj () const |
Object ID of the referenced object. | |
QCString | object () const |
QCString | type () const |
Type of the referenced object. | |
DCOPRef & | operator= (const DCOPRef &) |
Assignment operator. | |
void | setRef (const QCString &app, const QCString &obj="") |
Changes the referenced object. | |
void | setRef (const QCString &app, const QCString &obj, const QCString &type) |
Changes the referenced object. | |
void | clear () |
Makes this a null reference. | |
DCOPClient * | dcopClient () const |
Returns the dcop client the reference operates on. | |
void | setDCOPClient (DCOPClient *client) |
Sets a specific dcop client for this reference. | |
DCOPReply | call (const QCString &fun) |
Calls the function fun on the object referenced by this reference. | |
template<class T1> DCOPReply | call (const QCString &fun, const T1 &t1) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5, class T6> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5, class T6, class T7> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> DCOPReply | call (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7, const T8 &t8) |
Calls the function fun on the object referenced by this reference. | |
bool | send (const QCString &fun) |
Calls the function fun on the object referenced by this reference. | |
template<class T1> bool | send (const QCString &fun, const T1 &t1) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2> bool | send (const QCString &fun, const T1 &t1, const T2 &t2) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3> bool | send (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4> bool | send (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5> bool | send (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5, class T6> bool | send (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5, class T6, class T7> bool | send (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7) |
Calls the function fun on the object referenced by this reference. | |
template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> bool | send (const QCString &fun, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5, const T6 &t6, const T7 &t7, const T8 &t8) |
Calls the function fun on the object referenced by this reference. |
Detailed Description
A DCOPRef(erence) encapsulates a remote DCOP object as a triple <app,obj,type> where type is optional.It allows for calling and passing DCOP objects.
A DCOP reference makes it possible to return references to other DCOP objects in a DCOP interface, for example in the method giveMeAnotherObject() in an interface like this:
class Example : public DCOPObject { K_DCOP ... k_dcop: DCOPRef giveMeAnotherObject(); int doSomething( QString, float, bool ); ASYNC pingMe( QCString message ); UserType userFunction( UserType ); };In addition, the reference can operate as a comfortable generic stub to call remote DCOP objects in cases where no DCOPStub is available. The advantage of using DCOPRef instead of the low-level functions DCOPClient::call() and DCOPClient::send() are the nicer syntax and the implicit runtime error checking.
Say you want to call the method "doSomething" from the above interface on an object called "example" that lives in application "foo". Using DCOPRef, you would write
DCOPRef example( "foo", "example" ); int result = example.call( "doSomething", "Hello World", (float)2.5, true );If it is important for you to know whether the call succeeded or not, you can use the slightly more elaborate pattern:
DCOPRef example( "foo", "example" ); DCOPReply reply = example.call( "doSomething", "Hello World", (float)2.5, true ); if ( reply.isValid() ) { int result = reply; // ... }For curiosity, here is how you would achieve the exactly same functionality by using DCOPClient::call() directly:
QByteArray data, replyData; QCString replyType; QDataStream arg( data, IO_WriteOnly ); arg << QString("hello world" ), (float) 2.5 << true; if ( DCOPClient::mainClient()->call( app, obj, "doSomething(QString,float,bool)", data, replyType, replyData ) ) { if ( replyType == "int" ) { int result; QDataStream reply( replyData, IO_ReadOnly ); reply >> result; // ... } }As you might see from the code snippet, the DCOPRef has to "guess" the names of the datatypes of the arguments to construct a dcop call. This is done through global inline overloads of the dcopTypeName function, for example
inline const char* dcopTypeName( const QString& ) { return "QString"; }If you use custom data types that do support QDataStream but have no corrsponding dcopTypeName overload, you can either provide such an overload or use a DCOPArg wrapper that allows you to specify the type.
UserType userType; DCOPReply reply = example.call( "userFunction", DCOPArg( userType, "UserType" ) );Similar, when you retrieve such a data type, you can use an explicit call to DCOPReply::get():
UserType userType; reply.get( userType, "UserType" );The function send() works very similar to call(), only that it returns a simple bool on whether the signal could be sent or not:
if ( example.pingMe( "message" ) == false ) qWarning("could not ping example" );A DCOP reference operates on DCOPClient::mainClient(), unless you explicitely specify another client with setDCOPClient().
- See also:
- DCOPArg
- Author:
- Matthias Ettrich <ettrich@kde.org>, Torben Weis <weis@kde.org>
Definition at line 275 of file dcopref.h.
Constructor & Destructor Documentation
|
Creates a null reference.
Definition at line 91 of file dcopref.cpp. |
|
Copy constructor.
Definition at line 96 of file dcopref.cpp. |
|
Creates a reference for application
Definition at line 111 of file dcopref.cpp. |
|
Creates a reference to an existing dcop object.
Definition at line 104 of file dcopref.cpp. |
|
Creates a reference for application
Definition at line 116 of file dcopref.cpp. |
Member Function Documentation
|
Tests wether it is a null reference.
Definition at line 121 of file dcopref.cpp. References QCString::isNull(). |
|
Name of the application in which the object resides.
Definition at line 126 of file dcopref.cpp. Referenced by operator=(). |
|
Object ID of the referenced object.
Definition at line 131 of file dcopref.cpp. Referenced by operator=(). |
|
Definition at line 136 of file dcopref.cpp. |
|
Type of the referenced object. May be null (i.e. unknown).
Definition at line 142 of file dcopref.cpp. Referenced by operator=(). |
|
Assignment operator. Copies the references data. Definition at line 157 of file dcopref.cpp. |
|
Changes the referenced object. Resets the type to unknown (null).
Definition at line 166 of file dcopref.cpp. |
|
Changes the referenced object.
Definition at line 173 of file dcopref.cpp. |
|
Makes this a null reference.
Definition at line 180 of file dcopref.cpp. |
|
Returns the dcop client the reference operates on. If no client has been set, this is the DCOPClient::mainClient().
Definition at line 152 of file dcopref.cpp. References DCOPClient::mainClient(). |
|
Sets a specific dcop client for this reference. Otherwise DCOPClient::mainClient() is used.
Definition at line 147 of file dcopref.cpp. |
|
Calls the function
|
|
Calls the function
Definition at line 422 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 450 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 483 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 520 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 561 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 606 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 655 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function
Definition at line 708 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
|
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 768 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 796 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 829 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 866 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 907 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 952 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 1001 of file dcopref.h. References QCString::sprintf(). |
|
Calls the function Unlike call() this method does not expect a return value.
Definition at line 1054 of file dcopref.h. References QCString::sprintf(). |
The documentation for this class was generated from the following files: