From bcb704366cb5e333a626c18c308c7e0448a8e69f Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- dcoprss/cache.h | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 dcoprss/cache.h (limited to 'dcoprss/cache.h') diff --git a/dcoprss/cache.h b/dcoprss/cache.h new file mode 100644 index 00000000..8248b609 --- /dev/null +++ b/dcoprss/cache.h @@ -0,0 +1,86 @@ +/* + * cache.h - (c) 2003 Frerich Raabe + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef CACHE_H +#define CACHE_H + +#include +#include +#include + +#include + +class CacheEntry +{ + friend class Cache; + friend QDataStream &operator>>( QDataStream &s, CacheEntry &e ); + public: + const QDateTime &timeStamp() const { return m_timeStamp; } + const KXMLRPC::Query::Result result() const { return m_result; } + bool isValid() const; + + private: + QDateTime m_timeStamp; + KXMLRPC::Query::Result m_result; +}; + +class Cache : public QDict +{ + public: + static Cache &self(); + + static QString getCacheKey( const QString &server, + const QString &method, + const QValueList &args ); + + void load(); + void save(); + + void touch( const QString &key ); + + void insert( const QString &key, const KXMLRPC::Query::Result &result ); + + private: + Cache(); + Cache( const Cache &rhs ); // disabled + Cache &operator=( const Cache &rhs ); // disabled + ~Cache(); + + QString cacheFileName() const; + + static Cache *m_instance; +}; + +inline QDataStream &operator<<( QDataStream &s, const CacheEntry &e ) +{ + return s << e.timeStamp() << e.result(); +} + +inline QDataStream &operator>>( QDataStream &s, CacheEntry &e ) +{ + return s >> e.m_timeStamp >> e.m_result; +} + +#endif // CACHE_H +// vim:ts=4:sw=4:noet -- cgit v1.2.1