]> git.tdb.fi Git - libs/gl.git/blobdiff - source/resourcemanager.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / resourcemanager.h
diff --git a/source/resourcemanager.h b/source/resourcemanager.h
deleted file mode 100644 (file)
index 399d479..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-#ifndef MSP_GL_RESOURCEMANAGER_H_
-#define MSP_GL_RESOURCEMANAGER_H_
-
-#include <msp/core/inttypes.h>
-#include <msp/core/mutex.h>
-#include <msp/core/semaphore.h>
-#include <msp/core/thread.h>
-#include <msp/datafile/collection.h>
-#include "resource.h"
-
-namespace Msp {
-namespace GL {
-
-class ResourceWatcher;
-
-class resource_load_error: public std::runtime_error
-{
-public:
-       resource_load_error(const std::string &, const std::string &);
-       resource_load_error(const std::string &, const std::exception &);
-       virtual ~resource_load_error() throw() { }
-};
-
-
-class ResourceManager
-{
-public:
-       enum LoadingPolicy
-       {
-               LOAD_IMMEDIATELY,
-               LOAD_ON_DEMAND,
-               LOAD_MANUALLY
-       };
-
-       struct ResourceLocation
-       {
-               DataFile::Collection *collection;
-               std::string name;
-
-               ResourceLocation();
-               ResourceLocation(DataFile::Collection &, const std::string &);
-       };
-
-private:
-       struct ManagedResource
-       {
-               enum State
-               {
-                       NOT_LOADED,
-                       LOAD_QUEUED,
-                       LOADING,
-                       LOAD_FINISHED,
-                       LOADED,
-                       LOAD_ERROR
-               };
-
-               Resource *resource;
-               ResourceLocation location;
-               bool load_priority;
-               IO::Seekable *io;
-               Resource::AsyncLoader *loader;
-               State state;
-               unsigned last_used;
-               UInt64 data_size;
-               std::vector<ResourceWatcher *> watchers;
-
-               ManagedResource(Resource &);
-
-               void start_loading();
-               bool process(bool);
-               void finish_loading(bool);
-               void finish_loading();
-               void unload();
-
-               void add_watcher(ResourceWatcher &);
-               void remove_watcher(ResourceWatcher &);
-       };
-
-       typedef std::list<ManagedResource *> LoadQueue;
-
-       class LoadingThread: public Thread
-       {
-       private:
-               Semaphore sem;
-               Mutex queue_mutex;
-               LoadQueue async_queue;
-               LoadQueue sync_queue;
-               unsigned capacity;
-               unsigned size;
-               std::list<resource_load_error> error_queue;
-               volatile bool done;
-
-       public:
-               LoadingThread();
-
-       private:
-               virtual void main();
-
-               ManagedResource *front(LoadQueue &);
-
-       public:
-               void add_resource(ManagedResource &);
-               void remove_resource(ManagedResource &);
-       private:
-               bool try_remove_resource(ManagedResource &);
-       public:
-               bool sync();
-               bool needs_work() const { return size<capacity; }
-
-               void terminate();
-       };
-
-       typedef std::map<const Resource *, ManagedResource> ResourceMap;
-
-       LoadingPolicy policy;
-       bool async_loads;
-       ResourceMap resources;
-       LoadQueue queue;
-       UInt64 size_limit;
-       unsigned frame;
-       unsigned min_retain_frames;
-       unsigned max_retain_frames;
-       unsigned next_unload;
-       LoadingThread thread;
-
-public:
-       ResourceManager();
-       ~ResourceManager();
-
-       void set_loading_policy(LoadingPolicy);
-       void set_async_loads(bool);
-       void set_size_limit(UInt64);
-       void set_min_retain_frames(unsigned);
-       void set_max_retain_frames(unsigned);
-
-       void add_resource(Resource &);
-       void *get_data_for_resource(const Resource &);
-       void set_resource_location(Resource &, DataFile::Collection &, const std::string &);
-       void set_resource_location(Resource &, const ResourceLocation &);
-       const ResourceLocation *get_resource_location(const Resource &) const;
-       void load_resource(Resource &);
-       bool is_resource_loaded(const Resource &) const;
-       void resource_used(const Resource &);
-       void remove_resource(Resource &);
-
-       void watch_resource(const Resource &, ResourceWatcher &);
-       void unwatch_resource(const Resource &, ResourceWatcher &);
-
-       void tick();
-private:
-       void dispatch_work();
-       void unload_by_age();
-       void unload_by_size();
-public:
-       UInt64 get_total_data_size() const;
-
-private:
-       static bool age_order(ManagedResource *, ManagedResource *);
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif