akonadi
session_p.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef AKONADI_SESSION_P_H
00021 #define AKONADI_SESSION_P_H
00022
00023 #include "session.h"
00024 #include "imapparser_p.h"
00025 #include "akonadiprivate_export.h"
00026
00027 #include <QtNetwork/QLocalSocket>
00028
00029 #include <QtCore/QQueue>
00030 #include <QtCore/QSettings>
00031 #include <QtCore/QThreadStorage>
00032
00033 class QLocalSocket;
00034
00035 namespace Akonadi {
00036
00040 class AKONADI_TESTS_EXPORT SessionPrivate
00041 {
00042 public:
00043 SessionPrivate( Session *parent );
00044
00045 virtual ~SessionPrivate()
00046 {
00047 delete parser;
00048 delete mConnectionSettings;
00049 }
00050
00051 virtual void init( const QByteArray &sessionId );
00052
00053 void startNext();
00054 void reconnect();
00055 void socketDisconnected();
00056 void socketError( QLocalSocket::LocalSocketError error );
00057 void dataReceived();
00058 void doStartNext();
00059 void startJob( Job* job );
00060
00064 void endJob( Job* job );
00065
00066 void jobDone( KJob* job );
00067 void jobWriteFinished( Akonadi::Job* job );
00068 void jobDestroyed( QObject *job );
00069
00070 bool canPipelineNext();
00071
00081 static void createDefaultSession( const QByteArray &sessionId );
00082
00086 virtual void addJob( Job* job );
00087
00091 int nextTag();
00092
00096 void writeData( const QByteArray &data );
00097
00098 static int minimumProtocolVersion() { return 23; }
00099
00100 Session *mParent;
00101 QByteArray sessionId;
00102 QSettings *mConnectionSettings;
00103 QLocalSocket* socket;
00104 bool connected;
00105 int theNextTag;
00106 int protocolVersion;
00107
00108
00109 QQueue<Job*> queue;
00110 QQueue<Job*> pipeline;
00111 Job* currentJob;
00112 bool jobRunning;
00113
00114
00115 ImapParser *parser;
00116 };
00117
00118 }
00119
00120 #endif