summaryrefslogtreecommitdiff
path: root/apps/JAWS2/JAWS/Cache_Hash_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'apps/JAWS2/JAWS/Cache_Hash_T.cpp')
-rw-r--r--apps/JAWS2/JAWS/Cache_Hash_T.cpp237
1 files changed, 0 insertions, 237 deletions
diff --git a/apps/JAWS2/JAWS/Cache_Hash_T.cpp b/apps/JAWS2/JAWS/Cache_Hash_T.cpp
deleted file mode 100644
index a908c4147f1..00000000000
--- a/apps/JAWS2/JAWS/Cache_Hash_T.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-// $Id$
-
-#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 */