kio Library API Documentation

slave.h

00001 // -*- c++ -*-
00002 /*
00003  *  This file is part of the KDE libraries
00004  *  Copyright (c) 2000 Waldo Bastian <bastian@kde.org>
00005  *                2000 Stephan Kulow <coolo@kde.org>
00006  *
00007  *  This library is free software; you can redistribute it and/or
00008  *  modify it under the terms of the GNU Library General Public
00009  *  License version 2 as published by the Free Software Foundation.
00010  *
00011  *  This library is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  *  Library General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU Library General Public License
00017  *  along with this library; see the file COPYING.LIB.  If not, write to
00018  *  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019  *  Boston, MA 02111-1307, USA.
00020  **/
00021 
00022 #ifndef KIO_SLAVE_H
00023 #define KIO_SLAVE_H
00024 
00025 #include <time.h>
00026 #include <unistd.h>
00027 
00028 #include <qobject.h>
00029 
00030 #include <kurl.h>
00031 
00032 #include "kio/slaveinterface.h"
00033 #include "kio/connection.h"
00034 
00035 class KServerSocket;
00036 class KSocket;
00037 
00038 namespace KIO {
00039 
00040     // Attention developers: If you change the implementation of KIO::Slave,
00041     // do *not* use connection() or slaveconn but the respective KIO::Slave
00042     // accessor methods. Otherwise classes derived from Slave might break. (LS)
00043     class KIO_EXPORT Slave : public KIO::SlaveInterface
00044     {
00045     Q_OBJECT
00046 
00047     protected:
00054     Slave(bool derived, KServerSocket *unixdomain, const QString &protocol,
00055         const QString &socketname); // TODO(BIC): Remove in KDE 4
00056 
00057     public:
00058     Slave(KServerSocket *unixdomain,
00059           const QString &protocol, const QString &socketname);
00060 
00061         virtual ~Slave();
00062 
00063     void setPID(pid_t);
00064 
00065         int slave_pid() { return m_pid; }
00066 
00070     void kill();
00071 
00075         bool isAlive() { return !dead; }
00076 
00084         void setHost( const QString &host, int port,
00085                       const QString &user, const QString &passwd); // TODO(BIC): make virtual
00086 
00090         void resetHost();
00091 
00095         void setConfig(const MetaData &config); // TODO(BIC): make virtual
00096 
00102         QString protocol() { return m_protocol; }
00103 
00104         void setProtocol(const QString & protocol);
00117         QString slaveProtocol() { return m_slaveProtocol; }
00118 
00122         QString host() { return m_host; }
00123 
00127         int port() { return m_port; }
00128 
00132         QString user() { return m_user; }
00133 
00137         QString passwd() { return m_passwd; }
00138 
00147     static Slave* createSlave( const QString &protocol, const KURL& url, int& error, QString& error_text );
00148 
00149         static Slave* holdSlave( const QString &protocol, const KURL& url );
00150 
00151     // == communication with connected kioslave ==
00152     // whenever possible prefer these methods over the respective
00153     // methods in connection()
00157         void suspend();     // TODO(BIC): make virtual
00161         void resume();      // TODO(BIC): make virtual
00167         bool suspended();   // TODO(BIC): make virtual
00174         void send(int cmd, const QByteArray &arr = QByteArray());// TODO(BIC): make virtual
00175     // == end communication with connected kioslave ==
00176 
00180     void hold(const KURL &url); // TODO(BIC): make virtual
00181 
00185     time_t idleTime();
00186 
00190     void setIdle();
00191 
00192         /*
00193          * @returns Whether the slave is connected
00194          * (Connection oriented slaves only)
00195          */
00196         bool isConnected() { return contacted; }
00197         void setConnected(bool c) { contacted = c; }
00198 
00203         KDE_DEPRECATED Connection *connection() { return &slaveconn; }  // TODO(BIC): remove before KDE 4
00204 
00205         void ref() { m_refCount++; }
00206         void deref() { m_refCount--; if (!m_refCount) delete this; }
00207 
00208     public slots:
00209         void accept(KSocket *socket);
00210     void gotInput();
00211     void timeout();
00212     signals:
00213         void slaveDied(KIO::Slave *slave);
00214 
00215     protected:
00216         void unlinkSocket();
00217 
00218     private:
00219         QString m_protocol;
00220         QString m_slaveProtocol;
00221         QString m_host;
00222         int m_port;
00223         QString m_user;
00224         QString m_passwd;
00225     KServerSocket *serv;
00226     QString m_socket;
00227     pid_t m_pid;
00228     bool contacted;
00229     bool dead;
00230     time_t contact_started;
00231     time_t idle_since;
00232     KIO::Connection slaveconn;
00233     int m_refCount;
00234     protected:
00235     virtual void virtual_hook( int id, void* data );
00236     // grant SlaveInterface all IDs < 0x200
00237     enum { VIRTUAL_SUSPEND = 0x200, VIRTUAL_RESUME, VIRTUAL_SEND,
00238         VIRTUAL_HOLD, VIRTUAL_SUSPENDED,
00239         VIRTUAL_SET_HOST, VIRTUAL_SET_CONFIG };
00240     struct SendParams {
00241       int cmd;
00242       const QByteArray *arr;
00243     };
00244     struct HoldParams {
00245       const KURL *url;
00246     };
00247     struct SuspendedParams {
00248       bool retval;
00249     };
00250     struct SetHostParams {
00251       const QString *host;
00252       int port;
00253       const QString *user;
00254       const QString *passwd;
00255     };
00256     struct SetConfigParams {
00257       const MetaData *config;
00258     };
00259     private:
00260     class SlavePrivate* d;
00261     };
00262 
00263 }
00264 
00265 #endif
KDE Logo
This file is part of the documentation for kio Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Mon Jan 23 19:33:35 2006 by doxygen 1.4.3 written by Dimitri van Heesch, © 1997-2003