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 <kdelibs_export.h>
00032
00033 class DCOPObjectProxy;
00034 class DCOPClientPrivate;
00035 class DCOPClientTransaction;
00036
00037 typedef QValueList<QCString> QCStringList;
00038
00068 class DCOP_EXPORT 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
00724 static QCString dcopServerFileOld(const QCString &hostname=0) KDE_DEPRECATED;
00725
00729 static QCString iceauthPath();
00730
00731 signals:
00740 void applicationRegistered( const QCString& appId );
00749 void applicationRemoved( const QCString& appId );
00750
00759 void attachFailed(const QString &msg);
00760
00778 void blockUserInput( bool block );
00779
00789 void callBack(int, const QCString&, const QByteArray &);
00790
00791 public slots:
00792
00793 protected slots:
00798 void processSocketData(int socknum);
00799
00800 private slots:
00801 void processPostedMessagesInternal();
00802 void asyncReplyReady();
00803 void eventLoopTimeout();
00804
00805 public:
00806 class ReplyStruct;
00807
00811 void handleAsyncReply(ReplyStruct *replyStruct);
00812
00813 private:
00814
00815 bool isLocalTransactionFinished(Q_INT32 id, QCString &replyType, QByteArray &replyData);
00816
00817 bool attachInternal( bool registerAsAnonymous = true );
00818
00819 bool callInternal(const QCString &remApp, const QCString &remObj,
00820 const QCString &remFun, const QByteArray &data,
00821 QCString& replyType, QByteArray &replyData,
00822 bool useEventLoop, int timeout, int minor_opcode);
00823
00824
00825 bool callInternal(const QCString &remApp, const QCString &remObjId,
00826 const QCString &remFun, const QByteArray &data,
00827 ReplyStruct *replyStruct,
00828 bool useEventLoop, int timeout, int minor_opcode);
00829
00830 protected:
00831 virtual void virtual_hook( int id, void* data );
00832 private:
00833 DCOPClientPrivate *d;
00834 };
00835
00836 #endif