#ifndef MAILCORE_MCNNTPASYNCSESSION_H #define MAILCORE_MCNNTPASYNCSESSION_H #include #ifdef __cplusplus namespace mailcore { class NNTPOperation; class NNTPSession; class NNTPFetchHeaderOperation; class NNTPFetchArticleOperation; class NNTPFetchAllArticlesOperation; class NNTPFetchOverviewOperation; class NNTPListNewsgroupsOperation; class NNTPFetchServerTimeOperation; class NNTPOperationQueueCallback; class NNTPConnectionLogger; class MAILCORE_EXPORT NNTPAsyncSession : public Object { public: NNTPAsyncSession(); virtual ~NNTPAsyncSession(); virtual void setHostname(String * hostname); virtual String * hostname(); virtual void setPort(unsigned int port); virtual unsigned int port(); virtual void setUsername(String * login); virtual String * username(); virtual void setPassword(String * password); virtual String * password(); virtual void setConnectionType(ConnectionType connectionType); virtual ConnectionType connectionType(); virtual void setTimeout(time_t timeout); virtual time_t timeout(); virtual void setCheckCertificateEnabled(bool enabled); virtual bool isCheckCertificateEnabled(); virtual void setConnectionLogger(ConnectionLogger * logger); virtual ConnectionLogger * connectionLogger(); #ifdef __APPLE__ virtual void setDispatchQueue(dispatch_queue_t dispatchQueue); virtual dispatch_queue_t dispatchQueue(); #endif virtual NNTPFetchAllArticlesOperation * fetchAllArticlesOperation(String * group); virtual NNTPFetchHeaderOperation * fetchHeaderOperation(String * groupName, unsigned int index); virtual NNTPFetchArticleOperation * fetchArticleOperation(String *groupName, unsigned int index); virtual NNTPFetchArticleOperation * fetchArticleByMessageIDOperation(String * groupname, String * messageID); virtual NNTPFetchOverviewOperation * fetchOverviewOperationWithIndexes(String * groupName, IndexSet * indexes); virtual NNTPFetchServerTimeOperation * fetchServerDateOperation(); virtual NNTPListNewsgroupsOperation * listAllNewsgroupsOperation(); virtual NNTPListNewsgroupsOperation * listDefaultNewsgroupsOperation(); virtual NNTPOperation * disconnectOperation(); virtual NNTPOperation * checkAccountOperation(); private: NNTPSession * mSession; OperationQueue * mQueue; NNTPOperationQueueCallback * mQueueCallback; ConnectionLogger * mConnectionLogger; pthread_mutex_t mConnectionLoggerLock; NNTPConnectionLogger * mInternalLogger; public: // private virtual void runOperation(NNTPOperation * operation); virtual NNTPSession * session(); virtual void logConnection(ConnectionLogType logType, Data * buffer); }; } #endif #endif