From 9047650faad7e64e0a36553dfe04dc7ad084f095 Mon Sep 17 00:00:00 2001 From: zecke Date: Wed, 16 Oct 2002 18:24:48 +0000 Subject: More IPC integtration OCOPClient::self() added so we keep the connections low --- (limited to 'x11/libqpe-x11') diff --git a/x11/libqpe-x11/qt/qcopchannel_qws.cpp b/x11/libqpe-x11/qt/qcopchannel_qws.cpp index c315d66..e90f056 100644 --- a/x11/libqpe-x11/qt/qcopchannel_qws.cpp +++ b/x11/libqpe-x11/qt/qcopchannel_qws.cpp @@ -3,40 +3,57 @@ #include +QList* QCopChannel::m_list = 0; + QCopChannel::QCopChannel( const QCString& channel, QObject* parent, const char* name ) : QObject( parent, name ),m_chan(channel) { init(); + if (!m_list ) { + m_list = new QList; + } + m_list->append(this); +} +void QCopChannel::receive( const QCString& msg, const QByteArray& ar ) { + emit received( msg, ar ); } QCopChannel::~QCopChannel() { - m_client->delChannel( m_chan ); - delete m_client; + m_list->remove(this); + if (m_list->count() == 0 ) { + delete m_list; + m_list = 0; + } + OCOPClient::self()->delChannel( m_chan ); } void QCopChannel::init() { - m_client = new OCOPClient(QString::null, this ); - m_client->addChannel(m_chan ); - connect(m_client, SIGNAL(called(const QCString&, const QCString&, const QByteArray& ) ), + OCOPClient::self()->addChannel( m_chan ); + connect(OCOPClient::self(), SIGNAL(called(const QCString&, const QCString&, const QByteArray& ) ), this, SLOT(rev(const QCString&, const QCString&, const QByteArray&) ) ); } QCString QCopChannel::channel()const { return m_chan; } -bool QCopChannel::isRegistered( const QCString& chan) { - OCOPClient client; - return client.isRegistered( chan ); +bool QCopChannel::isRegistered( const QCString& chan) {; + return OCOPClient::self()->isRegistered( chan ); } bool QCopChannel::send( const QCString& chan, const QCString& msg ) { - QByteArray ar(0); - return sendLocally(chan, msg, ar ); + QByteArray ar; + return send(chan, msg, ar ); } bool QCopChannel::send( const QCString& chan, const QCString& msg, const QByteArray& ar ) { - return sendLocally( chan, msg, ar ); + OCOPClient::self()->send( chan, msg, ar ); + return true; } -bool QCopChannel::sendLocally( const QCString& chan, const QCString& msg, +bool QCopChannel::sendLocally( const QCString& chann, const QCString& msg, const QByteArray& ar ) { - OCOPClient client; - client.send( chan, msg, ar ); + if (!m_list ) + return true; + QCopChannel* chan; + for ( chan = m_list->first(); chan; chan = m_list->next() ) { + if ( chan->channel() == chann ) + chan->receive( msg, ar ); + } return true; } diff --git a/x11/libqpe-x11/qt/qcopchannel_qws.h b/x11/libqpe-x11/qt/qcopchannel_qws.h index b0a6ce0..94b199e 100644 --- a/x11/libqpe-x11/qt/qcopchannel_qws.h +++ b/x11/libqpe-x11/qt/qcopchannel_qws.h @@ -3,6 +3,7 @@ #include #include +#include class OCOPClient; class QCopChannel : public QObject { @@ -20,6 +21,7 @@ public: const QByteArray& ); static bool sendLocally( const QCString& chan, const QCString& msg, const QByteArray& data ); + void receive( const QCString& msg, const QByteArray& ar ); signals: void received( const QCString& msg, const QByteArray& ); @@ -29,7 +31,7 @@ private slots: private: void init(); - OCOPClient* m_client; + static QList *m_list; /* the channel */ QCString m_chan; class Private; -- cgit v0.9.0.2