summaryrefslogtreecommitdiff
path: root/x11/libqpe-x11/qt/qcopchannel_qws.cpp
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/qt/qcopchannel_qws.cpp
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/qt/qcopchannel_qws.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--x11/libqpe-x11/qt/qcopchannel_qws.cpp45
1 files changed, 31 insertions, 14 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
@@ -3,40 +3,57 @@
#include <qcopchannel_qws.h>
+QList<QCopChannel>* 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<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&) ) );
}
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;
}