File: tmpaccount.H

package info (click to toggle)
cone 0.89-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 25,628 kB
  • ctags: 14,171
  • sloc: ansic: 85,400; cpp: 82,903; sh: 11,713; makefile: 1,732; perl: 832; yacc: 291; sed: 16
file content (208 lines) | stat: -rw-r--r-- 5,290 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
/*
** Copyright 2003-2004, Double Precision Inc.
**
** See COPYING for distribution information.
*/
#ifndef libmail_tmpaccount_H
#define libmail_tmpaccount_H

#include "libmail_config.h"
#include "mail.H"
#include "generic.H"
#include "addmessage.H"

#include "rfc2045/rfc2045.h"
#include <stdio.h>

LIBMAIL_START

//
// The tmp: driver - a driver that uses a temporary file that holds exactly
// one message.
// The driver provides a single folder, INBOX.  Adding a message to the
// folder automatically expunges the previous message.
//

class tmpaccount : public account, public generic {

	void resumed();
	void handler(std::vector<pollfd> &fds, int &timeout);

	callback::disconnect *disconnect_callback;
	callback::folder *folder_callback;
	FILE *f;
	struct rfc2045 *rfc2045p;
	messageInfo fInfo;

	void disconnect(const char *);

	class folder : public mail::folder {

		tmpaccount *account;

		static void na(callback &);
	public:
		folder(tmpaccount *);
		~folder();

		bool isParentOf(std::string path) const;

		void hasMessages(bool);
		void hasSubFolders(bool);
		void readFolderInfo( callback::folderInfo
				     &callback1,
				     callback &callback2) const;
		void getParentFolder(callback::folderList &callback1,
				     callback &callback2) const;
		void readSubFolders( callback::folderList &callback1,
				     callback &callback2) const;

		mail::addMessage *addMessage(callback &callback) const;

		void createSubFolder(std::string name, bool isDirectory,
				     callback::folderList
				     &callback1,
				     callback &callback2) const;
		void create(bool isDirectory,
			    callback &callback) const;

		void destroy(callback &callback, bool destroyDir) const;

		void renameFolder(const mail::folder *newParent,
				  std::string newName,
				  callback::folderList &callback1,
				  callback &callback2) const;

		folder *clone() const;

		std::string toString() const;

		void open(callback &openCallback,
			  snapshot *restoreSnapshot,
			  callback::folder &folderCallback) const;

		void sameServerAsHelperFunc() const;

		std::string getName() const;
		std::string getPath() const;
		bool hasMessages() const;
		bool hasSubFolders() const;
	};

	class add : public addMessage {

		FILE *newFile;
		struct rfc2045 *rfc2045p;

		tmpaccount *account;
		mail::callback &cb;
	public:
		add(tmpaccount *accountArg, mail::callback &cbArg);
		~add();
		virtual void saveMessageContents(std::string);
		virtual void go();
		virtual void fail(std::string errmsg);
	};

public:

	friend class mail::tmpaccount::folder;
	friend class mail::tmpaccount::add;

	tmpaccount(callback::disconnect &disconnect_callbackArg);
	virtual ~tmpaccount();

	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 path,
			callback::folderList &callback1,
			callback &callback2);
	std::string translatePath(std::string path);


	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 class mimestruct &msginfo,
				enum mail::readMode readType,
				callback::message &callback);

	void readMessageContentDecoded(size_t messageNum,
				       bool peek,
				       const class mimestruct
				       &msginfo,
				       callback::message &callback);
	size_t getFolderIndexSize();

	messageInfo getFolderIndexInfo(size_t);
	void saveFolderIndexInfo(size_t messageNum,
				 const messageInfo &msgInfo,
				 callback &callback);
	void updateFolderIndexFlags(const std::vector<size_t> &messages,
				    bool doFlip,
				    bool enableDisable,
				    const messageInfo &flags,
				    callback &callback);

	void updateFolderIndexInfo(callback &);
	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 genericMessageRead(std::string uid,
				size_t messageNumber,
				bool peek,
				mail::readMode readType,
				mail::callback::message &callback);

	void genericMessageSize(std::string uid,
				size_t messageNumber,
				mail::callback::message &callback);

	void genericGetMessageFd(std::string uid,
				 size_t messageNumber,
				 bool peek,
				 int &fdRet,
				 mail::callback &callback);

	void genericGetMessageStruct(std::string uid,
				     size_t messageNumber,
				     struct rfc2045 *&structRet,
				     mail::callback &callback);

	void genericGetMessageFdStruct(std::string uid,
				       size_t messageNumber,
				       bool peek,
				       int &fdRet,
				       struct rfc2045 *&structret,

				       mail::callback &callback);

	bool genericCachedUid(std::string uid);

	void genericMarkRead(size_t messageNumber);
};

LIBMAIL_END

#endif