diff options
| -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 | } |
