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
00031 class KConfigGroup;
00032 class KRemoteEncoding;
00033 class KUrl;
00034
00035 namespace KIO {
00036
00037 class Connection;
00038 class SlaveBasePrivate;
00039
00049 class KIO_EXPORT SlaveBase
00050 {
00051 public:
00052 SlaveBase( const QByteArray &protocol, const QByteArray &pool_socket, const QByteArray &app_socket);
00053 virtual ~SlaveBase();
00054
00059 void exit();
00060
00064 void dispatchLoop();
00065
00067
00069
00078 void data( const QByteArray &data );
00079
00084 void dataReq( );
00085
00090 void opened();
00091
00110 void error( int _errid, const QString &_text );
00111
00115 void connected();
00116
00122 void finished();
00123
00127 void needSubUrlData();
00128
00135 void slaveStatus(const QString &host, bool connected);
00136
00143 void statEntry( const UDSEntry& _entry );
00144
00150 void listEntries( const UDSEntryList& _entry );
00151
00159 bool canResume( KIO::filesize_t offset );
00160
00165 void canResume();
00166
00168
00170
00176 void totalSize( KIO::filesize_t _bytes );
00182 void processedSize( KIO::filesize_t _bytes );
00183
00184 void position( KIO::filesize_t _pos );
00185
00186 void written( KIO::filesize_t _bytes );
00187
00199 void processedPercent( float percent );
00200
00206 void speed( unsigned long _bytes_per_second );
00207
00212 void redirection( const KUrl &_url );
00213
00219 void errorPage();
00220
00225 void mimeType( const QString &_type );
00226
00230 void warning( const QString &msg );
00231
00236 void infoMessage( const QString &msg );
00237
00238 enum MessageBoxType { QuestionYesNo = 1, WarningYesNo = 2, WarningContinueCancel = 3, WarningYesNoCancel = 4, Information = 5, SSLMessageBox = 6 };
00239
00253 int messageBox( MessageBoxType type, const QString &text,
00254 const QString &caption = QString(),
00255 const QString &buttonYes = i18n("&Yes"),
00256 const QString &buttonNo = i18n("&No"));
00257
00273 int messageBox( const QString &text, MessageBoxType type,
00274 const QString &caption = QString(),
00275 const QString &buttonYes = i18n("&Yes"),
00276 const QString &buttonNo = i18n("&No"),
00277 const QString &dontAskAgainName = QString() );
00278
00283 void setMetaData(const QString &key, const QString &value);
00284
00289 bool hasMetaData(const QString &key) const;
00290
00294 QString metaData(const QString &key) const;
00295
00296
00301 MetaData allMetaData() const;
00302
00310 KConfigGroup* config();
00311
00316 KRemoteEncoding* remoteEncoding();
00317
00318
00320
00321
00323
00335 virtual void setHost(const QString& host, quint16 port, const QString& user, const QString& pass);
00336
00340 virtual void setSubUrl(const KUrl&url);
00341
00351 virtual void openConnection();
00352
00361 virtual void closeConnection();
00362
00369 virtual void get( const KUrl& url );
00370
00377 virtual void open( const KUrl &url, QIODevice::OpenMode mode );
00378
00379 virtual void read( KIO::filesize_t size );
00380 virtual void write( const QByteArray &data );
00381 virtual void seek( KIO::filesize_t offset );
00382 virtual void close();
00383
00399 virtual void put( const KUrl& url, int permissions, JobFlags flags );
00400
00406 virtual void stat( const KUrl& url );
00407
00420 virtual void mimetype( const KUrl& url );
00421
00429 virtual void listDir( const KUrl& url );
00430
00438 virtual void mkdir( const KUrl&url, int permissions );
00439
00454 virtual void rename( const KUrl& src, const KUrl& dest, JobFlags flags );
00455
00463 virtual void symlink( const QString& target, const KUrl& dest, JobFlags flags );
00464
00469 virtual void chmod( const KUrl& url, int permissions );
00470
00475 virtual void chown( const KUrl& url, const QString& owner, const QString& group );
00476
00484 virtual void setModificationTime( const KUrl& url, const QDateTime& mtime );
00485
00497 virtual void copy( const KUrl &src, const KUrl &dest, int permissions, JobFlags flags );
00498
00505 virtual void del( const KUrl &url, bool isfile);
00506
00507
00508
00509
00510
00516 virtual void setLinkDest( const KUrl& url, const QString& target );
00517
00526 virtual void special( const QByteArray & data );
00527
00535 virtual void multiGet( const QByteArray & data );
00536
00541 virtual void slave_status();
00542
00547 virtual void reparseConfiguration();
00548
00549
00553 int connectTimeout();
00554
00558 int proxyConnectTimeout();
00559
00564 int responseTimeout();
00565
00570 int readTimeout();
00571
00585 void setTimeoutSpecialCommand(int timeout, const QByteArray &data=QByteArray());
00586
00588
00590
00594 virtual void dispatch( int command, const QByteArray &data );
00595
00599 virtual void dispatchOpenCommand( int command, const QByteArray &data );
00600
00609 int readData( QByteArray &buffer );
00610
00622 void listEntry( const UDSEntry& _entry, bool ready);
00623
00628 void connectSlave(const QString& path);
00629 void disconnectSlave();
00630
00679 bool openPasswordDialog( KIO::AuthInfo& info, const QString &errorMsg = QString() );
00680
00708 bool checkCachedAuthentication( AuthInfo& info );
00709
00716 bool cacheAuthentication( const AuthInfo& info );
00717
00736 bool requestNetwork(const QString& host = QString());
00737
00751 void dropNetwork(const QString& host = QString());
00752
00757 int waitForAnswer( int expected1, int expected2, QByteArray & data, int * pCmd = 0 );
00758
00771 void sendMetaData();
00772
00779 void sendAndKeepMetaData();
00780
00786 bool wasKilled() const;
00787
00791 void setKillFlag();
00792
00793 protected:
00797 QByteArray mProtocol;
00798
00799 MetaData mOutgoingMetaData;
00800 MetaData mIncomingMetaData;
00801
00802 virtual void virtual_hook( int id, void* data );
00803
00804 private:
00805 void send(int cmd, const QByteArray& arr = QByteArray());
00806 SlaveBasePrivate* const d;
00807 friend class SlaveBasePrivate;
00808 };
00809
00810 }
00811
00812 #endif