[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/dbus-qt4-qt3backport/dbus
From: Kevin Krammer <kevin.krammer () gmx ! at>
Date: 2007-01-31 23:14:04
Message-ID: 1170285244.579194.16702.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 628926 by krake:
Adding method to QDBusObjectBase to allow subclasses to pass method calls to
each other in order to enable composite objects to hand method calls to their
respective interface implementation instance.
M +29 -1 qdbusobject.h
--- branches/work/dbus-qt4-qt3backport/dbus/qdbusobject.h #628925:628926
@@ -268,7 +268,7 @@
* // delegate call to its interface handler
* QDBusObjectBase* handler = m_interfaces[message.interface()];
* if (handler != 0)
- * return handler->handleMethodCall(message);
+ * return delegateMethodCall->(message, handler);
* else
* return false; // no such interface
* }
@@ -339,6 +339,34 @@
* unknown
*/
virtual bool handleMethodCall(const QDBusMessage& message) = 0;
+
+ /**
+ * @brief Delegate a method call to another object
+ *
+ * When a service object is built as a collection of separated interface
+ * class instances, i.e. each interface of the object is implemented in
+ * its own QDBusObjectBase subclass and the main object just wanst to pass
+ * on the method calls to the respective interface implementations, it
+ * can do so by calling this base class method.
+ *
+ * Since it is a method of the base class, it can call the otherwise
+ * protected handleMethodCall() of the interface implementor.
+ *
+ * See @ref dbusservice-interfaces for an example.
+ *
+ * @param message the method call to delegate
+ * @param delegate the object which should handle the call instead
+ *
+ * @return @c true if the message can be handled independent if handling
+ * resulted in an error. In this case implementations should an
+ * error reply. Returns @c false only if interface or method are
+ * unknown
+ *
+ */
+ bool delegateMethodCall(const QDBusMessage& message, QDBusObjectBase* delegate)
+ {
+ return delegate->handleMethodCall(message);
+ }
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic