summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS3/jaws3-todo/Map_Manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS3/jaws3-todo/Map_Manager.h')
-rw-r--r--ACE/apps/JAWS3/jaws3-todo/Map_Manager.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/ACE/apps/JAWS3/jaws3-todo/Map_Manager.h b/ACE/apps/JAWS3/jaws3-todo/Map_Manager.h
new file mode 100644
index 00000000000..7452ddb21e8
--- /dev/null
+++ b/ACE/apps/JAWS3/jaws3-todo/Map_Manager.h
@@ -0,0 +1,148 @@
+/* -*- c++ -*- */
+// $Id$
+
+#ifndef JAWS_CACHE_MAP_MANAGER_H
+#define JAWS_CACHE_MAP_MANAGER_H
+
+template <class EXT_ID>
+class JAWS_Cache_Map_Entry
+{
+public:
+
+ JAWS_Cache_Map_Entry ( const EXT_ID &ext_id
+ , ACE_Message_Block *&int_id
+ , JAWS_Cache_Map_Entry<EXT_ID, INT_ID> *next = 0
+ , JAWS_Cache_Map_Entry<EXT_ID, INT_ID> *prev = 0
+ );
+
+ JAWS_Cache_Map_Entry ( JAWS_Cache_Map_Entry<EXT_ID, INT_ID> *next
+ , JAWS_Cache_Map_Entry<EXT_ID, INT_ID> *prev
+ );
+
+private:
+
+ ~JAWS_Cache_Map_Entry (void) {}
+
+public:
+
+ EXT_ID ext_id_;
+ ACE_Message_Block *int_id_;
+
+ time_t last_update_;
+ int ref_count_;
+
+ JAWS_Cache_Map_Entry<EXT_ID, INT_ID> *next_;
+ JAWS_Cache_Map_Entry<EXT_ID, INT_ID> *prev_;
+
+};
+
+
+template <class EXT_ID, class EQ_FUNC, class ACE_LOCK>
+class JAWS_Map_Manager
+{
+public:
+
+ JAWS_Map_Manager (ACE_Allocator *alloc = 0);
+ JAWS_Map_Manager (size_t size, ACE_Allocator *alloc = 0);
+
+ int open ( size_t size = ACE_DEFAULT_MAP_SIZE
+ , ACE_Allocator *alloc = 0);
+
+ int close (void);
+
+ ~JAWS_Map_Manager (void);
+
+ int bind ( const EXT_ID &key
+ , const void * const &data
+ , size_t size
+ , JAWS_Cache_Map_Entry<EXT_ID> *&entry
+ );
+
+ int rebind ( const EXT_ID &key
+ , const void * const &data
+ , size_t size
+ , JAWS_Cache_Map_Entry<EXT_ID> *&entry
+ );
+
+ int find (const EXT_ID &key, JAWS_Cache_Map_Entry<EXT_ID> *&entry);
+
+ int unbind (JAWS_Cache_Map_Entry<EXT_ID> *entry);
+
+ ACE_Message_Block * make_message_block ( const void * const &data
+ , size_t size);
+
+ ACE_LOCK lock_;
+
+ JAWS_Cache_Map_Entry<EXT_ID> *head_;
+ JAWS_Cache_Map_Entry<EXT_ID> *tail_;
+
+ ACE_Allocator *allocator_;
+
+};
+
+template <class EXT_ID, class ACE_LOCK>
+class JAWS_Cache_Replacement
+{
+public:
+
+ JAWS_Cache_Replacement (ACE_Allocator *alloc = 0);
+ JAWS_Cache_Replacement (size_t max_entries, ACE_Allocator *alloc = 0);
+
+ virtual int open ( size_t max_entries = ACE_DEFAULT_MAP_SIZE
+ , ACE_Allocator *alloc = 0);
+
+ virtual int close (void);
+
+ virtual ~JAWS_Cache_Replacement (void);
+
+ virtual int insert (JAWS_Cache_Map_Entry<EXT_ID> *entry) = 0;
+ virtual int update (JAWS_Cache_Map_Entry<EXT_ID> *entry) = 0;
+ virtual int remove (JAWS_Cache_Map_Entry<EXT_ID> *entry) = 0;
+ virtual int expire (JAWS_Cache_Map_Entry<EXT_ID> *&entry) = 0;
+
+ JAWS_Cache_Map_Entry<EXT_ID> *table_;
+
+ ACE_Allocator *allocator_;
+ ACE_LOCK lock_;
+
+};
+
+template <class EXT_ID, class ACE_LOCK>
+class JAWS_LRU_Cache_Replacement
+ : public JAWS_Cache_Replacement<EXT_ID, ACE_LOCK>
+{
+public:
+
+ JAWS_LRU_Cache_Replacement (ACE_Allocator *alloc = 0);
+ JAWS_LRU_Cache_Replacement (size_t max_entries, ACE_Allocator *alloc = 0);
+
+ int open ( size_t max_entries = ACE_DEFAULT_MAP_SIZE
+ , ACE_Allocator *alloc = 0);
+
+ int close (void);
+
+ ~JAWS_LRU_Cache_Replacement (void);
+
+ int insert (JAWS_Cache_Map_Entry<EXT_ID> *entry);
+ int update (JAWS_Cache_Map_Entry<EXT_ID> *entry);
+ int remove (JAWS_Cache_Map_Entry<EXT_ID> *entry);
+ int expire (JAWS_Cache_Map_Entry<EXT_ID> *&entry);
+
+ int head_;
+ int tail_;
+
+ JAWS_LRU_Cache_Replacement_Info *info_;
+
+};
+
+
+template <class EXT_ID, class INT_ID, class HASH_FUNC, class EQ_FUNC, class ACE_LOCK>
+class JAWS_Cache_Map_Manager
+{
+public:
+
+
+ JAWS_Map_Manager<EXT_ID, INT_ID, EQ_FUNC, ACE_
+};
+
+#endif /* JAWS_CACHE_MAP_MANAGER_H */