Bincimap 2.0.16
Easy Imapping
Loading...
Searching...
No Matches
depot.h
Go to the documentation of this file.
1
7#ifndef depot_h_included
8#define depot_h_included
9#include <map>
10#include <string>
11#include <vector>
12
13#include <dirent.h>
14
15namespace Binc {
16
17 class Mailbox;
18 class Depot;
19 class Status;
20
21 //------------------------------------------------------------------
23 private:
24 std::vector<Depot *> depots;
25 DepotFactory(void);
26
27 public:
28 void assign(Depot *);
29 Depot *get(const std::string &name) const;
30
31 static DepotFactory &getInstance(void);
32 ~DepotFactory(void);
33 };
34
35 //------------------------------------------------------------------
36 class Depot {
37 public:
38 //--
39 class iterator {
40 public:
41 std::string operator * (void) const;
42 void operator ++ (void);
43 bool operator != (iterator) const;
44 bool operator == (iterator) const;
45
46 iterator(void);
47 iterator(const iterator &copy);
48 iterator(DIR *, struct dirent *);
49 ~iterator(void);
50
51 void deref(void);
52
53 iterator &operator =(const iterator &copy);
54
55 friend class Depot;
56
57 private:
58 DIR *dirp;
59 struct dirent *direntp;
60 int *ref;
61 };
62
63 private:
64 iterator enditerator;
65 std::vector<Mailbox *> backends;
66 Mailbox *defaultmailbox;
67 Mailbox *selectedmailbox;
68 std::vector<std::string> subscribed;
69 std::string personalNamespace;
70 std::string othersNamespace;
71 std::string sharedNamespace;
72
73 protected:
74 mutable std::string lastError;
75 std::string name;
77 mutable std::map<std::string, Status> mailboxstatuses;
78
79 public:
80 virtual iterator begin(const std::string &) const;
81 virtual const iterator &end(void) const;
82
83 void setDelimiter(char);
84 const char getDelimiter(void) const;
85
86 virtual void assign(Mailbox *);
87
88 bool setDefaultType(const std::string &n);
89 Mailbox *getDefault(void) const;
90 virtual Mailbox *get(const std::string &path) const;
91
92 virtual bool setSelected(Mailbox *);
93 virtual Mailbox *getSelected(void) const;
94 void resetSelected(void);
95
96 bool getStatus(const std::string &s_in, Status &dest) const;
97
98 const std::string &getName(void) const;
99
100 virtual const std::string &getPersonalNamespace(void) const;
101 virtual const std::string &getOthersNamespace(void) const;
102 virtual const std::string &getSharedNamespace(void) const;
103
104 virtual std::string mailboxToFilename(const std::string &m) const = 0;
105 virtual std::string filenameToMailbox(const std::string &m) const = 0;
106
107 virtual bool createMailbox(const std::string &m) const;
108 virtual bool deleteMailbox(const std::string &m) const;
109 virtual bool renameMailbox(const std::string &m, const std::string &n) const;
110
111 const std::string &getLastError(void) const;
112 void setLastError(const std::string &error) const;
113
114 virtual std::vector<std::string> getSubscriptions(void) const;
115 virtual void subscribeTo(const std::string mailbox);
116 virtual bool unsubscribeTo(const std::string mailbox);
117 virtual void loadSubscribes(void);
118 virtual bool saveSubscribes(void) const;
119
120 //--
121 Depot(void);
122 Depot(const std::string &name);
123 virtual ~Depot(void);
124 };
125
126 //------------------------------------------------------------------
127 class MaildirPPDepot : public Depot {
128 public:
129 std::string mailboxToFilename(const std::string &m) const;
130 std::string filenameToMailbox(const std::string &m) const;
131
132 const std::string &getPersonalNamespace(void) const;
133
134 //--
137 private:
138 std::string privateNamespace;
139 };
140
141 //------------------------------------------------------------------
142 class IMAPdirDepot : public Depot {
143 public:
144 std::string mailboxToFilename(const std::string &m) const;
145 std::string filenameToMailbox(const std::string &m) const;
146
147 //--
148 IMAPdirDepot();
150 };
151
152}
153
154#endif
void operator++(void)
Definition: depot.cc:519
std::string operator*(void) const
Definition: depot.cc:510
iterator & operator=(const iterator &copy)
Definition: depot.cc:480
bool operator==(iterator) const
Definition: depot.cc:525
bool operator!=(iterator) const
Definition: depot.cc:531
void deref(void)
Definition: depot.cc:495
static DepotFactory & getInstance(void)
Definition: depot.cc:53
void assign(Depot *)
Definition: depot.cc:47
Depot * get(const std::string &name) const
Definition: depot.cc:36
~DepotFactory(void)
Definition: depot.cc:28
virtual Mailbox * get(const std::string &path) const
Definition: depot.cc:107
virtual iterator begin(const std::string &) const
Definition: depot.cc:537
const std::string & getName(void) const
Definition: depot.cc:133
std::map< std::string, Status > mailboxstatuses
Definition: depot.h:77
void resetSelected(void)
Definition: depot.cc:189
Depot(void)
Definition: depot.cc:60
virtual void loadSubscribes(void)
Definition: depot.cc:354
virtual const std::string & getOthersNamespace(void) const
Definition: depot.cc:145
void setLastError(const std::string &error) const
Definition: depot.cc:91
virtual ~Depot(void)
Definition: depot.cc:80
virtual bool setSelected(Mailbox *)
Definition: depot.cc:119
char delimiter
Definition: depot.h:76
virtual bool saveSubscribes(void) const
Definition: depot.cc:396
virtual const iterator & end(void) const
Definition: depot.cc:552
const std::string & getLastError(void) const
Definition: depot.cc:85
virtual void assign(Mailbox *)
Definition: depot.cc:97
Mailbox * getDefault(void) const
Definition: depot.cc:195
virtual void subscribeTo(const std::string mailbox)
Definition: depot.cc:328
virtual bool deleteMailbox(const std::string &m) const
Definition: depot.cc:225
virtual std::string mailboxToFilename(const std::string &m) const =0
virtual bool createMailbox(const std::string &m) const
Definition: depot.cc:201
virtual bool renameMailbox(const std::string &m, const std::string &n) const
Definition: depot.cc:245
virtual const std::string & getPersonalNamespace(void) const
Definition: depot.cc:139
virtual const std::string & getSharedNamespace(void) const
Definition: depot.cc:151
std::string name
Definition: depot.h:75
bool getStatus(const std::string &s_in, Status &dest) const
Definition: depot.cc:295
bool setDefaultType(const std::string &n)
Definition: depot.cc:169
virtual Mailbox * getSelected(void) const
Definition: depot.cc:183
void setDelimiter(char)
Definition: depot.cc:157
const char getDelimiter(void) const
Definition: depot.cc:163
virtual std::string filenameToMailbox(const std::string &m) const =0
std::string lastError
Definition: depot.h:74
virtual std::vector< std::string > getSubscriptions(void) const
Definition: depot.cc:322
virtual bool unsubscribeTo(const std::string mailbox)
Definition: depot.cc:340
Depot(const std::string &name)
std::string filenameToMailbox(const std::string &m) const
Definition: depot.cc:683
std::string mailboxToFilename(const std::string &m) const
Definition: depot.cc:645
std::string filenameToMailbox(const std::string &m) const
Definition: depot.cc:621
std::string mailboxToFilename(const std::string &m) const
Definition: depot.cc:576
const std::string & getPersonalNamespace(void) const
Definition: depot.cc:570
Definition: bincimapd.cc:9