summaryrefslogtreecommitdiff
authorzecke <zecke>2005-02-08 23:00:37 (UTC)
committer zecke <zecke>2005-02-08 23:00:37 (UTC)
commit80144c63f04e798b10a966402f235d236e3e540f (patch) (side-by-side diff)
treef3d986c4f58a8730b4a30008aadf97b70ef4c9ce
parentf24d8318de30b47ec8f877293fd175deaa0b914c (diff)
downloadopie-80144c63f04e798b10a966402f235d236e3e540f.zip
opie-80144c63f04e798b10a966402f235d236e3e540f.tar.gz
opie-80144c63f04e798b10a966402f235d236e3e540f.tar.bz2
Remove the debug output of the ConfigCache
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/config.cpp1
1 files changed, 0 insertions, 1 deletions
diff --git a/library/config.cpp b/library/config.cpp
index e9cae4c..72bd4d2 100644
--- a/library/config.cpp
+++ b/library/config.cpp
@@ -86,129 +86,128 @@ public:
time_t mtime;
unsigned int size;
struct timeval used;
};
class ConfigCache : public QObject {
public:
static ConfigCache* instance();
void insert( const QString& fileName, const ConfigGroupMap& cfg,
const ConfigPrivate *priv );
bool find(const QString& fileName, ConfigGroupMap& cfg,
ConfigPrivate** priv );
protected:
void timerEvent( QTimerEvent* );
private:
ConfigCache();
void remove( const QString& fileName );
void removeLru();
private:
QMap<QString, ConfigData> m_cached;
unsigned int m_totalSize;
int m_tid;
private:
static ConfigCache* m_inst;
static const unsigned int CONFIG_CACHE_SIZE = 8192;
static const unsigned int CONFIG_CACHE_TIMEOUT = 1000;
};
ConfigCache* ConfigCache::m_inst = 0;
/*
* get destroyed when qApp gets destroyed
*/
ConfigCache::ConfigCache() : QObject( qApp ), m_totalSize( 0 ), m_tid( 0 ) {}
ConfigCache* ConfigCache::instance() {
if ( !m_inst )
m_inst = new ConfigCache();
return m_inst;
}
void ConfigCache::remove( const QString& fileName ) {
QMap<QString, ConfigData>::Iterator it = m_cached.find( fileName );
if ( it == m_cached.end() )
return;
m_totalSize -= (*it).size;
m_cached.remove( it );
}
void ConfigCache::removeLru() {
QMap<QString, ConfigData>::Iterator it = m_cached.begin();
QMap<QString, ConfigData>::Iterator lru = it;
++it;
for (; it != m_cached.end(); ++it)
if ((*it).used.tv_sec < (*lru).used.tv_sec ||
((*it).used.tv_sec == (*lru).used.tv_sec &&
(*it).used.tv_usec < (*lru).used.tv_usec))
lru = it;
- qWarning( "Removing item" );
m_totalSize -= (*lru).size;
m_cached.remove(lru);
}
void ConfigCache::timerEvent( QTimerEvent* ) {
while ( m_totalSize > CONFIG_CACHE_SIZE )
removeLru();
killTimer(m_tid);
m_tid = 0;
}
void ConfigCache::insert( const QString& fileName, const ConfigGroupMap& cfg,
const ConfigPrivate* _priv ) {
struct stat sbuf;
::stat( QFile::encodeName(fileName), &sbuf );
if ( static_cast<unsigned int>(sbuf.st_size) >= CONFIG_CACHE_SIZE>>1)
return;
/*
* remove the old version and use the new one
*/
ConfigPrivate priv = _priv ? *_priv : ConfigPrivate();
ConfigData data( cfg, priv, sbuf );
m_totalSize += data.size;
remove( fileName );
m_cached.insert( fileName, data );
/*
* we've overcommited allocation, let us clean up
* soon
*/
if ( m_totalSize >= CONFIG_CACHE_SIZE )
if ( !m_tid )
m_tid = startTimer(CONFIG_CACHE_TIMEOUT);
}
bool ConfigCache::find( const QString& fileName, ConfigGroupMap& cfg,
ConfigPrivate **ppriv ) {
QMap<QString, ConfigData>::Iterator it = m_cached.find(fileName);
if (it != m_cached.end()) {
ConfigData &data = *it;
struct stat sbuf;
::stat(QFile::encodeName( fileName ), &sbuf);
if (data.mtime == sbuf.st_mtime && (int)data.size == sbuf.st_size) {
cfg = data.cfg;
/*
* null pointer
*/
if ( *ppriv == 0 )
*ppriv = new ConfigPrivate( data.priv );
**ppriv = data.priv;
gettimeofday(&data.used, 0);
return true;
}
}
return false;