patch for qt/connection.cpp
Harald Fernengel
harryf at gmx.com
Tue Apr 27 05:01:23 EST 2004
Hi,
that patch cleans connection.{cpp|h} up a bit and adds a new constructor
to open a connection based on DBusBusType.
Please apply (or get me a CVS account ;))
Harald
-------------- next part --------------
Index: connection.cpp
===================================================================
RCS file: /cvs/dbus/dbus/qt/connection.cpp,v
retrieving revision 1.7
diff -u -3 -p -r1.7 connection.cpp
--- connection.cpp 28 Jan 2004 03:33:44 -0000 1.7
+++ connection.cpp 26 Apr 2004 18:55:18 -0000
@@ -29,30 +29,54 @@ using Internal::Integrator;
struct Connection::Private
{
+ Private(Connection *qq);
+ void setConnection(DBusConnection *c);
+
DBusConnection *connection;
int connectionSlot;
DBusError error;
Integrator *integrator;
int timeout;
+ Connection *q;
};
+Connection::Private::Private(Connection *qq)
+ : connection(0), connectionSlot(0), integrator(0), timeout(-1), q(qq)
+{
+ dbus_error_init(&error);
+}
+
+void Connection::Private::setConnection(DBusConnection *c)
+{
+ if (!c) {
+ qDebug("error: %s, %s", error.name, error.message);
+ dbus_error_free(&error);
+ return;
+ }
+ connection = c;
+ integrator = new Integrator(c, q);
+ connect(integrator, SIGNAL(readReady()), q, SLOT(dispatchRead()));
+}
+
Connection::Connection( const QString& host, QObject *parent )
: QObject( parent )
{
- d = new Private;
+ d = new Private(this);
if ( !host.isEmpty() )
init( host );
}
+Connection::Connection(DBusBusType type, QObject* parent)
+ : QObject(parent)
+{
+ d = new Private(this);
+ d->setConnection(dbus_bus_get(type, &d->error));
+}
+
void Connection::init( const QString& host )
{
- dbus_error_init( &d->error );
- d->timeout = -1;
- d->connection = dbus_connection_open( host.ascii(), &d->error );
- d->integrator = new Integrator( d->connection, this );
- connect( d->integrator, SIGNAL(readReady()),
- SLOT(dispatchRead()) );
+ d->setConnection(dbus_connection_open(host.ascii(), &d->error));
//dbus_connection_allocate_data_slot( &d->connectionSlot );
//dbus_connection_set_data( d->connection, d->connectionSlot, 0, 0 );
}
@@ -96,17 +120,13 @@ DBusConnection* Connection::connection()
Connection::Connection( DBusConnection *connection, QObject *parent )
: QObject( parent )
{
- d = new Private;
- dbus_error_init( &d->error );
- d->timeout = -1;
- d->connection = connection;
- d->integrator = new Integrator( d->connection, this );
- connect( d->integrator, SIGNAL(readReady()),
- SLOT(dispatchRead()) );
+ d = new Private(this);
+ d->setConnection(connection);
}
-void Connection::send( const Message& )
+void Connection::send( const Message &m )
{
+ dbus_connection_send(d->connection, m.message(), 0);
}
void Connection::sendWithReply( const Message& )
@@ -117,6 +137,10 @@ Message Connection::sendWithReplyAndBloc
{
DBusMessage *reply;
reply = dbus_connection_send_with_reply_and_block( d->connection, m.message(), d->timeout, &d->error );
+ if (dbus_error_is_set(&d->error)) {
+ qDebug("error: %s, %s", d->error.name, d->error.message);
+ dbus_error_free(&d->error);
+ }
return Message( reply );
}
Index: connection.h
===================================================================
RCS file: /cvs/dbus/dbus/qt/connection.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 connection.h
--- connection.h 26 Jan 2004 07:46:55 -0000 1.7
+++ connection.h 26 Apr 2004 18:55:18 -0000
@@ -41,6 +41,7 @@ namespace DBusQt {
public:
Connection( const QString& host = QString::null,
QObject* parent = 0);
+ Connection(DBusBusType type, QObject* parent = 0);
bool isConnected() const;
bool isAuthenticated() const;
More information about the dbus
mailing list