cache_object.h

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C头文件 代码 · 共 159 行

H
159
字号
// -*- C++ -*-// $Id: Cache_Object.h 69745 2005-12-02 08:45:34Z isisbuilds $#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 + =
减小字号Ctrl + -
显示快捷键?