dRonin  adbada4
dRonin GCS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Groups Pages
kibertilecache.cpp
Go to the documentation of this file.
1 
13 /*
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful, but
20 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
21 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 * for more details.
23 *
24 * You should have received a copy of the GNU General Public License along
25 * with this program; if not, see <http://www.gnu.org/licenses/>
26 */
27 #include "kibertilecache.h"
28 
29 //TODO add readwrite lock
30 
31 namespace core {
33  {
34  memoryCacheSize = 0;
35  _MemoryCacheCapacity = 22;
36  }
37 
39  {
40  kiberCacheLock.lockForWrite();
41  _MemoryCacheCapacity=value;
42  kiberCacheLock.unlock();
43  }
45  {
46  kiberCacheLock.lockForRead();
47  int ret = _MemoryCacheCapacity;
48  kiberCacheLock.unlock();
49  return ret;
50  }
51 
53  {
55  {
56  if(cachequeue.count()>0 && list.count()>0)
57  {
58 #ifdef DEBUG_MEMORY_CACHE
59  qDebug()<<"Cleaning Memory cache="<<" started with "<<cachequeue.count()<<" tile "<<"ocupying "<<memoryCacheSize<<" bytes";
60 #endif
61  RawTile first=list.dequeue();
62  memoryCacheSize-=cachequeue.value(first).size();
63  cachequeue.remove(first);
64  }
65  }
66 #ifdef DEBUG_MEMORY_CACHE
67  qDebug()<<"Cleaning Memory cache="<<" ended with "<<cachequeue.count()<<" tile "<<"ocupying "<<memoryCacheSize<<" bytes";
68 #endif
69  }
70 }
QHash< RawTile, QByteArray > cachequeue
void setMemoryCacheCapacity(const int &value)
QQueue< RawTile > list
QReadWriteLock kiberCacheLock