OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimAppTileCache.h
Go to the documentation of this file.
1 //******************************************************************
2 // Copyright (C) 2000 ImageLinks Inc.
3 //
4 // License: MIT
5 //
6 // See LICENSE.txt file in the top level directory for more details.
7 //
8 // Author: Garrett Potts
9 //
10 // Description: This file contains the Application cache algorithm
11 //
12 //***********************************
13 // $Id: ossimAppTileCache.h 15766 2009-10-20 12:37:09Z gpotts $
14 #ifndef ossimAppTileCache_HEADER
15 #define ossimAppTileCache_HEADER
16 #include <map>
17 #include <list>
18 using namespace std;
19 
21 #include <ossim/base/ossimDpt3d.h>
22 #include <ossim/base/ossimRefPtr.h>
23 // class ossimTile;
24 class ossimTileCache;
25 class ossimDataObject;
26 
28 {
29 public:
30  static const ossim_uint32 DEFAULT_SIZE;
31 
33 
36  typedef map<ossimAppCacheId, ossimTileCache*>::iterator AppIdIterator;
37 
39 
43  static ossimAppTileCache *instance(ossim_uint32 maxSize = 0);
44 
49  ossimAppCacheId newTileCache(ossim_uint32 bucketSize=DEFAULT_BUCKET_SIZE);
50 
56  const ossimDpt3d &origin,
57  ossim_uint32 resLevel=0);
58 
64  const ossimDpt3d &origin,
65  unsigned long resLevel);
70  const ossimDpt3d &origin,
71  const ossimDataObject* data,
72  ossim_uint32 resLevel=0);
73 
78  void deleteCache(ossimAppCacheId appId);
79 protected:
80 
82  {
83  public:
85  const ossimDpt3d& origin,
86  ossim_uint32 resLevel)
87  :theAppCacheId(appId),
88  theOrigin(origin),
89  theResLevel(resLevel)
90  {}
94 
96  {
97  return (theAppCacheId == rhs.theAppCacheId &&
98  theOrigin == rhs.theOrigin &&
99  theResLevel == rhs.theResLevel);
100  }
101 
102  };
103 
104  ossimAppTileCache(ossim_uint32 maxSize = DEFAULT_SIZE)
105  :
106  theMaxCacheSize(maxSize),
107  theCurrentCacheSize(0)
108  {}
109 
110  void deleteAll();
114  ossimTileCache* get(ossimAppCacheId id);
115 
120  void deleteAppCacheFromQueue(ossimAppCacheId appId);
121 
125  void removeTileFromQueue(ossimAppCacheId appId,
126  const ossimDpt3d &origin,
127  ossim_uint32 resLevel);
128 
129  void adjustQueue(ossimAppCacheId id,
130  const ossimDpt3d &origin,
131  ossim_uint32 resLevel);
137  ossimRefPtr<ossimDataObject> removeTile();
138 
139 
148  map<ossimAppCacheId, ossimTileCache*> theAppCache;
149 
155 
156 
161 
162 
166  list<ossimAppCacheTileInfo> theUsedQueue;
167 
168 };
169 
170 #endif
static ossimAppTileCache * theInstance
static const ossim_uint32 DEFAULT_SIZE
ossim_int32 ossimTileId
ossim_uint32 theCurrentCacheSize
ossimAppTileCache(ossim_uint32 maxSize=DEFAULT_SIZE)
map< ossimAppCacheId, ossimTileCache * > theAppCache
static ossimAppCacheId theUniqueAppIdCounter
list< ossimAppCacheTileInfo > theUsedQueue
ossim_int32 ossimAppCacheId
unsigned int ossim_uint32
bool operator==(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:101
ossim_uint32 theMaxGlobalCacheSize
ossimAppCacheTileInfo(ossimAppCacheId appId, const ossimDpt3d &origin, ossim_uint32 resLevel)
static const ossim_uint32 DEFAULT_BUCKET_SIZE
map< ossimAppCacheId, ossimTileCache * >::iterator AppIdIterator
ossim_uint32 theMaxCacheSize
int ossim_int32