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

📄 cache_object.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
// -*- C++ -*-// Cache_Object.h,v 1.5 2005/12/02 08:45:34 isisbuilds Exp#ifndef JAWS_CACHE_OBJECT_H#define JAWS_CACHE_OBJECT_H#include "ace/Lock_Adapter_T.h"#include "ace/Synch_Traits.h"#include "ace/Thread_Mutex.h"#include "ace/Malloc.h"#include "ace/RW_Thread_Mutex.h"ACE_BEGIN_VERSIONED_NAMESPACE_DECLclass ACE_Allocator;ACE_END_VERSIONED_NAMESPACE_DECL// Cache bucket -- use Hash_Bucket to hold cacheable objects.class JAWS_Cache_Object{public:  JAWS_Cache_Object (const void *, size_t);  virtual ~JAWS_Cache_Object (void);  void *internal (void) const;  void internal (void *);  const void *data (void) const;  size_t size (void) const;  unsigned int count (void) const;  int acquire (void);  int release (void);  time_t last_access (void) const;  time_t first_access (void) const;  unsigned int priority (void) const;  enum { ACE_CO_REFERENCED, ACE_CO_COUNTED };  void *heap_item (void) const;  void heap_item (void *item);  virtual ACE_Lock & lock (void) = 0;protected:  virtual unsigned int count_i (void) const = 0;  virtual int acquire_i (void) = 0;  virtual int release_i (void) = 0;  virtual unsigned int priority_i (void) const = 0;private:  void *internal_;  const void *data_;  size_t size_;  time_t last_access_;  time_t first_access_;  time_t new_last_access_;  void *heap_item_;};class JAWS_Referenced_Cache_Object : public JAWS_Cache_Object{public:  JAWS_Referenced_Cache_Object (const void *, size_t);  virtual ~JAWS_Referenced_Cache_Object (void);  virtual ACE_Lock & lock (void);protected:  virtual unsigned int count_i (void) const;  virtual int acquire_i (void);  virtual int release_i (void);  virtual unsigned int priority_i (void) const;private:  mutable ACE_SYNCH_RW_MUTEX count_;  mutable ACE_Lock_Adapter<ACE_SYNCH_RW_MUTEX> lock_adapter_;};class JAWS_Counted_Cache_Object : public JAWS_Cache_Object{public:  JAWS_Counted_Cache_Object (const void *, size_t);  virtual ~JAWS_Counted_Cache_Object (void);  virtual ACE_Lock & lock (void);protected:  virtual unsigned int count_i (void) const;  virtual int acquire_i (void);  virtual int release_i (void);  virtual unsigned int priority_i (void) const;private:  unsigned int count_;  unsigned int new_count_;  mutable ACE_SYNCH_MUTEX lock_;  mutable ACE_Lock_Adapter<ACE_SYNCH_MUTEX> lock_adapter_;};class JAWS_Cache_Object_Factory{public:  JAWS_Cache_Object_Factory (ACE_Allocator *alloc = 0);  virtual ~JAWS_Cache_Object_Factory (void);  int open (ACE_Allocator *alloc = 0);  virtual JAWS_Cache_Object * create (const void *, size_t) = 0;  virtual void destroy (JAWS_Cache_Object *) = 0;protected:  ACE_Allocator *allocator_;};class JAWS_Referenced_Cache_Object_Factory : public JAWS_Cache_Object_Factory{public:  JAWS_Referenced_Cache_Object_Factory (ACE_Allocator *alloc = 0);  virtual ~JAWS_Referenced_Cache_Object_Factory (void);  virtual JAWS_Cache_Object * create (const void *, size_t);  virtual void destroy (JAWS_Cache_Object *);};class JAWS_Counted_Cache_Object_Factory : public JAWS_Cache_Object_Factory{public:  JAWS_Counted_Cache_Object_Factory (ACE_Allocator *alloc = 0);  virtual ~JAWS_Counted_Cache_Object_Factory (void);  virtual JAWS_Cache_Object * create (const void *, size_t);  virtual void destroy (JAWS_Cache_Object *);};#endif /* JAWS_CACHE_OBJECT_H */

⌨️ 快捷键说明

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