aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2010-04-30 05:44:39 +0000
committerMike Buland <eichlan@xagasoft.com>2010-04-30 05:44:39 +0000
commitdaa25c26e99eb62a4ce499f8079b15734987ac0d (patch)
tree7b76a052f0bb1f5d72957838d12e0c49dfd7c093 /src
parent1889b55dcbb3f5c5cccc3bcd986b13d0d108ed6c (diff)
downloadlibbu++-daa25c26e99eb62a4ce499f8079b15734987ac0d.tar.gz
libbu++-daa25c26e99eb62a4ce499f8079b15734987ac0d.tar.bz2
libbu++-daa25c26e99eb62a4ce499f8079b15734987ac0d.tar.xz
libbu++-daa25c26e99eb62a4ce499f8079b15734987ac0d.zip
Many minor fixes to the caching system, membuf, and others, but mainly some
important fixes for real-life use of the system.
Diffstat (limited to 'src')
-rw-r--r--src/cache.h17
-rw-r--r--src/cachestoremyriad.h5
-rw-r--r--src/cachestorenids.h5
-rw-r--r--src/membuf.cpp6
-rw-r--r--src/membuf.h1
5 files changed, 20 insertions, 14 deletions
diff --git a/src/cache.h b/src/cache.h
index 987443c..06b798c 100644
--- a/src/cache.h
+++ b/src/cache.h
@@ -205,6 +205,12 @@ namespace Bu
205 virtual ~Cache() 205 virtual ~Cache()
206 { 206 {
207 TRACE(); 207 TRACE();
208
209 // Better safe than sorry, better try a sync before anything
210 // else happens.
211 sync();
212
213 // Cycle through and unload all objects from the system.
208 for( typename CidHash::iterator i = hEnt.begin(); 214 for( typename CidHash::iterator i = hEnt.begin();
209 i != hEnt.end(); i++ ) 215 i != hEnt.end(); i++ )
210 { 216 {
@@ -214,10 +220,6 @@ namespace Bu
214 // object when the Cache is destroyed. 220 // object when the Cache is destroyed.
215 throw Bu::ExceptionBase("iRefs not zero."); 221 throw Bu::ExceptionBase("iRefs not zero.");
216 } 222 }
217 pCalc->onUnload(
218 i.getValue().pData,
219 i.getKey()
220 );
221 pStore->unload( 223 pStore->unload(
222 i.getValue().pData, 224 i.getValue().pData,
223 i.getKey() 225 i.getKey()
@@ -230,6 +232,8 @@ namespace Bu
230 Ptr insert( obtype *pData ) 232 Ptr insert( obtype *pData )
231 { 233 {
232 TRACE( pData ); 234 TRACE( pData );
235 if( pStore->has( __cacheGetKey<keytype, obtype>( pData ) ) )
236 throw Bu::ExceptionBase("Key already exists in cache.");
233 CacheEntry e = {pData, 0, 0}; 237 CacheEntry e = {pData, 0, 0};
234 keytype k = pStore->create( pData ); 238 keytype k = pStore->create( pData );
235 hEnt.insert( k, e ); 239 hEnt.insert( k, e );
@@ -336,6 +340,11 @@ namespace Bu
336 return pStore->getKeys(); 340 return pStore->getKeys();
337 } 341 }
338 342
343 KeyList getActiveKeys()
344 {
345 return hEnt.getKeys();
346 }
347
339 int getSize() 348 int getSize()
340 { 349 {
341 return pStore->getSize(); 350 return pStore->getSize();
diff --git a/src/cachestoremyriad.h b/src/cachestoremyriad.h
index e5a10eb..3ae3ec8 100644
--- a/src/cachestoremyriad.h
+++ b/src/cachestoremyriad.h
@@ -88,9 +88,6 @@ namespace Bu
88 88
89 virtual void unload( obtype *pObj, const keytype &key ) 89 virtual void unload( obtype *pObj, const keytype &key )
90 { 90 {
91 int iStream = hId.get( key );
92 MyriadStream ns = mStore.openStream( iStream );
93 __cacheStoreMyriadStore<keytype, obtype>( ns, *pObj, key );
94 delete pObj; 91 delete pObj;
95 } 92 }
96 93
@@ -109,8 +106,6 @@ namespace Bu
109 MyriadStream ns = mStore.openStream( 1 ); 106 MyriadStream ns = mStore.openStream( 1 );
110 Bu::Archive ar( ns, Bu::Archive::save ); 107 Bu::Archive ar( ns, Bu::Archive::save );
111 ar << hId; 108 ar << hId;
112
113 mStore.sync();
114 } 109 }
115 110
116 virtual void sync( obtype *pSrc, const keytype &key ) 111 virtual void sync( obtype *pSrc, const keytype &key )
diff --git a/src/cachestorenids.h b/src/cachestorenids.h
index c9e8fd1..54129b0 100644
--- a/src/cachestorenids.h
+++ b/src/cachestorenids.h
@@ -89,9 +89,6 @@ namespace Bu
89 89
90 virtual void unload( obtype *pObj, const keytype &key ) 90 virtual void unload( obtype *pObj, const keytype &key )
91 { 91 {
92 int iStream = hId.get( key );
93 NidsStream ns = nStore.openStream( iStream );
94 __cacheStoreNidsStore<keytype, obtype>( ns, *pObj, key );
95 delete pObj; 92 delete pObj;
96 } 93 }
97 94
@@ -110,8 +107,6 @@ namespace Bu
110 NidsStream ns = nStore.openStream( 0 ); 107 NidsStream ns = nStore.openStream( 0 );
111 Bu::Archive ar( ns, Bu::Archive::save ); 108 Bu::Archive ar( ns, Bu::Archive::save );
112 ar << hId; 109 ar << hId;
113
114 nStore.sync();
115 } 110 }
116 111
117 virtual void sync( obtype *pSrc, const keytype &key ) 112 virtual void sync( obtype *pSrc, const keytype &key )
diff --git a/src/membuf.cpp b/src/membuf.cpp
index fc2ebfa..0c1c441 100644
--- a/src/membuf.cpp
+++ b/src/membuf.cpp
@@ -145,3 +145,9 @@ Bu::FString &Bu::MemBuf::getString()
145 return sBuf; 145 return sBuf;
146} 146}
147 147
148void Bu::MemBuf::setString( const Bu::FString &sNewData )
149{
150 sBuf = sNewData;
151 nPos = 0;
152}
153
diff --git a/src/membuf.h b/src/membuf.h
index 3de8552..c6c8079 100644
--- a/src/membuf.h
+++ b/src/membuf.h
@@ -47,6 +47,7 @@ namespace Bu
47 virtual void setBlocking( bool bBlocking=true ); 47 virtual void setBlocking( bool bBlocking=true );
48 48
49 Bu::FString &getString(); 49 Bu::FString &getString();
50 void setString( const Bu::FString &sNewData );
50 51
51 private: 52 private:
52 Bu::FString sBuf; 53 Bu::FString sBuf;