summaryrefslogtreecommitdiff
path: root/x11/libqpe-x11
authorzecke <zecke>2002-10-16 18:24:48 (UTC)
committer zecke <zecke>2002-10-16 18:24:48 (UTC)
commit9047650faad7e64e0a36553dfe04dc7ad084f095 (patch) (side-by-side diff)
treeb79a65f224b329d6dcc559d8b72d564ccce4a3c8 /x11/libqpe-x11
parent1a305f211913ce4a4d73ed0b36a0be535c0e03ec (diff)
downloadopie-9047650faad7e64e0a36553dfe04dc7ad084f095.zip
opie-9047650faad7e64e0a36553dfe04dc7ad084f095.tar.gz
opie-9047650faad7e64e0a36553dfe04dc7ad084f095.tar.bz2
More IPC integtration
OCOPClient::self() added so we keep the connections low
Diffstat (limited to 'x11/libqpe-x11') (more/less context) (ignore whitespace changes)
-rw-r--r--x11/libqpe-x11/qt/qcopchannel_qws.cpp45
-rw-r--r--x11/libqpe-x11/qt/qcopchannel_qws.h4
2 files changed, 34 insertions, 15 deletions
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
@@ -5,2 +5,4 @@
+QList<QCopChannel>* QCopChannel::m_list = 0;
+
QCopChannel::QCopChannel( const QCString& channel, QObject* parent,
@@ -9,11 +11,21 @@ QCopChannel::QCopChannel( const QCString& channel, QObject* parent,
init();
+ if (!m_list ) {
+ m_list = new QList<QCopChannel>;
+ }
+ 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&) ) );
@@ -23,9 +35,8 @@ QCString QCopChannel::channel()const {
}
-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 );
}
@@ -33,8 +44,14 @@ 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 );
+ }
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
@@ -5,2 +5,3 @@
#include <qcstring.h>
+#include <qlist.h>
@@ -22,2 +23,3 @@ public:
const QByteArray& data );
+ void receive( const QCString& msg, const QByteArray& ar );
@@ -31,3 +33,3 @@ private:
void init();
- OCOPClient* m_client;
+ static QList<QCopChannel> *m_list;
/* the channel */