00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _DCOPCLIENT_H
00024 #define _DCOPCLIENT_H
00025
00026 #include <qobject.h>
00027 #include <qcstring.h>
00028 #include <qvaluelist.h>
00029 #include <qstring.h>
00030 #include <kdatastream.h>
00031 #include <kdemacros.h>
00032
00033 class DCOPObjectProxy;
00034 class DCOPClientPrivate;
00035 class DCOPClientTransaction;
00036
00037 typedef QValueList<QCString> QCStringList;
00038
00068 class DCOPClient : public QObject
00069 {
00070 Q_OBJECT
00071
00072 public:
00075 DCOPClient();
00076
00080 virtual ~DCOPClient();
00081
00089 static void setServerAddress(const QCString &addr);
00090
00109 bool attach();
00110
00117 void bindToApp();
00118
00123 bool detach();
00124
00129 bool isAttached() const;
00130
00136 bool isAttachedToForeignServer() const;
00137
00142 bool acceptCalls() const;
00143
00150 void setAcceptCalls(bool b);
00151
00158 bool qtBridgeEnabled();
00159
00167 void setQtBridgeEnabled(bool b);
00168
00194 QCString registerAs( const QCString &appId, bool addPID = true );
00195
00200 bool isRegistered() const;
00201
00207 QCString appId() const;
00208
00213 int socket() const;
00214
00227 void suspend();
00228
00234 void resume();
00235
00242 bool isSuspended() const;
00243
00254 bool send(const QCString &remApp, const QCString &remObj,
00255 const QCString &remFun, const QByteArray &data);
00256
00268 bool send(const QCString &remApp, const QCString &remObj,
00269 const QCString &remFun, const QString &data);
00270
00300 bool call(const QCString &remApp, const QCString &remObj,
00301 const QCString &remFun, const QByteArray &data,
00302 QCString& replyType, QByteArray &replyData,
00303 bool useEventLoop, int timeout);
00307
00308 bool call(const QCString &remApp, const QCString &remObj,
00309 const QCString &remFun, const QByteArray &data,
00310 QCString& replyType, QByteArray &replyData,
00311 bool useEventLoop=false);
00312
00341 int callAsync(const QCString &remApp, const QCString &remObj,
00342 const QCString &remFun, const QByteArray &data,
00343 QObject *callBackObj, const char *callBackSlot);
00344
00381 bool findObject(const QCString &remApp, const QCString &remObj,
00382 const QCString &remFun, const QByteArray &data,
00383 QCString &foundApp, QCString &foundObj,
00384 bool useEventLoop, int timeout);
00385
00389
00390 bool findObject(const QCString &remApp, const QCString &remObj,
00391 const QCString &remFun, const QByteArray &data,
00392 QCString &foundApp, QCString &foundObj,
00393 bool useEventLoop=false);
00394
00395
00400 void emitDCOPSignal( const QCString &object, const QCString &signal,
00401 const QByteArray &data);
00402
00403
00404 void emitDCOPSignal( const QCString &signal, const QByteArray &data);
00405
00426 bool connectDCOPSignal( const QCString &sender, const QCString &senderObj,
00427 const QCString &signal,
00428 const QCString &receiverObj, const QCString &slot,
00429 bool Volatile);
00430
00435 bool connectDCOPSignal( const QCString &sender, const QCString &signal,
00436 const QCString &receiverObj, const QCString &slot,
00437 bool Volatile) KDE_DEPRECATED;
00438
00456 bool disconnectDCOPSignal( const QCString &sender, const QCString &senderObj,
00457 const QCString &signal,
00458 const QCString &receiverObj, const QCString &slot);
00459
00464 bool disconnectDCOPSignal( const QCString &sender, const QCString &signal,
00465 const QCString &receiverObj, const QCString &slot) KDE_DEPRECATED;
00466
00482 virtual bool process(const QCString &fun, const QByteArray &data,
00483 QCString& replyType, QByteArray &replyData);
00484
00494 DCOPClientTransaction *beginTransaction( );
00495
00503 void endTransaction( DCOPClientTransaction *t, QCString& replyType, QByteArray &replyData);
00504
00514 Q_INT32 transactionId() const;
00515
00521 bool isApplicationRegistered( const QCString& remApp);
00522
00528 QCStringList registeredApplications();
00529
00537 QCStringList remoteObjects( const QCString& remApp, bool *ok = 0 );
00538
00548 QCStringList remoteInterfaces( const QCString& remApp, const QCString& remObj , bool *ok = 0 );
00549
00559 QCStringList remoteFunctions( const QCString& remApp, const QCString& remObj , bool *ok = 0 );
00560
00573 bool receive(const QCString &app, const QCString &obj,
00574 const QCString &fun, const QByteArray& data,
00575 QCString& replyType, QByteArray &replyData);
00576
00588 bool find(const QCString &app, const QCString &obj,
00589 const QCString &fun, const QByteArray& data,
00590 QCString& replyType, QByteArray &replyData);
00591
00609 static QCString normalizeFunctionSignature( const QCString& fun );
00610
00611
00617 QCString senderId() const;
00618
00619
00627 void setDefaultObject( const QCString& objId );
00628
00637 QCString defaultObject() const;
00638
00650 void setNotifications( bool enabled );
00651
00660 void setDaemonMode( bool daemonMode );
00661
00667 void setPriorityCall(bool);
00668
00676 static DCOPClient* mainClient();
00677
00685 static void setMainClient( DCOPClient* mainClient);
00686
00692 static DCOPClient* findLocalClient( const QCString &_appId );
00693
00697 static void emergencyClose();
00698
00704 static const char *postMortemSender();
00706 static const char *postMortemObject();
00708 static const char *postMortemFunction();
00709
00717 static QCString dcopServerFile(const QCString &hostname=0);
00718
00723 static QCString dcopServerFileOld(const QCString &hostname=0) KDE_DEPRECATED;
00724
00728 static QCString iceauthPath();
00729
00730 signals:
00739 void applicationRegistered( const QCString& appId );
00748 void applicationRemoved( const QCString& appId );
00749
00758 void attachFailed(const QString &msg);
00759
00777 void blockUserInput( bool block );
00778
00788 void callBack(int, const QCString&, const QByteArray &);
00789
00790 public slots:
00791
00792 protected slots:
00797 void processSocketData(int socknum);
00798
00799 private slots:
00800 void processPostedMessagesInternal();
00801 void asyncReplyReady();
00802 void eventLoopTimeout();
00803
00804 public:
00805 class ReplyStruct;
00806
00810 void handleAsyncReply(ReplyStruct *replyStruct);
00811
00812 private:
00813
00814 bool isLocalTransactionFinished(Q_INT32 id, QCString &replyType, QByteArray &replyData);
00815
00816 bool attachInternal( bool registerAsAnonymous = true );
00817
00818 bool callInternal(const QCString &remApp, const QCString &remObj,
00819 const QCString &remFun, const QByteArray &data,
00820 QCString& replyType, QByteArray &replyData,
00821 bool useEventLoop, int timeout, int minor_opcode);
00822
00823
00824 bool callInternal(const QCString &remApp, const QCString &remObjId,
00825 const QCString &remFun, const QByteArray &data,
00826 ReplyStruct *replyStruct,
00827 bool useEventLoop, int timeout, int minor_opcode);
00828
00829 protected:
00830 virtual void virtual_hook( int id, void* data );
00831 private:
00832 DCOPClientPrivate *d;
00833 };
00834
00835 #endif