-rw-r--r-- | x11/ipc/client/ocopclient.cpp | 9 | ||||
-rw-r--r-- | x11/ipc/client/ocopclient.h | 7 |
2 files changed, 15 insertions, 1 deletions
diff --git a/x11/ipc/client/ocopclient.cpp b/x11/ipc/client/ocopclient.cpp index c1def73..6085481 100644 --- a/x11/ipc/client/ocopclient.cpp +++ b/x11/ipc/client/ocopclient.cpp @@ -1,32 +1,41 @@ #include <errno.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/un.h> #include <qfile.h> #include <qtimer.h> #include "../common/ocoppacket.h" #include "ocopclient.h" +OCOPClient* OCOPClient::m_self = 0; + +OCOPClient* OCOPClient::self() { + if (!m_self ) { + m_self = new OCOPClient(); + } + return m_self; +} + OCOPClient::OCOPClient( const QString& path, QObject* obj ) : QObject( obj ) { m_tries = 0; init(QFile::encodeName(path) ); } OCOPClient::~OCOPClient() { delete m_notify; close( m_socket ); } void OCOPClient::init() { // failed start ther server NOW!!! startUP(); QCString str; init(str ); } diff --git a/x11/ipc/client/ocopclient.h b/x11/ipc/client/ocopclient.h index 53018a5..ee2015a 100644 --- a/x11/ipc/client/ocopclient.h +++ b/x11/ipc/client/ocopclient.h @@ -7,33 +7,37 @@ #include <qmap.h> #include <qsignal.h> #include <qstring.h> #include <qsocketnotifier.h> /** * This is the OCOP client * It currently only supports * asking if a Channel is registered, * calling and receiving calls */ class OCOPPacket; class OCOPClient : public QObject{ Q_OBJECT public: - + /* + * this is the static + * OCopClient + */ + static OCOPClient* self(); /** * Occasionally I decide to start a Server from here */ OCOPClient(const QString& pathToServer = QString::null, QObject* obj = 0l); ~OCOPClient(); bool isRegistered( const QCString& )const; void send( const QCString& chan, const QCString&, const QByteArray& msg ); /** * add a channel and does connect to a signal * callback is the object * slot is the SLOT() */ void addChannel( const QCString& channel ); void delChannel( const QCString& channel ); @@ -43,19 +47,20 @@ public: /* no direct signals due the design */ signals: void called(const QCString&, const QCString&, const QByteArray& ); private slots: void init(); void init(const QCString& pa); void newData(); private: void startUP(); OCOPPacket packet()const; void call( const OCOPPacket& ); QSocketNotifier* m_notify; int m_socket; int m_tries; + static OCOPClient* m_self; }; #endif |