亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cache_hash_t.cpp

?? 一個開源的網絡開發庫ACE
?? CPP
字號:
// Cache_Hash_T.cpp,v 1.2 2000/05/31 19:15:07 jxh Exp

#ifndef JAWS_CACHE_HASH_T_CPP
#define JAWS_CACHE_HASH_T_CPP

#include "JAWS/Cache_Hash_T.h"
#include "JAWS/Hash_Bucket_T.h"

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> unsigned long
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::hash (const EXT_ID &ext_id) const
{
  return HASH_FUNC (ext_id) % this->size_;
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::isprime (unsigned long number) const
{
  unsigned long d = 3;

  if (number <= 2) return (number == 2);

  if (number % 2 == 0) return 0;

  while (d <= number/d)
    {
      if (number % d == 0) return 0;
      d += 2;
    }

  return 1;
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::new_cachebucket (size_t hash_idx)
{
  if (this->hashtable_[hash_idx] == 0)
    {
      size_t alloc_size = sizeof (CACHE_BUCKET_MANAGER);
      ACE_NEW_MALLOC_RETURN (this->hashtable_[hash_idx],
                             (CACHE_BUCKET_MANAGER *)
                             this->allocator_->malloc (alloc_size),
                             CACHE_BUCKET_MANAGER (this->allocator_), -1);
    }

  return 0;
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC>
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::JAWS_Cache_Hash (ACE_Allocator *alloc,
                                                          size_t size)
  : allocator_ (alloc),
    hashtable_ (0)
{
  while (!this->isprime (size))
    size++;

  this->size_ = size;

  if (this->allocator_ == 0)
    this->allocator_ = ACE_Allocator::instance ();

  size_t memsize = this->size_ * sizeof (CACHE_BUCKET_MANAGER *);

  this->hashtable_
    = (CACHE_BUCKET_MANAGER **) this->allocator_->malloc (memsize);

  if (this->hashtable_)
    {
      for (size_t i = 0; i < this->size_; i++)
        this->hashtable_[i] = 0;
    }
  else
    {
      this->size_ = 0;
      // should indicate something is wrong to the user.
    }
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC>
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::~JAWS_Cache_Hash (void)
{
  if (this->hashtable_)
    {
      for (size_t i = 0; i < this->size_; i++)
        {
          if (this->hashtable_[i])
            {

              ACE_DES_FREE_TEMPLATE3(this->hashtable_[i],
                                     this->allocator_->free,
                                     JAWS_Hash_Bucket_Manager,
                                     EXT_ID,
                                     JAWS_Cache_Object *,
                                     EQ_FUNC);





              this->hashtable_[i] = 0;
            }
        }
      this->allocator_->free (this->hashtable_);
      this->hashtable_ = 0;
    }

  this->allocator_ = 0;
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::find (const EXT_ID &ext_id) const
{
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    return -1;

  return this->hashtable_[hash_idx]->find (ext_id);
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::find (const EXT_ID &ext_id,
                                                JAWS_Cache_Object *&int_id) const
{
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    return -1;

  return this->hashtable_[hash_idx]->find (ext_id, int_id);
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::bind (const EXT_ID &ext_id,
                                                JAWS_Cache_Object *const &int_id)
{
  int result;
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    {
      ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);

      if (this->new_cachebucket (hash_idx) == -1)
        return -1;

      result = this->hashtable_[hash_idx]->bind (ext_id, int_id);
    }
  else
    result = this->hashtable_[hash_idx]->bind (ext_id, int_id);

  return result;
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::trybind (const EXT_ID &ext_id,
                                                   JAWS_Cache_Object *&int_id)
{
  int result;
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    {
      ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);

      if (this->new_cachebucket (hash_idx) == -1)
        return -1;

      result = this->hashtable_[hash_idx]->trybind (ext_id, int_id);
    }
  else
    result = this->hashtable_[hash_idx]->trybind (ext_id, int_id);

  return result;
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::rebind (const EXT_ID &ext_id,
                                                  JAWS_Cache_Object *const &int_id,
                                                  EXT_ID &old_ext_id,
                                                  JAWS_Cache_Object *&old_int_id)
{
  int result;
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    {
      ACE_Guard<ACE_SYNCH_MUTEX> g (this->lock_);

      if (this->new_cachebucket (hash_idx) == -1)
        return -1;

      result = this->hashtable_[hash_idx]->rebind (ext_id, int_id,
                                                   old_ext_id, old_int_id);
    }
  else
    result = this->hashtable_[hash_idx]->rebind (ext_id, int_id,
                                                 old_ext_id, old_int_id);

  return result;
}


template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::unbind (const EXT_ID &ext_id)
{
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    return -1;

  return this->hashtable_[hash_idx]->unbind (ext_id);
}

template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> int
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::unbind (const EXT_ID &ext_id,
                                                  JAWS_Cache_Object *&int_id)
{
  unsigned long hash_idx = this->hash (ext_id);

  if (this->hashtable_[hash_idx] == 0)
    return -1;

  return this->hashtable_[hash_idx]->unbind (ext_id, int_id);
}


template <class EXT_ID, class HASH_FUNC, class EQ_FUNC> size_t
JAWS_Cache_Hash<EXT_ID,HASH_FUNC,EQ_FUNC>::size (void) const
{
  return this->size_;
}




#endif /* JAWS_CACHEHASH_T_CPP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频播放地址| 丁香六月综合激情| 一区二区三区在线观看视频| 国产日韩欧美在线一区| 日韩欧美国产综合一区| 日韩一区二区三区视频| 91精品国产手机| 日韩欧美一区二区三区在线| 日韩精品专区在线| 国产亚洲综合色| 国产精品伦理在线| 一区二区三区免费看视频| 亚洲综合色成人| 日韩av一区二区三区四区| 久久99精品国产麻豆婷婷| 国产乱码精品一区二区三| 国产精品18久久久久久久久久久久| 国产精品一品二品| 欧美日韩在线播放三区四区| 欧美性猛片xxxx免费看久爱| 欧美日韩午夜在线视频| 久久综合资源网| 日韩一区日韩二区| 日韩一区精品字幕| 国产精品一级二级三级| 一本色道久久综合狠狠躁的推荐| 欧美午夜理伦三级在线观看| 欧美电影免费观看高清完整版在线| 久久影院午夜论| 夜夜精品浪潮av一区二区三区| 天天色天天操综合| 国产91丝袜在线播放九色| 在线亚洲高清视频| 久久久五月婷婷| 一个色在线综合| 国产精品一区二区三区乱码| 一本久道久久综合中文字幕| 精品久久久久一区| 一区二区三区欧美在线观看| 精品一区二区三区免费播放| 色视频欧美一区二区三区| 精品国产乱码久久久久久图片 | 欧美系列日韩一区| 久久久精品综合| 日韩精品视频网站| 欧美成人激情免费网| 一区二区三区欧美日韩| 国产成人综合亚洲网站| 欧美精品久久久久久久久老牛影院| 国产精品网友自拍| 韩国av一区二区| 91精品国产欧美一区二区| 一区二区三区不卡视频| bt欧美亚洲午夜电影天堂| 久久看人人爽人人| 国内成人免费视频| 日韩欧美国产综合| 日本午夜精品视频在线观看| 欧美日韩免费观看一区二区三区| 国产精品国产三级国产a | 欧美激情一二三区| 美女免费视频一区二区| 69p69国产精品| 亚洲国产美国国产综合一区二区| av中文字幕不卡| 国产精品三级视频| 51久久夜色精品国产麻豆| 亚洲老妇xxxxxx| 99re热这里只有精品免费视频| 国产日韩欧美一区二区三区乱码 | 国产盗摄精品一区二区三区在线| 欧美一区二区三区视频在线| 亚洲妇熟xx妇色黄| 7878成人国产在线观看| 午夜国产不卡在线观看视频| 欧美喷潮久久久xxxxx| 亚洲成人免费观看| 日韩免费高清电影| 国产真实乱偷精品视频免| 久久久久高清精品| 成人av网站免费观看| 亚洲天天做日日做天天谢日日欢| 91丨国产丨九色丨pron| 一区二区三区鲁丝不卡| 欧美群妇大交群中文字幕| 麻豆精品一区二区综合av| 久久久久一区二区三区四区| 国产成a人亚洲精| 亚洲激情五月婷婷| 51午夜精品国产| 国产麻豆午夜三级精品| 国产精品不卡在线| 欧美色综合久久| 国产在线精品视频| 中文字幕一区免费在线观看| 欧美色电影在线| 国产美女一区二区三区| 亚洲激情校园春色| 欧美成人伊人久久综合网| 福利电影一区二区三区| 亚洲激情自拍视频| 久久亚洲影视婷婷| 色综合天天天天做夜夜夜夜做| 亚洲国产欧美在线| 久久综合久久鬼色中文字| 91免费观看视频在线| 日本不卡1234视频| 日本一区二区三区在线不卡| 欧美亚洲禁片免费| 国产麻豆视频一区二区| 一区二区三区免费网站| 精品国产一区二区三区av性色| 一本色道亚洲精品aⅴ| 国产伦精一区二区三区| 亚洲精品中文字幕在线观看| 精品欧美乱码久久久久久1区2区 | 成人av在线影院| 无码av中文一区二区三区桃花岛| 欧美国产精品一区二区三区| 欧美日韩久久不卡| 色中色一区二区| 国产精品456| 麻豆国产91在线播放| 亚洲午夜精品在线| 一区二区中文字幕在线| 欧美不卡一区二区三区| 在线播放一区二区三区| 97精品电影院| 丁香天五香天堂综合| 蜜臀av性久久久久蜜臀av麻豆| 一区二区三区加勒比av| 日本一区二区三区在线不卡 | 国产一区二区三区在线观看免费 | 日韩欧美成人一区二区| 欧美日韩免费一区二区三区| 日本乱人伦一区| 成人免费视频免费观看| 国产在线视频一区二区三区| 日韩综合在线视频| 亚洲综合精品自拍| 亚洲男女一区二区三区| 亚洲素人一区二区| 中文字幕一区视频| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲第一搞黄网站| 一区2区3区在线看| 亚洲另类春色国产| 亚洲图片欧美视频| 亚洲电影中文字幕在线观看| 亚洲精品乱码久久久久久| 中文字幕日韩av资源站| 国产精品久久久久精k8| 亚洲欧洲日本在线| 亚洲综合色婷婷| 午夜伦欧美伦电影理论片| 日韩精品成人一区二区三区| 日韩精品一二三区| 狠狠色伊人亚洲综合成人| 国内国产精品久久| youjizz国产精品| 91欧美激情一区二区三区成人| 91麻豆精品秘密| 欧美日韩亚洲综合一区| 日韩欧美自拍偷拍| 国产片一区二区| 亚洲色欲色欲www| 天堂成人免费av电影一区| 激情综合色综合久久| 国产白丝精品91爽爽久久| 成人app软件下载大全免费| 在线亚洲高清视频| 日韩一区和二区| 久久精品免费在线观看| 亚洲欧美韩国综合色| 免费高清视频精品| 国产成人综合自拍| 欧美性一级生活| 久久精子c满五个校花| 亚洲人亚洲人成电影网站色| 视频一区视频二区中文| 国产麻豆精品视频| 欧美性色综合网| 国产日产欧美精品一区二区三区| 亚洲女厕所小便bbb| 蜜桃久久av一区| 91丨porny丨蝌蚪视频| 日韩天堂在线观看| 国产精品国产a级| 亚洲福利视频导航| 国产精品99精品久久免费| 欧美日韩亚洲综合一区| 亚洲国产精品成人综合色在线婷婷 | 免费高清在线视频一区·| 成人国产精品免费| 日韩一级成人av| 亚洲人吸女人奶水| 国产99精品在线观看| 欧美一级搡bbbb搡bbbb| 亚洲制服丝袜av| a在线欧美一区|