diff options
author | Mike Buland <eichlan@xagasoft.com> | 2013-07-18 02:09:29 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2013-07-18 02:09:29 +0000 |
commit | 51eef132bb2bb67e658756eaebeae5e52c13de98 (patch) | |
tree | f99d9e36ab2b3bbcb26d106cd0a71a03f27a8eb5 | |
parent | 65cc54be0a14e627938731ff8deefea61c2c1cfa (diff) | |
download | libbu++-51eef132bb2bb67e658756eaebeae5e52c13de98.tar.gz libbu++-51eef132bb2bb67e658756eaebeae5e52c13de98.tar.bz2 libbu++-51eef132bb2bb67e658756eaebeae5e52c13de98.tar.xz libbu++-51eef132bb2bb67e658756eaebeae5e52c13de98.zip |
Fixed caching changed issue. The cache now marks objects as unchanged for you
after they are saved. It needs some more testing, but the theory is sound.
-rw-r--r-- | src/tests/cache.cpp | 5 | ||||
-rw-r--r-- | src/unstable/cachebase.h | 7 | ||||
-rw-r--r-- | src/unstable/uuid.cpp | 1 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/tests/cache.cpp b/src/tests/cache.cpp index 20b384e..7982b2d 100644 --- a/src/tests/cache.cpp +++ b/src/tests/cache.cpp | |||
@@ -171,6 +171,8 @@ namespace Bu | |||
171 | default: | 171 | default: |
172 | throw Bu::ExceptionBase("Flagrant error! Invalid type!"); | 172 | throw Bu::ExceptionBase("Flagrant error! Invalid type!"); |
173 | } | 173 | } |
174 | |||
175 | return NULL; | ||
174 | } | 176 | } |
175 | } | 177 | } |
176 | 178 | ||
@@ -179,7 +181,7 @@ typedef Bu::CachePtr<Bu::Uuid, SubSomethingA, Something> SomethingAPtr; | |||
179 | typedef Bu::CachePtr<Bu::Uuid, SubSomethingB, Something> SomethingBPtr; | 181 | typedef Bu::CachePtr<Bu::Uuid, SubSomethingB, Something> SomethingBPtr; |
180 | typedef Bu::MyriadCache<Bu::Uuid, Something> SomethingCache; | 182 | typedef Bu::MyriadCache<Bu::Uuid, Something> SomethingCache; |
181 | 183 | ||
182 | int main( int argc, char *argv[] ) | 184 | int main( int, char *[] ) |
183 | { | 185 | { |
184 | Bu::File fStore("test.myr", Bu::File::Create|Bu::File::ReadWrite); | 186 | Bu::File fStore("test.myr", Bu::File::Create|Bu::File::ReadWrite); |
185 | SomethingCache c( fStore ); | 187 | SomethingCache c( fStore ); |
@@ -196,7 +198,6 @@ int main( int argc, char *argv[] ) | |||
196 | 198 | ||
197 | SomethingCache::KeyList lKeys = c.getKeys(); | 199 | SomethingCache::KeyList lKeys = c.getKeys(); |
198 | Bu::println("Count: %1").arg( lKeys.getSize() ); | 200 | Bu::println("Count: %1").arg( lKeys.getSize() ); |
199 | int j = 0; | ||
200 | for( SomethingCache::KeyList::iterator i = lKeys.begin(); i; i++ ) | 201 | for( SomethingCache::KeyList::iterator i = lKeys.begin(); i; i++ ) |
201 | { | 202 | { |
202 | Bu::println(" - %1: '%2'").arg( *i ).arg( c.get( *i )->toString() ); | 203 | Bu::println(" - %1: '%2'").arg( *i ).arg( c.get( *i )->toString() ); |
diff --git a/src/unstable/cachebase.h b/src/unstable/cachebase.h index 6cc3e77..af2884c 100644 --- a/src/unstable/cachebase.h +++ b/src/unstable/cachebase.h | |||
@@ -184,7 +184,8 @@ namespace Bu | |||
184 | pEnt( rhs.pEnt ), | 184 | pEnt( rhs.pEnt ), |
185 | pData( rhs.pData ) | 185 | pData( rhs.pData ) |
186 | { | 186 | { |
187 | pEnt->incRef(); | 187 | if( pEnt ) |
188 | pEnt->incRef(); | ||
188 | } | 189 | } |
189 | 190 | ||
190 | virtual ~CachePtr() | 191 | virtual ~CachePtr() |
@@ -228,7 +229,8 @@ namespace Bu | |||
228 | kId = rhs.kId; | 229 | kId = rhs.kId; |
229 | pEnt = rhs.pEnt; | 230 | pEnt = rhs.pEnt; |
230 | pData = rhs.pData; | 231 | pData = rhs.pData; |
231 | pEnt->incRef(); | 232 | if( pEnt ) |
233 | pEnt->incRef(); | ||
232 | 234 | ||
233 | return *this; | 235 | return *this; |
234 | } | 236 | } |
@@ -513,6 +515,7 @@ namespace Bu | |||
513 | Entry *pEnt = hCacheEntry.get( i.getKey() ); | 515 | Entry *pEnt = hCacheEntry.get( i.getKey() ); |
514 | Bu::MutexLocker ml( pEnt->getMutex() ); | 516 | Bu::MutexLocker ml( pEnt->getMutex() ); |
515 | _save( pEnt->getPtr() ); | 517 | _save( pEnt->getPtr() ); |
518 | pEnt->getPtr()->changed( false ); | ||
516 | } | 519 | } |
517 | hChanged.clear(); | 520 | hChanged.clear(); |
518 | } | 521 | } |
diff --git a/src/unstable/uuid.cpp b/src/unstable/uuid.cpp index a93f713..304ea4a 100644 --- a/src/unstable/uuid.cpp +++ b/src/unstable/uuid.cpp | |||
@@ -77,6 +77,7 @@ int Bu::Uuid::getVersion() | |||
77 | 77 | ||
78 | void Bu::Uuid::clear() | 78 | void Bu::Uuid::clear() |
79 | { | 79 | { |
80 | memset( data, 0, 16 ); | ||
80 | data[7] = msb(0); | 81 | data[7] = msb(0); |
81 | } | 82 | } |
82 | 83 | ||