slavebase.h
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #ifndef __slavebase_h
00021 #define __slavebase_h
00022 
00023 #include <kurl.h>
00024 #include <kconfigbase.h>
00025 #include <kio/global.h>
00026 #include <kio/authinfo.h>
00027 
00028 class DCOPClient;
00029 
00030 namespace KIO {
00031 
00032 class Connection;
00033 class SlaveBasePrivate;
00034 
00044 class SlaveBase
00045 {
00046 public:
00047     SlaveBase( const QCString &protocol, const QCString &pool_socket, const QCString &app_socket);
00048     virtual ~SlaveBase();
00049 
00054     void exit();
00055 
00059     void dispatchLoop();
00060 
00064     void setConnection( Connection* connection ) { m_pConnection = connection; }
00068     Connection *connection() const { return m_pConnection; }
00069 
00070 
00072     
00074 
00083     void data( const QByteArray &data );
00084 
00089     void dataReq( );
00090 
00108     void error( int _errid, const QString &_text );
00109 
00113     void connected();
00114 
00119     void finished();
00120 
00124     void needSubURLData();
00125 
00132     void slaveStatus(const QString &host, bool connected);
00133 
00140     void statEntry( const UDSEntry& _entry );
00141 
00146     void listEntries( const UDSEntryList& _entry );
00147 
00155     bool canResume( KIO::filesize_t offset );
00156 
00157     
00158 
00159 
00160 
00161     void canResume();
00162 
00164     
00166 
00172     void totalSize( KIO::filesize_t _bytes );
00178     void processedSize( KIO::filesize_t _bytes );
00179 
00191     void processedPercent( float percent );
00192 
00198     void speed( unsigned long _bytes_per_second );
00199 
00204     void redirection( const KURL &_url );
00205 
00211     void errorPage();
00212 
00217     void mimeType( const QString &_type );
00218 
00222     void warning( const QString &msg );
00223 
00228     void infoMessage( const QString &msg );
00229 
00230     enum MessageBoxType { QuestionYesNo = 1, WarningYesNo = 2, WarningContinueCancel = 3, WarningYesNoCancel = 4, Information = 5, SSLMessageBox = 6 };
00231 
00247     int messageBox( MessageBoxType type, const QString &text,
00248                     const QString &caption = QString::null,
00249                     const QString &buttonYes = QString::null,
00250                     const QString &buttonNo = QString::null );
00251 
00256     void setMetaData(const QString &key, const QString &value);
00257 
00263     bool hasMetaData(const QString &key) const;
00264 
00269     QString metaData(const QString &key) const;
00270 
00276     bool hasMetaData(const QString &key);
00277 
00282     QString metaData(const QString &key);
00283 
00291     KConfigBase* config();
00292 
00294     
00295     
00297 
00309     virtual void setHost(const QString& host, int port, const QString& user, const QString& pass);
00310 
00314     virtual void setSubURL(const KURL&url);
00315 
00325     virtual void openConnection();
00326 
00335     virtual void closeConnection();
00336 
00343     virtual void get( const KURL& url );
00344 
00354     virtual void put( const KURL& url, int permissions, bool overwrite, bool resume );
00355 
00361     virtual void stat( const KURL& url );
00362 
00375     virtual void mimetype( const KURL& url );
00376 
00384     virtual void listDir( const KURL& url );
00385 
00393     virtual void mkdir( const KURL&url, int permissions );
00394 
00403     virtual void rename( const KURL& src, const KURL& dest, bool overwrite );
00404 
00412     virtual void symlink( const QString& target, const KURL& dest, bool overwrite );
00413 
00418     virtual void chmod( const KURL& url, int permissions );
00419 
00430     virtual void copy( const KURL &src, const KURL &dest, int permissions, bool overwrite );
00431 
00438     virtual void del( const KURL &url, bool isfile);
00439 
00448     virtual void special( const QByteArray & data );
00449 
00457     virtual void multiGet( const QByteArray & data );
00458 
00463     virtual void slave_status();
00464 
00469     virtual void reparseConfiguration();
00470 
00471 
00475     int connectTimeout();
00476 
00480     int proxyConnectTimeout();
00481 
00486     int responseTimeout();
00487 
00492     int readTimeout();
00493 
00508     void setTimeoutSpecialCommand(int timeout, const QByteArray &data=QByteArray());
00509 
00513     static void sigsegv_handler(int);
00517     static void sigpipe_handler(int);
00518 
00520     
00522 
00526     virtual bool dispatch();
00530     virtual void dispatch( int command, const QByteArray &data );
00531 
00540     int readData( QByteArray &buffer );
00541 
00552     void listEntry( const UDSEntry& _entry, bool ready);
00553 
00558     void connectSlave(const QString& path);
00559     void disconnectSlave();
00560 
00605     bool openPassDlg( KIO::AuthInfo& info, const QString &errorMsg );
00606 
00611     bool openPassDlg( KIO::AuthInfo& info );
00612 
00640     bool checkCachedAuthentication( AuthInfo& info );
00641 
00648     bool cacheAuthentication( const AuthInfo& info );
00649 
00654     bool pingCacheDaemon() const;
00655 
00662     QString createAuthCacheKey( const KURL& url );
00663 
00671     void sendAuthenticationKey( const QCString& gKey, const QCString& key, bool keep );
00672 
00681     void delCachedAuthentication( const QString& key );
00682 
00687     void setMultipleAuthCaching( bool ) {};
00688 
00693     bool multipleAuthCaching() const { return false; }
00694 
00713     bool requestNetwork(const QString& host = QString::null);
00714 
00728     void dropNetwork(const QString& host = QString::null);
00729 
00734     DCOPClient *dcopClient();
00735 
00740     int waitForAnswer( int expected1, int expected2, QByteArray & data, int * pCmd = 0 );
00741 
00745     void sendMetaData();
00746 
00750     QCString mProtocol;
00751 
00752     Connection * m_pConnection;
00753 
00754     MetaData mOutgoingMetaData;
00755     MetaData mIncomingMetaData;
00756 
00763     bool wasKilled() const;
00764 
00769     void setKillFlag();
00770 
00771 protected:
00772     UDSEntryList pendingListEntries;
00773     uint listEntryCurrentSize;
00774     long listEntry_sec, listEntry_usec;
00775     Connection *appconn;
00776     QString mPoolSocket;
00777     QString mAppSocket;
00778     bool mConnectedToApp;
00779     static long s_seqNr;
00780     virtual void virtual_hook( int id, void* data );
00781 
00782 private:
00783     SlaveBasePrivate *d;
00784 };
00785 
00786 }
00787 
00788 #endif
 
This file is part of the documentation for kio Library Version 3.2.0.