KDECore
k3clientsocketbase.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef KCLIENTSOCKETBASE_H
00026 #define KCLIENTSOCKETBASE_H
00027
00028 #include <QtCore/QObject>
00029 #include <QtCore/QString>
00030
00031 #include <kdecore_export.h>
00032 #include "k3socketbase.h"
00033 #include "k3resolver.h"
00034
00035 namespace KNetwork {
00036
00037 class KClientSocketBasePrivate;
00050 class KDECORE_EXPORT KClientSocketBase : public KActiveSocketBase
00051 {
00052 Q_OBJECT
00053
00054 public:
00072 enum SocketState
00073 {
00074 Idle,
00075 HostLookup,
00076 HostFound,
00077 Bound,
00078 Connecting,
00079 Open,
00080 Closing,
00081
00082 Unconnected = Bound,
00083 Connected = Open,
00084 Connection = Open
00085 };
00086
00087 public:
00093 KClientSocketBase(QObject* parent);
00094
00098 virtual ~KClientSocketBase();
00099
00104 SocketState state() const;
00105
00106 protected:
00110 virtual bool setSocketOptions(int opts);
00111
00112 public:
00121 KResolver& peerResolver() const;
00122
00126 const KResolverResults& peerResults() const;
00127
00136 KResolver& localResolver() const;
00137
00141 const KResolverResults& localResults() const;
00142
00157 void setResolutionEnabled(bool enable);
00158
00165 void setFamily(int families);
00166
00184 virtual bool lookup();
00185
00205 virtual bool bind(const QString& node = QString(),
00206 const QString& service = QString()) = 0;
00207
00216 virtual bool bind(const KResolverEntry& address);
00217
00247 virtual bool connect(const QString& node = QString(),
00248 const QString& service = QString(),
00249 OpenMode mode = ReadWrite) = 0;
00250
00255 virtual bool connect(const KResolverEntry& address,
00256 OpenMode mode = ReadWrite);
00257
00262 virtual bool disconnect();
00263
00269 virtual bool open(OpenMode mode);
00270
00277 virtual void close();
00278
00283 virtual bool flush();
00284
00289 virtual qint64 bytesAvailable() const;
00290
00294 virtual qint64 waitForMore(int msecs, bool *timeout = 0L);
00295
00299 virtual KSocketAddress localAddress() const;
00300
00304 virtual KSocketAddress peerAddress() const;
00305
00309 bool emitsReadyRead() const;
00310
00317 virtual void enableRead(bool enable);
00318
00322 bool emitsReadyWrite() const;
00323
00330 virtual void enableWrite(bool enable);
00331
00332 protected Q_SLOTS:
00333
00334
00344 virtual void slotReadActivity();
00345
00355 virtual void slotWriteActivity();
00356
00357 private Q_SLOTS:
00358 void lookupFinishedSlot();
00359
00360 Q_SIGNALS:
00369 void stateChanged(int newstate);
00370
00376 void gotError(int code);
00377
00381 void hostFound();
00382
00389 void bound(const KNetwork::KResolverEntry& local);
00390
00406 void aboutToConnect(const KNetwork::KResolverEntry& remote, bool& skip);
00407
00414 void connected(const KNetwork::KResolverEntry& remote);
00415
00420 void closed();
00421
00422 #if 0
00423
00432 void readyRead();
00433 #endif
00434
00446 void readyWrite();
00447
00448 protected:
00452 virtual qint64 readData(char *data, qint64 maxlen, KSocketAddress *from);
00453
00457 virtual qint64 peekData(char *data, qint64 maxlen, KSocketAddress *from);
00458
00463 virtual qint64 writeData(const char *data, qint64 len, const KSocketAddress* to);
00464
00469 void setState(SocketState state);
00470
00480 virtual void stateChanging(SocketState newState);
00481
00486 void copyError();
00487
00488 private:
00489 KClientSocketBase(const KClientSocketBase&);
00490 KClientSocketBase& operator=(const KClientSocketBase&);
00491
00492 KClientSocketBasePrivate* const d;
00493 };
00494
00495 }
00496
00497 #endif