Mercurial > fife-parpg
comparison engine/core/util/resource/pool.cpp @ 149:823544621b5b
Removed the pool listener interface as purpose
was unclear and it was unused and not exposed either.
Minor cleanups and documentation.
author | phoku@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sat, 11 Oct 2008 06:23:45 +0000 |
parents | 72c25cc27d8b |
children | 679ed3e15513 |
comparison
equal
deleted
inserted
replaced
148:72c25cc27d8b | 149:823544621b5b |
---|---|
36 static Logger _log(LM_POOL); | 36 static Logger _log(LM_POOL); |
37 | 37 |
38 Pool::Pool(const std::string& name): | 38 Pool::Pool(const std::string& name): |
39 m_entries(), | 39 m_entries(), |
40 m_location_to_entry(), | 40 m_location_to_entry(), |
41 m_listeners(), | |
42 m_loaders(), | 41 m_loaders(), |
43 m_curind(0), | |
44 m_name(name) | 42 m_name(name) |
45 { | 43 { |
46 } | 44 } |
47 | 45 |
48 Pool::~Pool() { | 46 Pool::~Pool() { |
55 delete (*loader); | 53 delete (*loader); |
56 } | 54 } |
57 } | 55 } |
58 | 56 |
59 void Pool::reset() { | 57 void Pool::reset() { |
60 std::vector<IPoolListener*>::iterator listener; | |
61 for (listener = m_listeners.begin(); listener != m_listeners.end(); listener++) { | |
62 (*listener)->poolCleared(); | |
63 } | |
64 std::vector<PoolEntry*>::iterator entry; | 58 std::vector<PoolEntry*>::iterator entry; |
65 for (entry = m_entries.begin(); entry != m_entries.end(); entry++) { | 59 for (entry = m_entries.begin(); entry != m_entries.end(); entry++) { |
66 // Warn about leaks, but at least display ALL of them | 60 // Warn about leaks, but at least display ALL of them |
67 // Instead of bailing out with an exception in the FifeClass destructor. | 61 // Instead of bailing out with an exception in the FifeClass destructor. |
68 if( (*entry)->resource && (*entry)->resource->getRefCount() > 0 ) { | 62 if( (*entry)->resource && (*entry)->resource->getRefCount() > 0 ) { |
74 m_entries.clear(); | 68 m_entries.clear(); |
75 m_location_to_entry.clear(); | 69 m_location_to_entry.clear(); |
76 } | 70 } |
77 | 71 |
78 int Pool::purgeLoadedResources() { | 72 int Pool::purgeLoadedResources() { |
79 std::vector<IPoolListener*>::iterator listener; | |
80 for (listener = m_listeners.begin(); listener != m_listeners.end(); listener++) { | |
81 (*listener)->poolCleared(); | |
82 } | |
83 int count = 0; | 73 int count = 0; |
84 std::vector<PoolEntry*>::iterator it; | 74 std::vector<PoolEntry*>::iterator it; |
85 for (it = m_entries.begin(); it != m_entries.end(); it++) { | 75 for (it = m_entries.begin(); it != m_entries.end(); it++) { |
86 PoolEntry* entry = *it; | 76 PoolEntry* entry = *it; |
87 if( entry->resource && entry->resource->getRefCount() == 0 ) { | 77 if( entry->resource && entry->resource->getRefCount() == 0 ) { |
138 FL_ERR(_log, msg); | 128 FL_ERR(_log, msg); |
139 | 129 |
140 throw NotFound(msg.str); | 130 throw NotFound(msg.str); |
141 } | 131 } |
142 | 132 |
133 // This branch will only be relevant if the resource has been | |
134 // loaded successfully before, but for some reason the loader | |
135 // can't load the resource anymore. | |
136 // Maybe someone deleted a file under FIFE's hands? | |
143 if (!entry->resource) { | 137 if (!entry->resource) { |
144 LMsg msg("No loader was able to load the requested resource "); | 138 LMsg msg("The loader was unable to load the resource "); |
145 msg << "#" << index << "<" << entry->location->getFilename() | 139 msg << "#" << index << "<" << entry->location->getFilename() |
146 << "> in pool " << m_name; | 140 << "> in pool " << m_name; |
147 FL_ERR(_log, msg); | 141 FL_ERR(_log, msg); |
148 throw NotFound(msg.str); | 142 throw NotFound(msg.str); |
149 } | 143 } |
194 amount++; | 188 amount++; |
195 } | 189 } |
196 } | 190 } |
197 } | 191 } |
198 return amount; | 192 return amount; |
199 } | |
200 | |
201 void Pool::addPoolListener(IPoolListener* listener) { | |
202 m_listeners.push_back(listener); | |
203 } | |
204 | |
205 void Pool::removePoolListener(IPoolListener* listener) { | |
206 std::vector<IPoolListener*>::iterator i = m_listeners.begin(); | |
207 while (i != m_listeners.end()) { | |
208 if ((*i) == listener) { | |
209 m_listeners.erase(i); | |
210 return; | |
211 } | |
212 ++i; | |
213 } | |
214 } | 193 } |
215 | 194 |
216 void Pool::findAndSetProvider(PoolEntry& entry) { | 195 void Pool::findAndSetProvider(PoolEntry& entry) { |
217 std::vector<ResourceLoader*>::iterator it = m_loaders.begin(); | 196 std::vector<ResourceLoader*>::iterator it = m_loaders.begin(); |
218 std::vector<ResourceLoader*>::iterator end = m_loaders.end(); | 197 std::vector<ResourceLoader*>::iterator end = m_loaders.end(); |