⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cache_manager_t.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
/* -*- c++ -*- */// Hey Emacs!  This is a C++ file!// Cache_Manager_T.h,v 1.3 2005/08/14 16:41:08 schmidt Exp#ifndef JAWS_CACHE_MANAGER_T_H#define JAWS_CACHE_MANAGER_T_H#include "ace/Singleton.h"#include "JAWS/Cache_Object.h"template <class KEY, class HASH_FUNC, class EQ_FUNC> class JAWS_Cache_Hash;template <class KEY, class FACTORY, class HASH_FUNC, class EQ_FUNC>class JAWS_Cache_Heap;template <class KEY, class FACTORY, class HASH_FUNC, class EQ_FUNC>class JAWS_Cache_List;template <class KEY, class FACTORY, class HASH_FUNC, class EQ_FUNC>class JAWS_Cache_Manager{  friend class JAWS_Cache_Hash<KEY, HASH_FUNC, EQ_FUNC>;  friend class JAWS_Cache_Heap<KEY, FACTORY, HASH_FUNC, EQ_FUNC>;  friend class JAWS_Cache_List<KEY, FACTORY, HASH_FUNC, EQ_FUNC>;public:  typedef ACE_Singleton<FACTORY, ACE_SYNCH_MUTEX> Object_Factory;  typedef JAWS_Cache_Hash<KEY, HASH_FUNC, EQ_FUNC> Cache_Hash;  typedef JAWS_Cache_List<KEY, FACTORY, HASH_FUNC, EQ_FUNC> Cache_Heap;  JAWS_Cache_Manager (ACE_Allocator *alloc = 0,                     JAWS_Cache_Object_Factory *cof = 0,                     size_t hashsize = 8192,   // number of hash buckets                     size_t maxsize = 65535,   // max number of in memory                                               // objects                     size_t maxobjsize = 256,  // max cached object size in kB                     size_t minobjsize = 0,    // min cached object size in kB                     size_t highwater = 100,   // max size of cache in MB                     size_t lowwater = 50,     // min size of cache when                                               // expiring after highwater                                               // has been reached                     int timetolive = -1,      // amt of time the lowest                                               // priority item is allowed to                                               // remain in the cache                     int counted = 0           // flag for whether to use                                               // counts                     );  int open (ACE_Allocator *alloc = 0,            JAWS_Cache_Object_Factory *cof = 0,            size_t hashsize = 1024,   // number of hash buckets            size_t maxsize = 4096,    // max number of in memory                                      // objects            size_t maxobjsize = 5120, // max cached object size in kB            size_t minobjsize = 0,    // min cached object size in kB            size_t highwater = 50,    // max size of cache in MB            size_t lowwater = 30,     // min size of cache when                                      // expiring after highwater                                      // has been reached            int timetolive = -1,      // amount of time the lowest                                      // priority item is allowed to                                      // remain in the cache            int counted = 0           // flag for whether to use                                      // counts            );  ~JAWS_Cache_Manager (void);  int close (void);  // Search Methods  int GET (const KEY &key, JAWS_Cache_Object *&cobj);  // Retrieve the object associated with key from cache.  Return 0 on  // success, -1 on failure.  int PUT (const KEY &key, const void *data, size_t size,           JAWS_Cache_Object *&obj);  // Inserts or replaces object associated with key into cache.  // Return 0 on success, -1 on failure.  int MAKE (const void *data, size_t size, JAWS_Cache_Object *&cobj);  // Create a cached object, increment reference count.  int TAKE (JAWS_Cache_Object *const &cobj);  // Increment reference count.  int DROP (JAWS_Cache_Object *&cobj);  // Decrement reference count on cached object, perhaps delete.  // Returns 0 if only decremented, 1 if deleted, -1 if error.  int FLUSH (void);  // Removes lowest priority object from cache.protected:  int GET_i (const KEY &key, JAWS_Cache_Object *&object);  // Retrieve the object associated with key from cache.  Return 0 on  // success, -1 on failure.  int PUT_i (const KEY &key, const void *data, size_t size,             JAWS_Cache_Object *&object);  // Inserts or replaces object associated with key into cache.  // Return 0 on success, -1 on failure.  int FLUSH_i (void);  // Removes lowest priority object from cache.  int FLUSH_i (const KEY &key);  // Removes object associated with key from cache.  int DROP_i (JAWS_Cache_Object *&cobj);  // Decrement reference count on cached object, perhaps delete.private:  ACE_Allocator *allocator_;  JAWS_Cache_Object_Factory *factory_;  size_t hashsize_;  size_t maxsize_;  size_t maxobjsize_;  size_t minobjsize_;  size_t highwater_;  size_t lowwater_;  size_t waterlevel_;  int timetolive_;  int counted_;  Cache_Hash *hash_;  Cache_Heap *heap_;  ACE_SYNCH_RW_MUTEX lock_;};template <class KEY, class DATA, class CACHE_MANAGER>class JAWS_Cache_Proxy{public:  typedef CACHE_MANAGER Cache_Manager;  typedef ACE_Singleton<Cache_Manager, ACE_SYNCH_MUTEX>          Cache_Manager_Singleton;  JAWS_Cache_Proxy (const KEY &, Cache_Manager * = 0);  // Corresponds to a GET  JAWS_Cache_Proxy (const KEY &, DATA *, size_t, Cache_Manager * = 0);  // Corresponds to a U/PUT  virtual ~JAWS_Cache_Proxy (void);  DATA *data (void) const;  operator DATA * (void) const;  virtual int close (DATA *);private:  JAWS_Cache_Object *object_;  Cache_Manager *manager_;};#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)#include "JAWS/Cache_Manager_T.cpp"#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */#endif /* JAWS_CACHE_MANAGER_T_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -