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 <kio/global.h>
00024 #include <kio/udsentry.h>
00025 #include <kio/authinfo.h>
00026 #include <kio/jobclasses.h>
00027 #include <klocale.h>
00028
00029 #include <QtCore/QByteArray>
00030 #include <QtNetwork/QHostInfo>
00031
00032 class KConfigGroup;
00033 class KRemoteEncoding;
00034 class KUrl;
00035
00036 namespace KIO {
00037
00038 class Connection;
00039 class SlaveBasePrivate;
00040
00050 class KIO_EXPORT SlaveBase
00051 {
00052 public:
00053 SlaveBase( const QByteArray &protocol, const QByteArray &pool_socket, const QByteArray &app_socket);
00054 virtual ~SlaveBase();
00055
00060 void exit();
00061
00065 void dispatchLoop();
00066
00068
00070
00079 void data( const QByteArray &data );
00080
00085 void dataReq( );
00086
00091 void opened();
00092
00121 void error( int _errid, const QString &_text );
00122
00126 void connected();
00127
00133 void finished();
00134
00138 void needSubUrlData();
00139
00146 void slaveStatus(const QString &host, bool connected);
00147
00154 void statEntry( const UDSEntry& _entry );
00155
00161 void listEntries( const UDSEntryList& _entry );
00162
00170 bool canResume( KIO::filesize_t offset );
00171
00176 void canResume();
00177
00179
00181
00187 void totalSize( KIO::filesize_t _bytes );
00193 void processedSize( KIO::filesize_t _bytes );
00194
00195 void position( KIO::filesize_t _pos );
00196
00197 void written( KIO::filesize_t _bytes );
00198
00210 void processedPercent( float percent );
00211
00217 void speed( unsigned long _bytes_per_second );
00218
00223 void redirection( const KUrl &_url );
00224
00230 void errorPage();
00231
00236 void mimeType( const QString &_type );
00237
00241 void warning( const QString &msg );
00242
00247 void infoMessage( const QString &msg );
00248
00249 enum MessageBoxType { QuestionYesNo = 1, WarningYesNo = 2, WarningContinueCancel = 3, WarningYesNoCancel = 4, Information = 5, SSLMessageBox = 6 };
00250
00264 int messageBox( MessageBoxType type, const QString &text,
00265 const QString &caption = QString(),
00266 const QString &buttonYes = i18n("&Yes"),
00267 const QString &buttonNo = i18n("&No"));
00268
00284 int messageBox( const QString &text, MessageBoxType type,
00285 const QString &caption = QString(),
00286 const QString &buttonYes = i18n("&Yes"),
00287 const QString &buttonNo = i18n("&No"),
00288 const QString &dontAskAgainName = QString() );
00289
00294 void setMetaData(const QString &key, const QString &value);
00295
00300 bool hasMetaData(const QString &key) const;
00301
00305 QString metaData(const QString &key) const;
00306
00307
00312 MetaData allMetaData() const;
00313
00321 KConfigGroup* config();
00322
00327 KRemoteEncoding* remoteEncoding();
00328
00329
00331
00332
00334
00346 virtual void setHost(const QString& host, quint16 port, const QString& user, const QString& pass);
00347
00351 virtual void setSubUrl(const KUrl&url);
00352
00362 virtual void openConnection();
00363
00372 virtual void closeConnection();
00373
00380 virtual void get( const KUrl& url );
00381
00388 virtual void open( const KUrl &url, QIODevice::OpenMode mode );
00389
00390 virtual void read( KIO::filesize_t size );
00391 virtual void write( const QByteArray &data );
00392 virtual void seek( KIO::filesize_t offset );
00393 virtual void close();
00394
00410 virtual void put( const KUrl& url, int permissions, JobFlags flags );
00411
00427 virtual void stat( const KUrl& url );
00428
00441 virtual void mimetype( const KUrl& url );
00442
00450 virtual void listDir( const KUrl& url );
00451
00459 virtual void mkdir( const KUrl&url, int permissions );
00460
00475 virtual void rename( const KUrl& src, const KUrl& dest, JobFlags flags );
00476
00484 virtual void symlink( const QString& target, const KUrl& dest, JobFlags flags );
00485
00490 virtual void chmod( const KUrl& url, int permissions );
00491
00496 virtual void chown( const KUrl& url, const QString& owner, const QString& group );
00497
00505 virtual void setModificationTime( const KUrl& url, const QDateTime& mtime );
00506
00518 virtual void copy( const KUrl &src, const KUrl &dest, int permissions, JobFlags flags );
00519
00526 virtual void del( const KUrl &url, bool isfile);
00527
00528
00529
00530
00531
00537 virtual void setLinkDest( const KUrl& url, const QString& target );
00538
00547 virtual void special( const QByteArray & data );
00548
00556 virtual void multiGet( const QByteArray & data );
00557
00562 virtual void slave_status();
00563
00568 virtual void reparseConfiguration();
00569
00570
00574 int connectTimeout();
00575
00579 int proxyConnectTimeout();
00580
00585 int responseTimeout();
00586
00591 int readTimeout();
00592
00606 void setTimeoutSpecialCommand(int timeout, const QByteArray &data=QByteArray());
00607
00609
00611
00615 virtual void dispatch( int command, const QByteArray &data );
00616
00620 virtual void dispatchOpenCommand( int command, const QByteArray &data );
00621
00630 int readData( QByteArray &buffer );
00631
00643 void listEntry( const UDSEntry& _entry, bool ready);
00644
00649 void connectSlave(const QString& path);
00650 void disconnectSlave();
00651
00700 bool openPasswordDialog( KIO::AuthInfo& info, const QString &errorMsg = QString() );
00701
00729 bool checkCachedAuthentication( AuthInfo& info );
00730
00737 bool cacheAuthentication( const AuthInfo& info );
00738
00757 bool requestNetwork(const QString& host = QString());
00758
00772 void dropNetwork(const QString& host = QString());
00773
00778 int waitForAnswer( int expected1, int expected2, QByteArray & data, int * pCmd = 0 );
00779
00792 void sendMetaData();
00793
00800 void sendAndKeepMetaData();
00801
00807 bool wasKilled() const;
00808
00812 void setKillFlag();
00813
00817 void lookupHost(const QString& host);
00818
00822 int waitForHostInfo(QHostInfo& info);
00823
00824 protected:
00828 QByteArray mProtocol;
00829
00830 MetaData mOutgoingMetaData;
00831 MetaData mIncomingMetaData;
00832
00833 virtual void virtual_hook( int id, void* data );
00834
00835 private:
00836 void send(int cmd, const QByteArray& arr = QByteArray());
00837 SlaveBasePrivate* const d;
00838 friend class SlaveBasePrivate;
00839 };
00840
00841 }
00842
00843 #endif