KIO
slavebase.h
Go to the documentation of this file.
00001 /* 00002 Copyright (C) 2000 David Faure <faure@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00017 Boston, MA 02110-1301, USA. 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> // for KIO::JobFlags 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 // Message Signals to send to the job 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 // Info Signals to send to the job 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 // Commands sent by the job, the slave has to 00332 // override what it wants to implement 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 00393 virtual void get( const KUrl& url ); 00394 00401 virtual void open( const KUrl &url, QIODevice::OpenMode mode ); 00402 00403 virtual void read( KIO::filesize_t size ); 00404 virtual void write( const QByteArray &data ); 00405 virtual void seek( KIO::filesize_t offset ); 00406 virtual void close(); 00407 00423 virtual void put( const KUrl& url, int permissions, JobFlags flags ); 00424 00440 virtual void stat( const KUrl& url ); 00441 00454 virtual void mimetype( const KUrl& url ); 00455 00463 virtual void listDir( const KUrl& url ); 00464 00472 virtual void mkdir( const KUrl&url, int permissions ); 00473 00500 virtual void rename( const KUrl& src, const KUrl& dest, JobFlags flags ); 00501 00509 virtual void symlink( const QString& target, const KUrl& dest, JobFlags flags ); 00510 00515 virtual void chmod( const KUrl& url, int permissions ); 00516 00521 virtual void chown( const KUrl& url, const QString& owner, const QString& group ); 00522 00530 virtual void setModificationTime( const KUrl& url, const QDateTime& mtime ); 00531 00556 virtual void copy( const KUrl &src, const KUrl &dest, int permissions, JobFlags flags ); 00557 00568 virtual void del( const KUrl &url, bool isfile); 00569 00575 virtual void setLinkDest( const KUrl& url, const QString& target ); 00576 00585 virtual void special( const QByteArray & data ); 00586 00594 virtual void multiGet( const QByteArray & data ); 00595 00600 virtual void slave_status(); 00601 00606 virtual void reparseConfiguration(); 00607 00608 00612 int connectTimeout(); 00613 00617 int proxyConnectTimeout(); 00618 00623 int responseTimeout(); 00624 00629 int readTimeout(); 00630 00644 void setTimeoutSpecialCommand(int timeout, const QByteArray &data=QByteArray()); 00645 00647 // Dispatching (internal) 00649 00653 virtual void dispatch( int command, const QByteArray &data ); 00654 00658 virtual void dispatchOpenCommand( int command, const QByteArray &data ); 00659 00668 int readData( QByteArray &buffer ); 00669 00681 void listEntry( const UDSEntry& _entry, bool ready); 00682 00687 void connectSlave(const QString& path); 00688 void disconnectSlave(); 00689 00738 bool openPasswordDialog( KIO::AuthInfo& info, const QString &errorMsg = QString() ); 00739 00767 bool checkCachedAuthentication( AuthInfo& info ); 00768 00775 bool cacheAuthentication( const AuthInfo& info ); 00776 00795 bool requestNetwork(const QString& host = QString()); 00796 00810 void dropNetwork(const QString& host = QString()); 00811 00816 int waitForAnswer( int expected1, int expected2, QByteArray & data, int * pCmd = 0 ); 00817 00830 void sendMetaData(); 00831 00838 void sendAndKeepMetaData(); 00839 00845 bool wasKilled() const; 00846 00850 void setKillFlag(); 00851 00855 void lookupHost(const QString& host); 00856 00860 int waitForHostInfo(QHostInfo& info); 00861 00862 protected: 00866 QByteArray mProtocol; 00867 //Often used by TcpSlaveBase and unlikely to change 00868 MetaData mOutgoingMetaData; 00869 MetaData mIncomingMetaData; 00870 00871 enum VirtualFunctionId { 00872 AppConnectionMade = 0 00873 }; 00874 virtual void virtual_hook( int id, void* data ); 00875 00876 private: 00877 #if 0 // TODO KDE5: enable 00878 // This helps catching missing tr() calls in error(). 00879 void error( int _errid, const QByteArray &_text ); 00880 #endif 00881 void send(int cmd, const QByteArray& arr = QByteArray()); 00882 SlaveBasePrivate* const d; 00883 friend class SlaveBasePrivate; 00884 }; 00885 00886 } 00887 00888 #endif
KDE 4.6 API Reference