diff options
Diffstat (limited to 'tqdbusmessage.h')
-rw-r--r-- | tqdbusmessage.h | 514 |
1 files changed, 0 insertions, 514 deletions
diff --git a/tqdbusmessage.h b/tqdbusmessage.h deleted file mode 100644 index 665a83f..0000000 --- a/tqdbusmessage.h +++ /dev/null @@ -1,514 +0,0 @@ -/* qdbusmessage.h TQT_DBusMessage object - * - * Copyright (C) 2005 Harald Fernengel <[email protected]> - * Copyright (C) 2005-2007 Kevin Krammer <[email protected]> - * - * Licensed under the Academic Free License version 2.1 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - * USA. - * - */ - -#ifndef TQDBUSMESSAGE_H -#define TQDBUSMESSAGE_H - -#include "tqdbusmacros.h" -#include "tqdbusdata.h" - -#include <tqvaluelist.h> - -#include <limits.h> - -class TQT_DBusError; -class TQT_DBusMessagePrivate; -struct DBusMessage; - -/** - * @brief A message converts and transports data over D-Bus - * - * A TQT_DBusMessage is implicitly shared, similar to a TQString, i.e. copying - * a message creates just a shallow copy. - * - * The TQT_DBusMessage is the TQt3 bindings means of encapsulating data for a - * method call, a method reply or an error. - * - * Data specifying the sender and receipient is directly accessible through - * getter methods, while data, e.g. method parameters or return values, are - * managed as a list of TQT_DBusData. - * - * To create a message suitable for sending use one of the static factory - * methods: - * - signal() for creating a D-Bus signal message - * - * - methodCall() for creating a D-Bus method calls to a service object - * - * - methodReply() for creating a method reply on success - * - * - methodError() for creating a method reply on error - * - * @note for applications that just want to perform method calls and/or receive - * signals, it is usually more convenient to use TQT_DBusProxy instead. - * - * Message sending is achieved through TQT_DBusConnection - * - * Example: - * @code - * TQT_DBusConnection con = TQT_DBusConnection::sessionBus(); - * - * // receipient service is the bus' main interface - * - * TQString service = "org.freedesktop.DBus"; - * TQString path = "/org/freedesktop/DBus"; - * TQString interface = "org.freedesktop.DBus"; - * - * TQT_DBusMessage msg = TQBusMessage::methodCall(service, path, interface, "ListNames"); - * - * TQT_DBusMessage reply = con.sendWithReply(msg); - * - * // awaiting for a message list - * - * if (reply.type() != TQT_DBusMessage::ReplyMessage || reply.count() != 2 || - * reply[0].type() != TQT_DBusData::List) - * { - * // error handling here - * } - * else - * { - * TQStringList list = reply[0].toTQStringList(); - * - * // reply handling here - * } - * @endcode - * - * A service returning such a reply would do something like this - * @code - * bool Service::handleMethodCall(const TQT_DBusMessage& call) - * { - * // checks for correctness, i.e. correct interface, member, - * // would usually haven been placed here - * - * TQStringList result; - * result << "Foo" << "Bar"; - * - * TQT_DBusMessage reply = TQT_DBusMessage::methodReply(call); - * reply << TQT_DBusData::fromList(result); - * - * connection.send(reply); - * - * return true; - * } - * @endcode - */ -class TQDBUS_EXPORT TQT_DBusMessage: public TQValueList<TQT_DBusData> -{ - friend class TQT_DBusConnection; -public: - /** - * @brief Anonymous enum for timeout constants - * - * @see timeout() - * @see setTimeout() - */ - enum - { - /** - * Use whatever D-Bus has as default timeout - */ - DefaultTimeout = -1, - - /** - * Use no timeout at all, i.e. wait as long as necessary - */ - NoTimeout = INT_MAX - }; - - /** - * @brief D-Bus message types - * - * A message of a specific type can be created using the respective factory - * method. A message created by the default constructor becomes an - * InvalidMessage - * - * @see type() - * @see signal() - * @see methodCall() - * @see methodReply() - * @see methodError() - */ - enum MessageType - { - /** - * An invalid message cannot be sent over D-Bus. This type serves for - * initializing message variables without requiring a "real" message - */ - InvalidMessage, - - /** - * A message for doing method calls on remote service objects - * - * @see methodCall() - */ - MethodCallMessage, - - /** - * A message for replying to a method call in case of success - * - * @see methodReply() - */ - ReplyMessage, - - /** - * A message for replying to a method call in case of failure - * - * @see methodError() - */ - ErrorMessage, - - /** - * A message for emitting D-Bus signals - * - * @see signal() - */ - SignalMessage - }; - - /** - * @brief Creates an empty and invalid message - * - * To create a message suitable for sending through D-Bus see the factory - * methods signal(), methodCall(), methodReply() and methodError() - * - * @see #InvalidMessage - */ - TQT_DBusMessage(); - - - /** - * @brief Creates a shallow copy of the given message - * - * This instance will become a handle to the same message data the other - * message is using, including #MessageType - * - * @param other the message to copy - */ - TQT_DBusMessage(const TQT_DBusMessage &other); - - /** - * @brief Destroys a message - * - * If this message handle is the last one using this respective message - * content, the message content will be deleted as well - */ - ~TQT_DBusMessage(); - - /** - * @brief Creates a shallow copy of the given message - * - * This instance will become a handle to the same message data the other - * message is usingm including #MessageType - * - * Any content used in this instance will be deleted if this instance was - * the last handle using that content - * - * @param other the message to copy - * - * @return a reference to this instance as required by assignment operator - * semantics - */ - TQT_DBusMessage &operator=(const TQT_DBusMessage &other); - - /** - * @brief Creates a message for sending a D-Bus signal - * - * Sending/emitting a signal over D-Bus requires a message of type - * #SignalMessage as well as the information where it is coming from, i.e. - * which interface of which object is sending it. - * See @ref dbusconventions for recommendations on those parameters. - * - * @param path the object path of the service object - * @param interface the object's interface to which the signal belongs - * @param member the signal's name - * - * @return a message suitable for appending arguments and for sending - * - * @see TQT_DBusConnection::send() - */ - static TQT_DBusMessage signal(const TQString &path, const TQString &interface, - const TQString &member); - - /** - * @brief Creates a message for sending a D-Bus method call - * - * Invoking a method over D-Bus requires a message of type - * #MethodCallMessage as well as the information where it should be sent - * to, e.g which interface of which object in which service. - * See @ref dbusconventions for recommendations on those parameters. - * - * @param service the D-Bus name of the application hosting the service - * object - * @param path the object path of the service object - * @param interface the object's interface to which the method belongs - * @param method the method's name - * - * @return a message suitable for appending arguments and for sending - * - * @see methodReply() - * @see methodError() - * @see TQT_DBusConnection::send() - */ - static TQT_DBusMessage methodCall(const TQString &service, const TQString &path, - const TQString &interface, const TQString &method); - - /** - * @brief Creates a message for replying to a D-Bus method call - * - * Replying to a D-Bus method call in the case of success requires a message - * of type #ReplyMessage as well as the information to which method call it - * is replying to. - * - * @param other the method call message it is replying to - * - * @return a message suitable for appending arguments and for sending - * - * @see methodCall() - * @see methodError() - * @see TQT_DBusConnection::send() - */ - static TQT_DBusMessage methodReply(const TQT_DBusMessage &other); - - /** - * @brief Creates a message for replying to a D-Bus method call - * - * Replying to a D-Bus method call in the case of failure requires a message - * of type #ErrorMessage as well as the information to which method call it - * is replying to and which error occured. - * - * @param other the method call message it is replying to - * @param error the error which occured during during the method call - * - * @return a message suitable for appending arguments and for sending - * - * @see methodCall() - * @see methodReply() - * @see TQT_DBusConnection::send() - */ - static TQT_DBusMessage methodError(const TQT_DBusMessage &other, const TQT_DBusError& error); - - /** - * @brief Returns the message's object path - * - * See section @ref dbusconventions-objectpath for details. - * - * The context of the object path depends on the message type: - * - #SignalMessage: the path of the service object which emits the signal - * - #MethodCallMessage: the path of the service object the call is sent to - * - #ReplyMessage: the path of the object which is replying - * - #ErrorMessage: the path of the object which is replying - * - * @return a non-empty object path or @c TQString() - * - * @see interface() - * @see member() - * @see sender() - */ - TQString path() const; - - /** - * @brief Returns the message's interface name - * - * See section @ref dbusconventions-interfacename for details. - * - * The context of the interface name depends on the message type: - * - #SignalMessage: the name of the interface which emits the signal - * - #MethodCallMessage: the name of the interface the call is sent to - * - #ReplyMessage: the name of the interface to which the method belonged - * - #ErrorMessage: the name of the interface to which the method belonged - * - * @return a non-empty interface name or @c TQString() - * - * @see path() - * @see member() - * @see sender() - */ - TQString interface() const; - - /** - * @brief Returns the message's member name - * - * See section @ref dbusconventions-membername for details. - * - * The context of the member name depends on the message type: - * - #SignalMessage: the name of the emitted signal - * - #MethodCallMessage: the name of the method to call - * - #ReplyMessage: the name of the method which replies - * - #ErrorMessage: the name of the method which replies - * - * @return a non-empty member name or @c TQString() - * - * @see path() - * @see interface() - * @see sender() - */ - TQString member() const; - - /** - * @brief Returns the name of the message sender - * - * The message sender name or address used on the D-Bus message bus - * to refer to the application which sent this message. - * - * See section @ref dbusconventions-servicename for details. - * - * This can either be a unique name as handed out by the bus, see - * TQT_DBusConnection::uniqueName() or a name registered with - * TQT_DBusConnection::requestName() - * - * @return a non-empty D-Bus sender name or @c TQString() - * - * @see path() - * @see interface() - * @see member() - */ - TQString sender() const; - - /** - * @brief Returns the error of an error message - * - * If this message is of type #ErrorMessage, this method can be used - * to retrieve the respective error object - * - * @return the transported error object. Will be empty if this is not an - * error message - * - * @see type() - */ - TQT_DBusError error() const; - - /** - * @brief Returns which kind of message this is - * - * @return the message's type - */ - MessageType type() const; - - /** - * @brief Returns the message's timeout - * - * @return the asynchronous wait timeout in milliseconds - * - * @see setTimeout() - */ - int timeout() const; - - /** - * @brief Sets the message's timeout - * - * The timeout is the number of milliseconds the D-Bus connection will - * wait for the reply of an asynchronous call. - * - * If no reply is received in time, an error message will be delivered to - * the asynchronous reply receiver. - * - * If no timeout is set explicitly, #DefaultTimeout is assumed, which is - * usually the best option - * - * @return the asynchronous wait timeout in milliseconds - * - * @param ms timeout in milliseconds - * - * @see timeout() - * @see #DefaultTimeout - * @see #NoTimeout - */ - void setTimeout(int ms); - - /** - * @brief Returns the message's serial number - * - * The serial number is some kind of short term identifier for messages - * travelling the same connection. - * - * It can be used to associate a reply or error message with a method - * call message. - * - * @return the message's serial number or @c 0 if the message hasn't been - * send yets - * - * @see replySerialNumber() - */ - int serialNumber() const; - - /** - * @brief Returns the message's reply serial number - * - * The reply serial number is the serial number of the method call message - * this message is a reply to. - * - * If this is neither a message of type #ReplyMessage or #ErrorMessage, the - * returned value will be @c 0 - * - * It can be used to associate a reply or error message with a method - * call message. - * - * @return the serial number of the associated method call message or @c 0 - * if this message is not a reply message - * - * @see serialNumber() - * @see methodReply() - * @see methodError() - * @see TQT_DBusConnection::sendWithAsyncReply() - * @see TQT_DBusProxy::sendWithAsyncReply() - */ - int replySerialNumber() const; - -//protected: - /** - * @brief Creates a raw D-Bus message from this TQt3-bindings message - * - * Marshalls data contained in the message's value list into D-Bus data - * format and creates a low level API D-Bus message for it. - * - * @note ownership of the returned message is transferred to the caller, - * i.e. it has to be deleted using dbus_message_unref() - * - * @return a C API D-Bus message or @c 0 if this is an #InvalidMessage - * or marshalling failed - */ - DBusMessage *toDBusMessage() const; - - /** - * @brief Creates a TQt3-bindings message from the given raw D-Bus message - * - * De-marshalls data contained in the message to a list of TQT_DBusData. - * - * @note ownership of the given message is shared between the caller and - * the returned message, i.e. the message as increased the reference - * counter and will still have access to the raw message even if the - * caller "deleted" it using dbus_message_unref() - * - * @param dmsg a C API D-Bus message - * - * @return a TQt3 bindings message. Can be an #InvalidMessage if the given - * message was @c 0 or if de-marshalling failed - */ - static TQT_DBusMessage fromDBusMessage(DBusMessage *dmsg); - -private: - TQT_DBusMessagePrivate *d; -}; - -#endif - |