1/*
2 * Copyright 2017 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Brian Hill
7 */
8#ifndef TASK_LOOPER_H
9#define TASK_LOOPER_H
10
11
12#include <Job.h>
13#include <Looper.h>
14#include <ObjectList.h>
15#include <String.h>
16#include <StringList.h>
17#include <package/Context.h>
18
19#include "TaskTimer.h"
20
21
22class DecisionProvider : public BPackageKit::BDecisionProvider {
23public:
24								DecisionProvider() {}
25
26	virtual	bool				YesNoDecisionNeeded(const BString& description,
27									const BString& question,
28									const BString& yes,
29									const BString& no,
30									const BString& defaultChoice)
31									{ return true; }
32};
33
34
35class JobStateListener : public BSupportKit::BJobStateListener {
36public:
37								JobStateListener() {}
38
39	virtual	void				JobStarted(BSupportKit::BJob* job);
40	virtual	void				JobSucceeded(BSupportKit::BJob* job);
41	virtual	void				JobFailed(BSupportKit::BJob* job);
42	virtual	void				JobAborted(BSupportKit::BJob* job);
43	BString						GetJobLog();
44
45private:
46			BStringList			fJobLog;
47};
48
49
50class TaskLooper : public BLooper {
51public:
52							TaskLooper(const BMessenger& target);
53	virtual	bool			QuitRequested();
54	virtual void			MessageReceived(BMessage*);
55
56private:
57	void					_RemoveAndDelete(Task* task);
58	static status_t			_DoTask(void* data);
59	static void				_AppendErrorDetails(BString& details,
60								JobStateListener* listener);
61
62	BObjectList<Task>		fTaskQueue;
63	BMessenger				fReplyTarget;
64	BMessenger				fMessenger;
65};
66
67
68#endif
69