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

📄 cache_object.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
// Cache_Object.cpp,v 1.3 2005/10/04 18:15:16 ossama Exp#include "JAWS/Cache_Object.h"#include "ace/Malloc_Base.h"#include "ace/Guard_T.h"#include "ace/OS_NS_time.h"JAWS_Cache_Object::JAWS_Cache_Object (const void *data, size_t size)  : internal_ (0),    data_ (data),    size_ (size){  this->first_access_ = ACE_OS::time ((time_t *)0);  this->new_last_access_ = this->last_access_ = this->first_access_;}JAWS_Cache_Object::~JAWS_Cache_Object (){  this->data_ = 0;  this->size_ = 0;}void *JAWS_Cache_Object::internal (void) const{  return this->internal_;}voidJAWS_Cache_Object::internal (void *item){  this->internal_ = item;}const void *JAWS_Cache_Object::data (void) const{  return this->data_;}size_tJAWS_Cache_Object::size (void) const{  return this->size_;}unsigned intJAWS_Cache_Object::count (void) const{  return this->count_i ();}intJAWS_Cache_Object::acquire (void){  this->new_last_access_ = ACE_OS::time ((time_t *)0);  return this->acquire_i ();}intJAWS_Cache_Object::release (void){  this->last_access_ = this->new_last_access_;  return this->release_i ();}time_tJAWS_Cache_Object::last_access (void) const{  return this->last_access_;}time_tJAWS_Cache_Object::first_access (void) const{  return this->first_access_;}unsigned intJAWS_Cache_Object::priority (void) const{  return this->priority_i ();}void *JAWS_Cache_Object::heap_item (void) const{  return this->heap_item_;}voidJAWS_Cache_Object::heap_item (void *item){  this->heap_item_ = item;}JAWS_Referenced_Cache_Object::JAWS_Referenced_Cache_Object (const void *data, size_t size)  : JAWS_Cache_Object (data, size),    lock_adapter_ (count_){}JAWS_Referenced_Cache_Object::~JAWS_Referenced_Cache_Object (void){}ACE_Lock &JAWS_Referenced_Cache_Object::lock (void){  return this->lock_adapter_;}unsigned intJAWS_Referenced_Cache_Object::count_i (void) const{  if (this->count_.tryacquire_write () == 0)    return 0;  return 1;}intJAWS_Referenced_Cache_Object::acquire_i (void){  return this->count_.acquire_read ();}intJAWS_Referenced_Cache_Object::release_i (void){  return this->count_.release ();}unsigned intJAWS_Referenced_Cache_Object::priority_i (void) const{  unsigned int priority = ~(0U);  double delta    = ACE_OS::difftime (this->last_access (), this->first_access ());  if (delta >= 0.0 && delta < ~(0U))    priority = (unsigned) delta;  return priority;}JAWS_Counted_Cache_Object::JAWS_Counted_Cache_Object (const void *data, size_t size)  : JAWS_Cache_Object (data, size),    count_ (0),    new_count_ (0),    lock_adapter_ (lock_){}JAWS_Counted_Cache_Object::~JAWS_Counted_Cache_Object (void){}ACE_Lock &JAWS_Counted_Cache_Object::lock (void){  return this->lock_adapter_;}unsigned intJAWS_Counted_Cache_Object::count_i (void) const{  ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);  return this->count_;}intJAWS_Counted_Cache_Object::acquire_i (void){  ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);  this->new_count_++;  return 0;}intJAWS_Counted_Cache_Object::release_i (void){  ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);  this->new_count_--;  this->count_ = this->new_count_;  return 0;}unsigned intJAWS_Counted_Cache_Object::priority_i (void) const{  return this->count_i ();}JAWS_Cache_Object_Factory::JAWS_Cache_Object_Factory (ACE_Allocator *alloc)  : allocator_ (alloc){  if (this->allocator_ == 0)    this->allocator_ = ACE_Allocator::instance ();}JAWS_Cache_Object_Factory::~JAWS_Cache_Object_Factory (void){}intJAWS_Cache_Object_Factory::open (ACE_Allocator *alloc){  this->allocator_ = alloc;  if (this->allocator_ == 0)    this->allocator_ = ACE_Allocator::instance ();  return 0;}JAWS_Referenced_Cache_Object_Factory::JAWS_Referenced_Cache_Object_Factory (ACE_Allocator *alloc)  : JAWS_Cache_Object_Factory (alloc){}JAWS_Referenced_Cache_Object_Factory::~JAWS_Referenced_Cache_Object_Factory (void){}JAWS_Cache_Object *JAWS_Referenced_Cache_Object_Factory::create (const void *data, size_t size){  JAWS_Referenced_Cache_Object *obj;  size_t obj_size = sizeof (JAWS_Referenced_Cache_Object);  ACE_NEW_MALLOC_RETURN (obj,                         (JAWS_Referenced_Cache_Object *)                         this->allocator_->malloc (obj_size),                         JAWS_Referenced_Cache_Object (data, size), 0);  return obj;}voidJAWS_Referenced_Cache_Object_Factory::destroy (JAWS_Cache_Object *obj){  JAWS_Referenced_Cache_Object *rco = (JAWS_Referenced_Cache_Object *) obj;  ACE_DES_FREE (rco, this->allocator_->free, JAWS_Referenced_Cache_Object);}JAWS_Counted_Cache_Object_Factory::JAWS_Counted_Cache_Object_Factory (ACE_Allocator *alloc)  : JAWS_Cache_Object_Factory (alloc){}JAWS_Counted_Cache_Object_Factory::~JAWS_Counted_Cache_Object_Factory (void){}JAWS_Cache_Object *JAWS_Counted_Cache_Object_Factory::create (const void *data, size_t size){  JAWS_Counted_Cache_Object *obj;  size_t obj_size = sizeof (JAWS_Counted_Cache_Object);  ACE_NEW_MALLOC_RETURN (obj,                         (JAWS_Counted_Cache_Object *)                         this->allocator_->malloc (obj_size),                         JAWS_Counted_Cache_Object (data, size), 0);  return obj;}voidJAWS_Counted_Cache_Object_Factory::destroy (JAWS_Cache_Object *obj){  JAWS_Counted_Cache_Object *cco = (JAWS_Counted_Cache_Object *) obj;  ACE_DES_FREE (cco, this->allocator_->free, JAWS_Counted_Cache_Object);}#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)// These are only specialized with ACE_HAS_THREADS.template class ACE_Lock_Adapter<ACE_SYNCH_RW_MUTEX>;template class ACE_Lock_Adapter<ACE_SYNCH_MUTEX>;#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)// These are only specialized with ACE_HAS_THREADS.#pragma instantiate ACE_Lock_Adapter<ACE_SYNCH_RW_MUTEX>#pragma instantiate ACE_Lock_Adapter<ACE_SYNCH_MUTEX>#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */

⌨️ 快捷键说明

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