dbus/qt connection.cpp,1.7,1.8 connection.h,1.7,1.8

Zack Rusin zack at pdx.freedesktop.org
Tue Apr 27 15:35:03 EST 2004


Update of /cvs/dbus/dbus/qt
In directory pdx:/tmp/cvs-serv16977

Modified Files:
	connection.cpp connection.h 
Log Message:
Committing Haralds stuff together with some of my backlog for connection.


Index: connection.cpp
===================================================================
RCS file: /cvs/dbus/dbus/qt/connection.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- a/connection.cpp	28 Jan 2004 03:33:44 -0000	1.7
+++ b/connection.cpp	27 Apr 2004 05:35:01 -0000	1.8
@@ -29,30 +29,60 @@
 
 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( QObject *parent )
+  : QObject( parent )
+{
+  d = new Private( this );
+}
+
 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 +126,13 @@
 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 +143,10 @@
 {
   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
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- a/connection.h	26 Jan 2004 07:46:55 -0000	1.7
+++ b/connection.h	27 Apr 2004 05:35:01 -0000	1.8
@@ -39,8 +39,10 @@
   {
     Q_OBJECT
   public:
-    Connection( const QString& host = QString::null,
-                QObject* parent = 0);
+    Connection( QObject *parent =0 );
+    Connection( const QString& host,
+                QObject *parent = 0 );
+    Connection( DBusBusType type, QObject* parent = 0 );
 
     bool isConnected() const;
     bool isAuthenticated() const;
@@ -62,11 +64,13 @@
 
   protected:
     void init( const QString& host );
-    virtual void* virtual_hook( int id, void* data );
+    virtual void *virtual_hook( int id, void *data );
+
   private:
     friend class Internal::Integrator;
-    DBusConnection* connection() const;
+    DBusConnection *connection() const;
     Connection( DBusConnection *connection, QObject *parent );
+
   private:
     struct Private;
     Private *d;




More information about the dbus-commit mailing list