diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tests/cache.cpp | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/tests/cache.cpp b/src/tests/cache.cpp index 00a32dd..5731a6a 100644 --- a/src/tests/cache.cpp +++ b/src/tests/cache.cpp | |||
@@ -5,6 +5,7 @@ | |||
5 | #include <bu/myriadstream.h> | 5 | #include <bu/myriadstream.h> |
6 | #include <bu/file.h> | 6 | #include <bu/file.h> |
7 | #include <bu/streamstack.h> | 7 | #include <bu/streamstack.h> |
8 | #include <bu/readwritemutex.h> | ||
8 | 9 | ||
9 | // | 10 | // |
10 | // New Cache Implementation | 11 | // New Cache Implementation |
@@ -29,8 +30,8 @@ public: | |||
29 | 30 | ||
30 | typedef CacheBase<keytype, obtype> CacheType; | 31 | typedef CacheBase<keytype, obtype> CacheType; |
31 | 32 | ||
32 | virtual const keytype getKey() const=0; | 33 | virtual keytype getKey() const=0; |
33 | virtual const int getPersistenceScore() const { return 0; } | 34 | virtual int getPersistenceScore() const { return 0; } |
34 | 35 | ||
35 | void changed( bool bChanged=true ) | 36 | void changed( bool bChanged=true ) |
36 | { | 37 | { |
@@ -55,14 +56,31 @@ template<typename keytype, typename obtype, typename basetype=obtype> | |||
55 | class CachePtr | 56 | class CachePtr |
56 | { | 57 | { |
57 | friend class CacheBase<keytype, basetype>; | 58 | friend class CacheBase<keytype, basetype>; |
58 | public: | 59 | private: |
59 | CachePtr() | 60 | CachePtr( CacheBase<keytype, basetype> *pCache, obtype *pData, const keytype &kId ) : |
61 | pCache( pCache ), | ||
62 | kId( kId ), | ||
63 | pData( pData ) | ||
60 | { | 64 | { |
61 | } | 65 | } |
62 | 66 | ||
67 | CachePtr( CacheBase<keytype, basetype> *pCache, const keytype &kId ) : | ||
68 | pCache( pCache ), | ||
69 | kId( kId ), | ||
70 | pData( NULL ) | ||
71 | { | ||
72 | } | ||
73 | |||
74 | public: | ||
63 | virtual ~CachePtr() | 75 | virtual ~CachePtr() |
64 | { | 76 | { |
65 | } | 77 | } |
78 | |||
79 | private: | ||
80 | CacheBase<keytype, basetype> *pCache; | ||
81 | mutable keytype kId; | ||
82 | mutable obtype *pData; | ||
83 | |||
66 | }; | 84 | }; |
67 | 85 | ||
68 | template<typename keytype, typename obtype> | 86 | template<typename keytype, typename obtype> |
@@ -78,6 +96,11 @@ public: | |||
78 | } | 96 | } |
79 | 97 | ||
80 | protected: | 98 | protected: |
99 | void objectChanged( const keytype &k ) | ||
100 | { | ||
101 | } | ||
102 | |||
103 | protected: | ||
81 | virtual void _create( obtype *o )=0; | 104 | virtual void _create( obtype *o )=0; |
82 | virtual void _erase( const keytype &k )=0; | 105 | virtual void _erase( const keytype &k )=0; |
83 | 106 | ||
@@ -175,7 +198,7 @@ public: | |||
175 | { | 198 | { |
176 | } | 199 | } |
177 | 200 | ||
178 | virtual const Bu::Uuid getKey() const | 201 | virtual Bu::Uuid getKey() const |
179 | { | 202 | { |
180 | return uId; | 203 | return uId; |
181 | } | 204 | } |