author | zecke <zecke> | 2005-02-08 23:00:37 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-02-08 23:00:37 (UTC) |
commit | 80144c63f04e798b10a966402f235d236e3e540f (patch) (side-by-side diff) | |
tree | f3d986c4f58a8730b4a30008aadf97b70ef4c9ce | |
parent | f24d8318de30b47ec8f877293fd175deaa0b914c (diff) | |
download | opie-80144c63f04e798b10a966402f235d236e3e540f.zip opie-80144c63f04e798b10a966402f235d236e3e540f.tar.gz opie-80144c63f04e798b10a966402f235d236e3e540f.tar.bz2 |
Remove the debug output of the ConfigCache
-rw-r--r-- | library/config.cpp | 1 |
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 @@ -54,193 +54,192 @@ public: { trfile = o.trfile; trcontext = o.trcontext; multilang = o.multilang; return *this; } QString trfile; QCString trcontext; bool multilang; }; ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// #ifndef Q_OS_WIN32 //#define DEBUG_CONFIG_CACHE class ConfigData { public: ConfigData() {} ConfigData( const ConfigGroupMap& cf, const ConfigPrivate& pri, struct stat sbuf ) : cfg( cf ), priv( pri ), mtime( sbuf.st_mtime ), size( sbuf.st_size ) { gettimeofday(&used, 0 ); } ConfigGroupMap cfg; ConfigPrivate priv; // Owned by this object 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; } #endif /*! \internal */ QString Config::configFilename(const QString& name, Domain d) { switch (d) { case File: return name; case User: { QDir dir = (QString(getenv("HOME")) + "/Settings"); if ( !dir.exists() ) mkdir(dir.path().local8Bit(),0700); return dir.path() + "/" + name + ".conf"; } } return name; } /* This cannot be made public because of binary compat issues */ void Config::read( QTextStream &s ) { #if QT_VERSION <= 230 && defined(QT_NO_CODECS) // The below should work, but doesn't in Qt 2.3.0 s.setCodec( QTextCodec::codecForMib( 106 ) ); #else s.setEncoding( QTextStream::UnicodeUTF8 ); #endif |