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
class KRemoteEncoding;
00030
00031
namespace KIO {
00032
00033
class Connection;
00034
class SlaveBasePrivate;
00035
00045 class KIO_EXPORT SlaveBase
00046 {
00047
public:
00048 SlaveBase(
const QCString &protocol,
const QCString &pool_socket,
const QCString &app_socket);
00049
virtual ~SlaveBase();
00050
00055
void exit();
00056
00060
void dispatchLoop();
00061
00065
void setConnection(
Connection* connection ) { m_pConnection = connection; }
00069
Connection *connection()
const {
return m_pConnection; }
00070
00071
00073
00075
00084
void data(
const QByteArray &data );
00085
00090
void dataReq( );
00091
00109
void error(
int _errid,
const QString &_text );
00110
00114
void connected();
00115
00120
void finished();
00121
00125
void needSubURLData();
00126
00133
void slaveStatus(
const QString &host,
bool connected);
00134
00141
void statEntry(
const UDSEntry& _entry );
00142
00147
void listEntries(
const UDSEntryList& _entry );
00148
00156
bool canResume( KIO::filesize_t offset );
00157
00158
00159
00160
00161
00162
void canResume();
00163
00165
00167
00173
void totalSize( KIO::filesize_t _bytes );
00179
void processedSize( KIO::filesize_t _bytes );
00180
00192
void processedPercent(
float percent );
00193
00199
void speed(
unsigned long _bytes_per_second );
00200
00205
void redirection(
const KURL &_url );
00206
00212
void errorPage();
00213
00218
void mimeType(
const QString &_type );
00219
00223
void warning(
const QString &msg );
00224
00229
void infoMessage(
const QString &msg );
00230
00231
enum MessageBoxType { QuestionYesNo = 1, WarningYesNo = 2, WarningContinueCancel = 3, WarningYesNoCancel = 4, Information = 5, SSLMessageBox = 6 };
00232
00246
int messageBox( MessageBoxType type,
const QString &text,
00247
const QString &caption = QString::null,
00248
const QString &buttonYes = QString::null,
00249
const QString &buttonNo = QString::null );
00250
00267
int messageBox(
const QString &text, MessageBoxType type,
00268
const QString &caption = QString::null,
00269
const QString &buttonYes = QString::null,
00270
const QString &buttonNo = QString::null,
00271
const QString &dontAskAgainName = QString::null );
00272
00277
void setMetaData(
const QString &key,
const QString &value);
00278
00284
bool hasMetaData(
const QString &key)
const;
00285
00290
QString metaData(
const QString &key)
const;
00291
00297
bool hasMetaData(
const QString &key);
00298
00303
QString metaData(
const QString &key);
00304
00312
KConfigBase* config();
00313
00320
KRemoteEncoding* remoteEncoding();
00321
00322
00324
00325
00327
00339
virtual void setHost(
const QString& host,
int port,
const QString& user,
const QString& pass);
00340
00344
virtual void setSubURL(
const KURL&url);
00345
00355
virtual void openConnection();
00356
00365
virtual void closeConnection();
00366
00373
virtual void get(
const KURL& url );
00374
00384
virtual void put(
const KURL& url,
int permissions,
bool overwrite,
bool resume );
00385
00391
virtual void stat(
const KURL& url );
00392
00405
virtual void mimetype(
const KURL& url );
00406
00414
virtual void listDir(
const KURL& url );
00415
00423
virtual void mkdir(
const KURL&url,
int permissions );
00424
00433
virtual void rename(
const KURL& src,
const KURL& dest,
bool overwrite );
00434
00442
virtual void symlink(
const QString& target,
const KURL& dest,
bool overwrite );
00443
00448
virtual void chmod(
const KURL& url,
int permissions );
00449
00460
virtual void copy(
const KURL &src,
const KURL &dest,
int permissions,
bool overwrite );
00461
00468
virtual void del(
const KURL &url,
bool isfile);
00469
00470
00471
00472
00481
virtual void special(
const QByteArray & data );
00482
00490
virtual void multiGet(
const QByteArray & data );
00491
00496
virtual void slave_status();
00497
00502
virtual void reparseConfiguration();
00503
00504
00508
int connectTimeout();
00509
00513
int proxyConnectTimeout();
00514
00519
int responseTimeout();
00520
00525
int readTimeout();
00526
00541
void setTimeoutSpecialCommand(
int timeout,
const QByteArray &data=
QByteArray());
00542
00546
static void sigsegv_handler(
int);
00550
static void sigpipe_handler(
int);
00551
00553
00555
00559
virtual bool dispatch();
00563
virtual void dispatch(
int command,
const QByteArray &data );
00564
00573
int readData(
QByteArray &buffer );
00574
00585
void listEntry(
const UDSEntry& _entry,
bool ready);
00586
00591
void connectSlave(
const QString& path);
00592
void disconnectSlave();
00593
00643
bool openPassDlg(
KIO::AuthInfo& info,
const QString &errorMsg );
00644
00649
bool openPassDlg(
KIO::AuthInfo& info );
00650
00678
bool checkCachedAuthentication(
AuthInfo& info );
00679
00686
bool cacheAuthentication(
const AuthInfo& info );
00687
00692
bool pingCacheDaemon()
const;
00693
00700
QString createAuthCacheKey(
const KURL& url );
00701
00709
void sendAuthenticationKey(
const QCString& gKey,
const QCString& key,
bool keep );
00710
00719
void delCachedAuthentication(
const QString& key );
00720
00725 void setMultipleAuthCaching(
bool ) {};
00726
00731 bool multipleAuthCaching()
const {
return false; }
00732
00751
bool requestNetwork(
const QString& host = QString::null);
00752
00766
void dropNetwork(
const QString& host = QString::null);
00767
00772
DCOPClient *dcopClient();
00773
00778
int waitForAnswer(
int expected1,
int expected2,
QByteArray & data,
int * pCmd = 0 );
00779
00783
void sendMetaData();
00784
00788 QCString mProtocol;
00789
00790
Connection * m_pConnection;
00791
00792
MetaData mOutgoingMetaData;
00793
MetaData mIncomingMetaData;
00794
00801
bool wasKilled() const;
00802
00807
void setKillFlag();
00808
00809 protected:
00810
UDSEntryList pendingListEntries;
00811 uint listEntryCurrentSize;
00812
long listEntry_sec, listEntry_usec;
00813
Connection *appconn;
00814
QString mPoolSocket;
00815
QString mAppSocket;
00816
bool mConnectedToApp;
00817 static
long s_seqNr;
00818 virtual
void virtual_hook(
int id,
void* data );
00819
00820 private:
00821 SlaveBasePrivate *d;
00822 };
00823
00824 }
00825
00826 #endif