Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 #if !defined(ALIZE_SegServer_h)
00056 #define ALIZE_SegServer_h
00057
00058 #if defined(_WIN32)
00059 #if defined(ALIZE_EXPORTS)
00060 #define ALIZE_API __declspec(dllexport)
00061 #else
00062 #define ALIZE_API __declspec(dllimport)
00063 #endif
00064 #else
00065 #define ALIZE_API
00066 #endif
00067
00068 #include "Object.h"
00069 #include "alizeString.h"
00070 using alize::String;
00071 #include <map>
00072 #include "RefVector.h"
00073 #include "Seg.h"
00074 #include "SegCluster.h"
00075
00076 namespace alize
00077 {
00078 class Config;
00079
00088 class ALIZE_API SegServer : public Object
00089 {
00090 friend class TestSegServer;
00091
00092 public :
00093
00096 explicit SegServer();
00097
00100 SegServer(const SegServer&);
00101
00104 const SegServer& operator=(const SegServer& ss);
00105
00106 virtual ~SegServer();
00107
00116 Seg& createSeg(unsigned long b = 0, unsigned long l = 0,
00117 unsigned long lc = 0, const String& s = "",
00118 const String& sn = "");
00119
00124 Seg& duplicateSeg(const Seg& s);
00125
00132 SegCluster& createCluster(unsigned long lc = 0, const String& s = "",
00133 const String& sn = "");
00134
00139 void remove(SegAbstract& s);
00140
00144 void removeAllSegs();
00145
00148 void removeAllClusters();
00149
00155 Seg& getSeg(unsigned long idx) const;
00156
00162 SegCluster& getCluster(unsigned long idx) const;
00163
00169 long getClusterIndexById(unsigned long id) const;
00170
00176 SegCluster& getClusterById(unsigned long id) const;
00177
00184 unsigned long getIndex(const SegAbstract& s) const;
00185
00192 void setClusterId(SegCluster& cl, unsigned long id);
00193
00197 unsigned long getSegCount() const;
00198
00202 unsigned long getClusterCount() const;
00203
00207 const String& getServerName() const;
00208
00212 void setServerName(const String& s);
00213
00218 void save(const FileName& f, const Config& c) const;
00219
00224 void load(const FileName& f, const Config& c);
00225
00230 static SegServer& create();
00231
00232 virtual String getClassName() const;
00233 virtual String toString() const;
00234
00235
00236 void deleteDeletableSeg(const K&);
00237
00238 private :
00239
00240 String _serverName;
00241 RefVector<Seg> _segVect;
00242 RefVector<SegCluster> _clusterVect;
00243 unsigned long _nextClusterId;
00244 typedef std::map<unsigned long, unsigned long>::const_iterator it_t;
00245 std::map<unsigned long, unsigned long> _map;
00246 SegAbstract& matchingSegAbstract(const SegAbstract&) const;
00247 void assertServerOwns(const SegAbstract& s) const;
00248 void assign(const SegServer& ss);
00249
00250 bool operator==(const SegServer& c) const;
00251 bool operator!=(const SegServer& c) const;
00252 };
00253
00254 }
00255
00256 #endif // !defined(ALIZE_SegServer_h)
00257