KIMAP Library
sessionthread_p.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KIMAP_SESSIONTHREAD_P_H
00021 #define KIMAP_SESSIONTHREAD_P_H
00022
00023 #include <QtCore/QMutex>
00024 #include <QtCore/QQueue>
00025 #include <QtCore/QThread>
00026
00027 #include <ktcpsocket.h>
00028
00029 typedef KTcpSocket SessionSocket;
00030
00031 namespace KIMAP {
00032
00033 class ImapStreamParser;
00034 struct Message;
00035 class Session;
00036
00037 class SessionThread : public QThread
00038 {
00039 Q_OBJECT
00040
00041 public:
00042 explicit SessionThread( const QString &hostName, quint16 port, Session *parent );
00043 ~SessionThread();
00044
00045 inline QString hostName() { return m_hostName; }
00046 inline quint16 port() { return m_port; }
00047
00048 void sendData( const QByteArray &payload );
00049 void run();
00050
00051 public slots:
00052 void closeSocket();
00053 void reconnect();
00054 void startSsl(const KTcpSocket::SslVersion &version);
00055
00056 signals:
00057 void responseReceived(const KIMAP::Message &response);
00058 void encryptionNegotiationResult(bool);
00059 void sslError(const KSslErrorUiData&);
00060
00061 private slots:
00062 void readMessage();
00063 void writeDataQueue();
00064 void sslConnected();
00065 void sslErrorHandlerResponse(bool result);
00066
00067 private:
00068 QString m_hostName;
00069 quint16 m_port;
00070
00071 Session *m_session;
00072 SessionSocket *m_socket;
00073 ImapStreamParser *m_stream;
00074
00075 QQueue<QByteArray> m_dataQueue;
00076
00077 QMutex m_mutex;
00078
00079 bool m_encryptedMode;
00080 };
00081
00082 }
00083
00084 #endif