diff options
Diffstat (limited to 'libmail/nntp.H')
| -rw-r--r-- | libmail/nntp.H | 336 | 
1 files changed, 0 insertions, 336 deletions
| diff --git a/libmail/nntp.H b/libmail/nntp.H deleted file mode 100644 index e644f52..0000000 --- a/libmail/nntp.H +++ /dev/null @@ -1,336 +0,0 @@ -/* -** Copyright 2003-2008, Double Precision Inc. -** -** See COPYING for distribution information. -*/ -#ifndef libmail_nntp_H -#define libmail_nntp_H - -#include "libmail_config.h" -#include	"mail.H" -#include	<sys/types.h> - -#include	"maildir/maildirkeywords.h" - -#include	"logininfo.H" -#include	"fd.H" -#include	"generic.H" -#include	"search.H" -#include	<stdio.h> -#include	<time.h> -#include	<string> -#include	<map> -#include	<list> -#include	<vector> - -/////////////////////////////////////////////////////////////////////////// -// -// An NNTP implementation -// - -LIBMAIL_START - -////////////////////////////////////////////////////////////////////////////// - -class nntp : public fd, public generic { - -public: -	class newsrc; -	typedef unsigned long msgnum_t; - -private: - -	time_t timeoutSetting; -	time_t autologoutSetting; - -	loginInfo nntpLoginInfo; - -	loginInfo savedLoginInfo; - -	time_t inactivityTimeout; - -	callback::folder *folderCallback; - -	void resumed(); -	void handler(std::vector<pollfd> &fds, int &timeout); -	int socketRead(const std::string &readbuffer); - -	void disconnect(const char *reason); - -	// Superclass of NNTP tasks.  Methods create subclasses of Task -	// objects, and push them to the tasks queue.  Replies from the -	// NNTP server are routed to the foremost Task on the queue. - -	class Task { - -	protected: -		callback *callbackPtr;	// App callback. -		nntp * volatile myserver; -		// Marked volatile due to destructor monkey business - -	public: -		time_t defaultTimeout; - -		virtual void done(); -		// Task completed, start the next task on the queue, -		// and delete this Task object. - -		void resetTimeout(); - -		virtual void success(std::string); -		virtual void fail(std::string); -		// success/fail for use by subclasses.  Invoke the callback -		// method, then done. - -		Task(callback *callbackArg, -		     nntp &myserverArg); -		virtual ~Task(); - -		virtual int getTimeout(); -		// How long before this task times out. - -		virtual void emptyQueue(); -		// After removing this task, the task queue is now empty - -		virtual void serverResponse(const char *message)=0; -		// Process a line of text from the server - -		virtual void disconnected(const char *reason); -		// Server has disconnected. -		// The default implementation takes this task off the queue, -		// calls the next Task's disconnect method, then deletes -		// itself. - -		virtual void installedTask(); -		// This task is now at the front of the queue -	}; - -	std::list<Task *> tasks; - -	std::vector<std::string> newgroups; -	bool hasNewgroups; - -	std::map<std::string, newsrc> cachedNewsrc; -	bool didCacheNewsrc; - -	void cacheNewsrc(); -	bool updateCachedNewsrc(); -	void discardCachedNewsrc(); -	bool updateOpenedNewsrc(newsrc &); - -	void createNewsrc(newsrc &); - -	class cachedNewsrcSort; - -	class folder; -	class add; -	class LoggedInTask; -	class LoginTask; -	class LogoutTask; -	class ListActiveTask; -	class GroupTask; -	class GroupInfoTask; -	class GroupOpenTask; -	class FetchTask; -	class FetchTaskBase; -	class CacheMessageTask; -	class CacheTask; -	class XoverTask; -	class PostTask; -	class CheckNewTask; - -	class XpatTask; -	class XpatTaskCallback; - -	std::string newsrcFilename;	// .newsrc file - -	std::string openedGroup; // Group we have logically opened - -	// Here's the index of an opened group.  'cause Usenet groups can -	// be fairly large, we try to be extra skimpy on memory usage. - -	class nntpMessageInfo { -	public: -		nntpMessageInfo(); -		~nntpMessageInfo(); -		msgnum_t msgNum; - -		mail::keywords::Message keywords; - -		unsigned char msgFlag; -#define IDX_DELETED 1 -#define IDX_FLAGGED 2 - -#define IDX_SEARCH  128  // Flag used to mark msgs found by search -	}; - -private: -	static bool equalMsgNums(nntpMessageInfo a, -				 nntpMessageInfo b); - -public: -	mail::keywords::Hashtable keywordHashtable; -	std::vector<nntpMessageInfo> index; - -	msgnum_t loWatermark, hiWatermark; // Saved from last GROUP - -	std::string serverGroup; // Group actually open on the server - -	callback::disconnect *disconnectCallback; - -	void installTask(Task *); -public: - -	friend class Task; -	friend class LoggedInTask; -	friend class folder; -	friend class LogoutTask; -	friend class ListActiveTask; -	friend class GroupTask; -	friend class GroupInfoTask; -	friend class GroupOpenTask; -	friend class FetchTask; -	friend class FetchTaskBase; -	friend class CacheMessageTask; -	friend class CacheTask; -	friend class XoverTask; -	friend class add; -	friend class PostTask; -	friend class CheckNewTask; -	friend class XpatTask; -	friend class XpatTaskCallback; - -	nntp(std::string url, std::string passwd, -	     std::vector<std::string> &certificates, -	     std::string newsrcFilename, -	     mail::loginCallback *loginCallbackFunc, -	     callback &callback, -	     callback::disconnect &disconnectCallbackArg); - -	nntp(const nntp &); // UNDEFINED -	nntp &operator=(const nntp &); // UNDEFINED - -	~nntp(); - -	void logout(callback &callback); - -	void checkNewMail(callback &callback); -	bool hasCapability(std::string capability); -	std::string getCapability(std::string capability); - -	mail::folder *folderFromString(std::string); - -	void readTopLevelFolders(callback::folderList &callback1, -				 callback &callback2); -	void findFolder(std::string folder, -			class callback::folderList &callback1, -			class callback &callback2); -	std::string translatePath(std::string path); - -	mail::folder *getSendFolder(const smtpInfo &info, -				    const mail::folder *folder, -				    std::string &errmsg); - -	void readMessageAttributes(const std::vector<size_t> &messages, -				   MessageAttributes attributes, -				   callback::message &callback); - -	void readMessageContent(const std::vector<size_t> &messages, -				bool peek, -				enum mail::readMode readType, -				callback::message &callback); - -	void readMessageContent(size_t messageNum, -				bool peek, -				const mimestruct &msginfo, -				enum mail::readMode readType, -				callback::message &callback); - -	void readMessageContentDecoded(size_t messageNum, -				       bool peek, -				       const mimestruct &msginfo, -				       callback::message &callback); - -	size_t getFolderIndexSize(); -	messageInfo getFolderIndexInfo(size_t); - -	void saveFolderIndexInfo(size_t, -				 const messageInfo &, -				 callback &); - -	void updateFolderIndexFlags(const std::vector<size_t> &messages, -				    bool doFlip, -				    bool enableDisable, -				    const messageInfo &flags, -				    callback &callback); - -	void updateFolderIndexInfo(callback &); - -	void getFolderKeywordInfo(size_t, std::set<std::string> &); - -	void updateKeywords(const std::vector<size_t> &messages, -			    const std::set<std::string> &keywords, -			    bool setOrChange, -			    // false: set, true: see changeTo -			    bool changeTo, -			    callback &cb); -private: -	bool genericProcessKeyword(size_t msgNum, -				   updateKeywordHelper &helper); -public: -	void removeMessages(const std::vector<size_t> &messages, -			    callback &cb); - -	void copyMessagesTo(const std::vector<size_t> &messages, -			    mail::folder *copyTo, -			    callback &callback); - -	void searchMessages(const searchParams &searchInfo, -			    searchCallback &callback); - -	void saveSnapshot(); -private: -	void searchMessagesXpat(std::string hdr, std::string srch, -				bool searchNot, -				searchParams::Scope searchScope, -				size_t rangeLo, size_t rangeHi, -				searchCallback &callback); - -	bool fixGenericMessageNumber(std::string uid, size_t &messageNumber); - -	void genericMessageRead(std::string uid, -				size_t messageNumber, -				bool peek, -				mail::readMode readTypeArg, -				callback::message &callback); - -	void genericMessageSize(std::string uid, -				size_t messageNumber, -				callback::message &callback); - -	void genericGetMessageFd(std::string uid, -				 size_t messageNumber, -				 bool peek, -				 int &fdRet, -				 callback &callback); -	void genericMarkRead(size_t messageNumber); - -	void genericGetMessageStruct(std::string uid, -				     size_t messageNumber, -				     struct rfc2045 *&structRet, -				     callback &callback); - -	bool genericCachedUid(std::string uid); - -	// One message is cached to a temp file, and parsed. - -	std::string cachedUid; -	FILE *genericTmpFp; -	struct rfc2045 *genericTmpRfcp; - -	void cleartmp(); -}; - -LIBMAIL_END - -#endif | 
