00001 #ifndef __GEMFIRE_REGIONATTRIBUTES_H__
00002 #define __GEMFIRE_REGIONATTRIBUTES_H__
00003
00004
00005
00006
00007
00008
00013 #include "gfcpp_globals.hpp"
00014 #include "gf_types.hpp"
00015 #include "CacheLoader.hpp"
00016 #include "ScopeType.hpp"
00017 #include "MirrorType.hpp"
00018 #include "ExpirationAttributes.hpp"
00019 #include "CacheWriter.hpp"
00020 #include "CacheListener.hpp"
00021 #include "Properties.hpp"
00022 #include "Serializable.hpp"
00023 #include "DiskPolicyType.hpp"
00024 #include "PersistenceManager.hpp"
00025
00026 namespace gemfire {
00027 class RegionImpl;
00028 class CacheImpl;
00029
00050 class AttributesFactory;
00051 class AttributesMutator;
00052 class Cache;
00053 class Region;
00054
00055 class CPPCACHE_EXPORT RegionAttributes: public Serializable {
00056
00060 public:
00061
00067 CacheLoaderPtr getCacheLoader() ;
00068
00074 CacheWriterPtr getCacheWriter() ;
00075
00081 CacheListenerPtr getCacheListener() ;
00082
00086 int getRegionTimeToLive() ;
00087 ExpirationAction::Action getRegionTimeToLiveAction() ;
00088
00093 int getRegionIdleTimeout() ;
00094 ExpirationAction::Action getRegionIdleTimeoutAction() ;
00095
00099 int getEntryTimeToLive() ;
00100 ExpirationAction::Action getEntryTimeToLiveAction() ;
00101
00105 int getEntryIdleTimeout() ;
00106 ExpirationAction::Action getEntryIdleTimeoutAction() ;
00107
00108
00109
00117 bool getMirroring() const;
00118
00119
00124 ScopeType::Scope getScope() const;
00125
00130 bool getCachingEnabled( ) const;
00131
00132
00133
00134
00138 int getInitialCapacity() const;
00139
00143 float getLoadFactor() const;
00144
00155 bool getInterestListEnabled( ) const;
00156
00172 uint32_t getMaxValueDistLimit( ) const;
00173
00178 int getConcurrencyLevel() const;
00179
00184 uint32_t getLruEntriesLimit( ) const;
00185
00190 DiskPolicyType::PolicyType getDiskPolicy() const;
00191
00195 const ExpirationAction::Action getLruEvictionAction( ) const;
00196
00197
00198
00199
00200
00201 virtual ~RegionAttributes();
00202
00204 virtual void toData(DataOutput& out) const;
00205
00207 virtual Serializable* fromData( DataInput& in );
00208
00210 static Serializable* createDeserializable( );
00211
00213 virtual int8_t classId( ) const;
00214
00216 virtual int8_t typeId( ) const;
00217
00218
00219 virtual uint32_t objectSize() const {
00220 return 0;
00221 }
00222
00227 const char* getCacheLoaderLibrary();
00228
00233 const char* getCacheLoaderFactory();
00234
00239 const char* getCacheListenerLibrary();
00240
00245 const char* getCacheListenerFactory();
00246
00251 const char* getCacheWriterLibrary();
00252
00257 const char* getCacheWriterFactory();
00258
00260 bool operator == ( const RegionAttributes& other ) const;
00261
00263 bool operator != ( const RegionAttributes& other ) const;
00264
00269 void validateSerializableAttributes( );
00270
00277 const char* getEndpoints();
00278
00285 bool getClientNotificationEnabled() const;
00286
00291 const char* getPersistenceLibrary();
00292
00297 const char* getPersistenceFactory();
00298
00302 PropertiesPtr getPersistenceProperties();
00303
00309 PersistenceManagerPtr getPersistenceManager() ;
00310
00311
00312 private:
00313
00314
00315
00316 static int32_t compareStringAttribute(char* attributeA, char* attributeB);
00317
00318
00319
00320 static void copyStringAttribute(char*& lhs, const char* rhs);
00321
00322 void setCacheListener(const char* libpath, const char* factoryFuncName);
00323 void setCacheLoader (const char* libpath, const char* factoryFuncName);
00324 void setCacheWriter (const char* libpath, const char* factoryFuncName);
00325 void setEndpoints( const char* endpoints );
00326
00327
00328 RegionAttributes(const RegionAttributes& rhs);
00329 RegionAttributes();
00330
00331 ExpirationAction::Action m_regionTimeToLiveExpirationAction;
00332 ExpirationAction::Action m_regionIdleTimeoutExpirationAction;
00333 ExpirationAction::Action m_entryTimeToLiveExpirationAction;
00334 ExpirationAction::Action m_entryIdleTimeoutExpirationAction;
00335 ExpirationAction::Action m_lruEvictionAction;
00336 CacheWriterPtr m_cacheWriter;
00337 CacheLoaderPtr m_cacheLoader;
00338 CacheListenerPtr m_cacheListener;
00339 uint32_t m_lruEntriesLimit;
00340 bool m_caching;
00341 bool m_useInterestList;
00342 uint32_t m_maxValueDistLimit;
00343 uint32_t m_entryIdleTimeout;
00344 uint32_t m_entryTimeToLive;
00345 uint32_t m_regionIdleTimeout;
00346 uint32_t m_regionTimeToLive;
00347 ScopeType::Scope m_scope;
00348 bool m_mirroring;
00349 uint32_t m_initialCapacity;
00350 float m_loadFactor;
00351 uint32_t m_concurrencyLevel;
00352 char* m_cacheLoaderLibrary;
00353 char* m_cacheWriterLibrary;
00354 char* m_cacheListenerLibrary;
00355 char* m_cacheLoaderFactory;
00356 char* m_cacheWriterFactory;
00357 char* m_cacheListenerFactory;
00358 DiskPolicyType::PolicyType m_diskPolicy;
00359 char* m_endpoints;
00360 bool m_clientNotificationEnabled;
00361 char* m_persistenceLibrary;
00362 char* m_persistenceFactory;
00363 PropertiesPtr m_persistenceProperties;
00364 PersistenceManagerPtr m_persistenceManager;
00365
00366 friend class AttributesFactory;
00367 friend class AttributesMutator;
00368 friend class Cache;
00369 friend class CacheImpl;
00370 friend class Region;
00371 friend class RegionInternal;
00372
00373 };
00374
00375 }
00376
00377 #endif //ifndef __GEMFIRE_REGIONATTRIBUTES_H__