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