25#include <tqapplication.h>
105 for (ConnectionHash::const_iterator it =
connectionHash.constBegin();
123 for (ConnectionHash::const_iterator it =
connectionHash.constBegin();
126 it.data()->bindToApplication();
164 if (
d && !
d->ref.deref())
203 DBusConnection *c = 0;
206 c = dbus_bus_get(DBUS_BUS_SYSTEM, &
d->error);
209 c = dbus_bus_get(DBUS_BUS_SESSION, &
d->error);
212 c = dbus_bus_get(DBUS_BUS_STARTER, &
d->error);
223 const TQString &name)
234 d->setConnection(dbus_connection_open(address.utf8().data(), &
d->error));
248 DBusTimeout *timeout =
timeouts[e->timerId()];
249 dbus_timeout_handle(timeout);
254 if (!
d || !
d->connection)
261 bool isOk = dbus_connection_send(
d->connection, msg, 0);
262 dbus_message_unref(msg);
267 const char *method)
const
269 if (!
d || !
d->connection)
272 return d->sendWithReplyAsync(message, receiver, method);
277 if (!
d || !
d->connection)
284 DBusMessage *reply = dbus_connection_send_with_reply_and_block(
d->connection, msg, -1, &
d->error);
286 if (
d->handleError() && error)
287 *error =
d->lastError;
289 dbus_message_unref(msg);
293 dbus_message_unref(reply);
296 bool dbus_error_set = dbus_error_is_set(&
d->error);
300 d->scheduleDispatch();
307 if (!
d || !
d->connection)
return;
314 if (!
d || !
d->connection)
return;
321 if (!
d || !
d->connection)
return;
323 d->scheduleDispatch();
328 if (!
d || !
d->connection || !
object || !slot)
331 bool ok =
object->connect(
d, TQ_SIGNAL(dbusSignal(
const TQT_DBusMessage&)), slot);
338 if (!
d || !
d->connection || !
object || !slot)
341 bool ok =
d->disconnect(
object, slot);
348 if (!
d || !
d->connection || !
object || path.isEmpty())
351 TQT_DBusConnectionPrivate::ObjectMap::const_iterator it =
d->registeredObjects.find(path);
352 if (it !=
d->registeredObjects.end())
355 d->registeredObjects.insert(path,
object);
362 if (!
d || !
d->connection || path.isEmpty())
365 TQT_DBusConnectionPrivate::ObjectMap::iterator it =
d->registeredObjects.find(path);
366 if (it ==
d->registeredObjects.end())
369 d->registeredObjects.erase(it);
374 return d &&
d->connection && dbus_connection_get_is_connected(
d->connection);
384 return d &&
d->connection ?
385 TQString::fromUtf8(dbus_bus_get_unique_name(
d->connection))
391 Q_ASSERT(modeFlags >= 0);
393 if (!
d || !
d->connection)
401 dbusFlags |= DBUS_NAME_FLAG_ALLOW_REPLACEMENT;
403 dbusFlags |= DBUS_NAME_FLAG_REPLACE_EXISTING;
405 dbus_bus_request_name(
d->connection, name.utf8(), dbusFlags, &
d->error);
406 bool res = !
d->handleError();
407 res &=
d->handleUnreadMessages();
411#include "tqdbusconnection.moc"
bool connect(TQObject *object, const char *slot)
Connects an object to receive D-Bus signals.
void flush() const
Flushes buffered outgoing message.
TQT_DBusMessage sendWithReply(const TQT_DBusMessage &message, TQT_DBusError *error=0) const
Sends a message over the bus and waits for the reply.
int sendWithAsyncReply(const TQT_DBusMessage &message, TQObject *receiver, const char *slot) const
Sends a message over the bus, specifying a receiver object for replies.
TQT_DBusConnectionPrivate * d
bool disconnect(TQObject *object, const char *slot)
Disconnects a given receiver from the D-Bus signal handling.
static const char * default_connection_name
TQString uniqueName() const
Returns the connection identifier assigned at connect.
static TQT_DBusConnection addConnection(BusType type, const TQString &name=default_connection_name)
Add a connection to a bus with a specific bus type.
static TQT_DBusConnection sessionBus()
Gets a connection to the session bus.
TQT_DBusConnection & operator=(const TQT_DBusConnection &other)
Creates a shallow copy of the given connection.
bool send(const TQT_DBusMessage &message) const
Sends a message over the bus.
TQT_DBusConnection()
Creates an empty/disconnected connection handle.
TQT_DBusError lastError() const
Returns the last error seen by the connection.
static void closeConnection(const TQString &name=default_connection_name)
Closes a connection with a given name.
static TQT_DBusConnection systemBus()
Gets a connection to the system bus.
void dispatch() const
Processes buffered inbound messages.
void scheduleDispatch() const
Request a delayed check for inbound buffer processing.
bool registerObject(const TQString &path, TQT_DBusObjectBase *object)
Registers a service object for a given path.
~TQT_DBusConnection()
Destroys the connection handle.
bool isConnected() const
Returns whether the connection is connected to a bus.
bool requestName(const TQString &name, int modeFlags=NoReplace)
Requests to be addressable on the bus by a given name.
void unregisterObject(const TQString &path)
Unregister a service object on a given path.
TQT_DBusConnectionPrivate * connection(const TQString &name) const
TQT_DBusConnectionPrivate * default_connection
ConnectionHash connectionHash
static TQT_DBusConnectionManager * instance()
void setConnection(const TQString &name, TQT_DBusConnectionPrivate *c)
void removeConnection(const TQString &name)
~TQT_DBusConnectionManager()
static TQT_DBusConnectionManager * managerInstance
TQMap< TQString, TQT_DBusConnectionPrivate * > ConnectionHash
TQT_DBusConnectionManager()
void timerEvent(TQTimerEvent *e)
Class for transporting D-Bus errors.
void setDBUSError(bool err) const
A message converts and transports data over D-Bus.
TQT_DBusMessagePrivate * d
DBusMessage * toDBusMessage() const
Creates a raw D-Bus message from this TQt3-bindings message.
static TQT_DBusMessage fromDBusMessage(DBusMessage *dmsg)
Creates a TQt3-bindings message from the given raw D-Bus message.
Base interface for D-Bus service objects.
void qDBusBindToApplication()
TQT_DBusConnectionManager * manager()