H:/gfcppsancout/product/include/gfcpp/RegionAttributes.hpp

Go to the documentation of this file.
00001 #ifndef __GEMFIRE_REGIONATTRIBUTES_H__
00002 #define __GEMFIRE_REGIONATTRIBUTES_H__
00003 /*=========================================================================
00004  * (c) Copyright 2002-2007, GemStone Systems, Inc. All Rights Reserved.
00005  * 1260 NW Waterhouse Ave., Suite 200,  Beaverton, OR 97006
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   // MAP ATTRIBUTES
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   /*destructor
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   //return zero deliberately
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   //Helper function that safely compares two attribute string
00314   //taking into consideration the fact the one or the other 
00315   //might be NULL
00316   static int32_t compareStringAttribute(char* attributeA, char* attributeB);
00317 
00318   //Helper function that safely copies one string attribute to 
00319   //another.
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    //will be created by the factory
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 } //namespace gemfire
00376 
00377 #endif //ifndef __GEMFIRE_REGIONATTRIBUTES_H__

GemFire C++ Cache API Documentation