limal-nfs-server
|
00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | _ _ _ _ __ _ | 00004 | | | | | | \_/ | / \ | | | 00005 | | | | | | |_| | / /\ \ | | | 00006 | | |__ | | | | | | / ____ \ | |__ | 00007 | |____||_| |_| |_|/ / \ \|____| | 00008 | | 00009 | nfs-server library | 00010 | | 00011 | (C) SUSE Linux Products GmbH | 00012 | (C) Novell, Inc. | 00013 \----------------------------------------------------------------------/ 00014 00015 File: NfsExports.hpp 00016 00017 Author: Marius Tomaschewski, Chakravarthi P 00018 Maintainer: Chakravarthi P 00019 00020 /-*/ 00025 #ifndef LIMAL_NFS_SERVER_NFS_EXPORTS_HPP 00026 #define LIMAL_NFS_SERVER_NFS_EXPORTS_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 // ------------------------------------------------------------------- 00036 namespace LIMAL_NAMESPACE 00037 { 00038 namespace NFS_SERVER_NAMESPACE 00039 { 00040 00041 00042 // ------------------------------------------------------------------- 00050 class ExportOption 00051 { 00052 public: 00056 ExportOption(); 00057 00072 ExportOption(const blocxx::String &name, 00073 const blocxx::String &value); 00074 00089 ExportOption(const blocxx::String &option); 00090 00096 ExportOption(const ExportOption &option); 00097 00101 ~ExportOption(); 00102 00108 bool empty() const; 00109 00116 blocxx::String toString() const; 00117 00123 blocxx::String getName() const; 00124 00130 blocxx::String getValue() const; 00131 00136 void setName(const blocxx::String &name); 00137 00141 void setValue(const blocxx::String &value); 00142 00157 void setOption(const blocxx::String &option); 00158 00159 #ifndef SWIG 00160 friend bool 00161 operator == (const ExportOption & o1, const ExportOption & o2); 00162 00163 friend bool 00164 operator < (const ExportOption & o1, const ExportOption & o2); 00165 #endif 00166 00167 private: 00168 blocxx::String m_name; 00169 blocxx::String m_value; 00170 }; 00171 00172 00173 // ------------------------------------------------------------------- 00178 typedef blocxx::List<ExportOption> ExportOptions; 00179 00180 00181 // ------------------------------------------------------------------- 00190 class ExportClient 00191 { 00192 public: 00196 ExportClient(); 00197 00203 ExportClient(const ExportClient &client); 00204 00220 ExportClient(const blocxx::String &client, 00221 const ExportOptions &options); 00222 00234 ExportClient(const blocxx::String &client, 00235 const blocxx::String &options); 00236 00249 ExportClient(const blocxx::String &clientAndOpts); 00250 00254 ~ExportClient(); 00255 00262 bool empty() const; 00263 00270 blocxx::String toString() const; 00271 00277 blocxx::String getClient() const; 00278 00284 ExportOptions getOptions() const; 00285 00291 blocxx::String getOptionsString() const; 00292 00298 void setClient (const blocxx::String &client); 00299 00305 void setOptions(const ExportOptions &options); 00306 00312 void setOptions(const blocxx::String &options); 00313 00318 static 00319 ExportOptions parseOptions(const blocxx::String &options); 00320 00321 #ifndef SWIG 00322 friend bool 00323 operator == (const ExportClient &c1, const ExportClient &c2); 00324 00325 friend bool 00326 operator < (const ExportClient &c1, const ExportClient &c2); 00327 #endif 00328 00329 private: 00330 blocxx::String m_client; 00331 ExportOptions m_options; 00332 }; 00333 00334 00335 // ------------------------------------------------------------------- 00340 typedef blocxx::List<ExportClient> ExportClients; 00341 00342 00343 // ------------------------------------------------------------------- 00348 typedef blocxx::Array<blocxx::String> ExportComment; 00349 00350 00351 // ------------------------------------------------------------------- 00356 class ExportEntry 00357 { 00358 public: 00362 ExportEntry(); 00363 00369 ExportEntry(const ExportEntry &entry); 00370 00371 00379 ExportEntry(const blocxx::String &path, 00380 const ExportClients &clients); 00381 00390 ExportEntry(const blocxx::String &path, 00391 const ExportClients &clients, 00392 const ExportComment &comment); 00393 00397 ~ExportEntry(); 00398 00404 bool empty() const; 00405 00409 blocxx::String toString() const; 00410 00415 blocxx::StringArray toStringArray() const; 00416 00420 blocxx::String getPath() const; 00421 00425 ExportClients getClients() const; 00426 00430 ExportComment getComment() const; 00431 00437 void setPath(const blocxx::String &path); 00438 00444 void setClients(const ExportClients &clients); 00445 00451 void setComment(const ExportComment &comment); 00452 00460 bool addClient(const ExportClient &client); 00461 00469 bool removeClient(const blocxx::String &cname); 00470 00477 bool removeClient(const ExportClient &client); 00478 00483 void removeClients(); 00484 00485 #ifndef SWIG 00486 friend bool 00487 operator == (const ExportEntry &e1, const ExportEntry &e2); 00488 00489 friend bool 00490 operator < (const ExportEntry &e1, const ExportEntry &e2); 00491 #endif 00492 00493 private: 00494 blocxx::String m_path; 00495 ExportClients m_clients; 00496 ExportComment m_comment; 00497 }; 00498 00499 00500 // ------------------------------------------------------------------- 00505 typedef blocxx::List<ExportEntry> ExportEntries; 00506 typedef blocxx::List<blocxx::String> ExportPaths; 00507 00508 00509 // ------------------------------------------------------------------- 00514 class Exports 00515 { 00516 public: 00517 enum CommentType 00518 { 00519 E_LEADING, 00520 E_TRAILING 00521 }; 00522 00526 Exports(); 00527 00533 Exports(const Exports &exports); 00534 00541 Exports(const ExportEntries &entries); 00542 00546 ~Exports(); 00547 00551 ExportPaths getPaths() const; 00552 00556 ExportClients getClients(const blocxx::String &path) const; 00557 00561 ExportEntries getEntries(const blocxx::String &path) const; 00562 00566 ExportEntries getEntries() const; 00567 00571 ExportComment getComment(CommentType type) const; 00572 00578 void setEntries(const ExportEntries &entries); 00579 00586 void setComment(const ExportComment &comment, 00587 CommentType type); 00588 00598 void addEntry(const ExportEntry &entry); 00599 00600 00601 private: 00602 ExportEntries m_entries; 00603 ExportComment l_comment; 00604 ExportComment t_comment; 00605 00606 }; 00607 00608 00609 // ------------------------------------------------------------------- 00610 } // End of NFS_SERVER_NAMESPACE 00611 } // End of LIMAL_NAMESPACE 00612 00613 #endif // LIMAL_NFS_SERVER_NFS_EXPORTS_HPP 00614 // vim: set ts=8 sts=8 sw=8 ai noet: