xref: /haiku/src/apps/debuganalyzer/model_loader/AbstractModelLoader.h (revision 0d85a0853c9857954073d828c9c31eb49ae46a22)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef ABSTRACT_MODEL_LOADER_H
6 #define ABSTRACT_MODEL_LOADER_H
7 
8 #include <Locker.h>
9 #include <Messenger.h>
10 
11 
12 class AbstractModelLoader {
13 public:
14 								AbstractModelLoader(const BMessenger& target,
15 									void* targetCookie);
16 
17 protected:
18 	virtual						~AbstractModelLoader();
19 
20 public:
21 	virtual	status_t			StartLoading();
22 	virtual	void				Abort(bool wait);
23 	virtual	void				Delete();
24 
25 protected:
26 	virtual	status_t			PrepareForLoading();
27 	virtual	status_t			Load();
28 	virtual	void				FinishLoading(bool success);
29 
30 			void				NotifyTarget(bool success);
31 
32 private:
33 	static	status_t			_LoaderEntry(void* data);
34 			status_t			_Loader();
35 
36 protected:
37 			BLocker				fLock;
38 			BMessenger			fTarget;
39 			void*				fTargetCookie;
40 			thread_id			fLoaderThread;
41 			bool				fLoading;
42 			bool				fAborted;
43 };
44 
45 
46 #endif	// ABSTRACT_MODEL_LOADER_H
47