/* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #ifndef ABSTRACT_MODEL_LOADER_H #define ABSTRACT_MODEL_LOADER_H #include #include class AbstractModelLoader { public: AbstractModelLoader(const BMessenger& target, void* targetCookie); protected: virtual ~AbstractModelLoader(); public: virtual status_t StartLoading(); virtual void Abort(bool wait); virtual void Delete(); protected: virtual status_t PrepareForLoading(); virtual status_t Load(); virtual void FinishLoading(bool success); void NotifyTarget(bool success); private: static status_t _LoaderEntry(void* data); status_t _Loader(); protected: BLocker fLock; BMessenger fTarget; void* fTargetCookie; thread_id fLoaderThread; bool fLoading; bool fAborted; }; #endif // ABSTRACT_MODEL_LOADER_H