/*! \since 4.5 Sends the \a message over this connection and returns immediately. This function is suitable for method calls only. It returns an object of type QDBusPendingCall which can be used to track the status of the reply. If no reply is received within \a timeout milliseconds, an automatic error will be delivered indicating the expiration of the call. The default \a timeout is -1, which will be replaced with an implementation-defined value that is suitable for inter-process communications (generally, 25 seconds). This timeout is also the upper limit for waiting in QDBusPendingCall::waitForFinished(). See the QDBusInterface::asyncCall() function for a more friendly way of placing calls. */ QDBusPendingCall QDBusConnection::asyncCall(const QDBusMessage &message, int timeout) const { if (!d || !d->connection) { return QDBusPendingCall(0); // null pointer -> disconnected } QDBusPendingCallPrivate *priv = d->sendWithReplyAsync(message, timeout); return QDBusPendingCall(priv); }
/*! \since 4.6 Creates a QDBusPendingCall object based on the message \a msg. The message must be of type QDBusMessage::ErrorMessage or QDBusMessage::ReplyMessage (that is, a message that is typical of a completed call). This function is useful for code that requires simulating a pending call, but that has already finished. \sa fromError() */ QDBusPendingCall QDBusPendingCall::fromCompletedCall(const QDBusMessage &msg) { QDBusPendingCallPrivate *d = 0; if (msg.type() == QDBusMessage::ErrorMessage || msg.type() == QDBusMessage::ReplyMessage) { d = new QDBusPendingCallPrivate(QDBusMessage(), 0); d->replyMessage = msg; } return QDBusPendingCall(d); }