00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00025 #ifndef LIMAL_NFS_SERVER_NFS_IDMAPD_CONF_HPP
00026 #define LIMAL_NFS_SERVER_NFS_IDMAPD_CONF_HPP
00027
00028 #include <limal/nfs-server/config.h>
00029 #include <blocxx/String.hpp>
00030 #include <blocxx/Array.hpp>
00031 #include <blocxx/List.hpp>
00032 #include <blocxx/Map.hpp>
00033
00034
00035 namespace LIMAL_NAMESPACE
00036 {
00037 namespace NFS_SERVER_NAMESPACE
00038 {
00039
00040
00049 class IdmapdEntry
00050 {
00051 public:
00055 IdmapdEntry ();
00056
00071 IdmapdEntry (const blocxx::String &name,
00072 const blocxx::String &value);
00073
00088 IdmapdEntry (const blocxx::String &entry);
00089
00090 IdmapdEntry (const IdmapdEntry &ientry);
00091
00092 ~IdmapdEntry ();
00093
00094 bool
00095 empty () const;
00096
00097 blocxx::String
00098 toString () const;
00099
00100 blocxx::String
00101 getName () const;
00102
00103 blocxx::String
00104 getValue () const;
00105
00106 blocxx::String
00107 getEntry () const;
00108
00109 void
00110 setEntry (const blocxx::String &entry);
00111
00112 void
00113 addComment (const blocxx::String &comment);
00114
00115 bool
00116 hasComments () const;
00117
00118 blocxx::Array<blocxx::String>
00119 getComments () const;
00120
00121
00122
00123 private:
00124 blocxx::String m_name;
00125 blocxx::String m_value;
00126
00127 blocxx::Array<blocxx::String> comments;
00128
00129 void
00130 setName (const blocxx::String &name);
00131
00132 };
00133
00134
00139 typedef blocxx::List<IdmapdEntry> IdmapdEntries;
00140
00141
00142
00143 class IdmapdSection
00144 {
00145
00146 public:
00147 typedef blocxx::IntrusiveReference<IdmapdEntry> IERef;
00148
00149 IdmapdSection ();
00150
00151 IdmapdSection (const blocxx::String &name);
00152
00153 IdmapdSection (const IdmapdSection §ion);
00154
00155 IdmapdSection (const blocxx::String &name,
00156 const IdmapdEntries &entries);
00157
00158
00159 IdmapdSection &
00160 addEntry (const IdmapdEntry &entry);
00161
00162 blocxx::String
00163 getName () const;
00164
00165 bool
00166 empty() const;
00167
00168 blocxx::Array<blocxx::String>
00169 getStringEntries () const;
00170
00171 IdmapdEntry&
00172 getEntry (const blocxx::String &name) ;
00173
00174 void
00175 setEntry (const IdmapdEntry &entry);
00176
00177 void
00178 setEntryValue (const blocxx::String &entry,
00179 const blocxx::String &value);
00180
00181 void
00182 addComment (const blocxx::String &comment);
00183
00184 bool
00185 hasComments () const;
00186
00187 bool
00188 hasEntry (const blocxx::String &entryName) const;
00189
00190 blocxx::Array<blocxx::String>
00191 getComments () const;
00192
00193
00194 blocxx::List<IdmapdEntry>
00195 getEntries () const;
00196
00197 private:
00198
00199 blocxx::String m_name;
00200
00201
00202 IdmapdEntries m_entries;
00203 blocxx::Map<blocxx::String,IdmapdEntry> entryMap;
00204
00205 void
00206 setEntryMap (const blocxx::List<IdmapdEntry> &entries);
00207
00208 blocxx::Array<blocxx::String> comments;
00209 };
00210
00211
00212
00213
00214
00219 typedef blocxx::List<IdmapdSection> IdmapdSections;
00220
00221
00222
00223
00224 class IdmapdConf
00225 {
00226 public:
00227 IdmapdConf();
00228
00229 IdmapdConf(const IdmapdConf &conf);
00230
00231 ~IdmapdConf ();
00232
00233 blocxx::List<IdmapdEntry>
00234 getEntries (const blocxx::String §ionName);
00235
00236 blocxx::Array<blocxx::String>
00237 getStringEntries (const blocxx::String §ionName);
00238
00239 blocxx::Array<blocxx::String>
00240 getAllStringEntries () const;
00241
00242 const IdmapdSection&
00243 getSection (const blocxx::String §ionName);
00244
00245 const blocxx::String
00246 getValueFor (const blocxx::String &entryName);
00247
00248 bool
00249 hasSection (const blocxx::String &secName) const;
00250
00251 blocxx::List<IdmapdSection>
00252 getSections () const;
00253
00254 blocxx::Map<blocxx::String,IdmapdSection>
00255 getSectionMap () const;
00256
00257 void
00258 setSectionMap ();
00259
00260 void
00261 setSection (const IdmapdSection §ion);
00262
00263 void
00264 setEntry (const blocxx::String &entryName,
00265 const blocxx::String &value);
00266
00267 void
00268 addComment (const blocxx::String &comment);
00269
00270 bool
00271 hasComments () const;
00272
00273 blocxx::Array<blocxx::String>
00274 getComments () const;
00275
00276 bool
00277 empty () const;
00278
00279
00280
00281
00282
00283
00284
00285 private:
00286 blocxx::Map<blocxx::String,IdmapdSection> sectionMap;
00287 blocxx::Array<blocxx::String> comments;
00288
00289 };
00290
00291
00292
00293
00294
00295 }
00296 }
00297
00298 #endif // LIMAL_NFS_SERVER_NFS_IDMAPD_CONF_HPP
00299