xref: /haiku/src/servers/launch/Log.cpp (revision a77aa747eaf779898d401614a11b98fe58dddf35)
1*a77aa747SAxel Dörfler /*
2*a77aa747SAxel Dörfler  * Copyright 2017-2018, Axel Dörfler, axeld@pinc-software.de.
3*a77aa747SAxel Dörfler  * Distributed under the terms of the MIT License.
4*a77aa747SAxel Dörfler  */
5*a77aa747SAxel Dörfler 
6*a77aa747SAxel Dörfler 
7*a77aa747SAxel Dörfler #include "Log.h"
8*a77aa747SAxel Dörfler 
9*a77aa747SAxel Dörfler #include <OS.h>
10*a77aa747SAxel Dörfler 
11*a77aa747SAxel Dörfler #include "Events.h"
12*a77aa747SAxel Dörfler #include "Job.h"
13*a77aa747SAxel Dörfler 
14*a77aa747SAxel Dörfler 
15*a77aa747SAxel Dörfler const size_t kMaxItems = 10000;
16*a77aa747SAxel Dörfler 
17*a77aa747SAxel Dörfler 
18*a77aa747SAxel Dörfler class AbstractJobLogItem : public LogItem {
19*a77aa747SAxel Dörfler public:
20*a77aa747SAxel Dörfler 								AbstractJobLogItem(BaseJob* job);
21*a77aa747SAxel Dörfler 	virtual						~AbstractJobLogItem();
22*a77aa747SAxel Dörfler 
23*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
24*a77aa747SAxel Dörfler 	virtual	bool				Matches(const char* jobName,
25*a77aa747SAxel Dörfler 									const char* eventName);
26*a77aa747SAxel Dörfler 
27*a77aa747SAxel Dörfler protected:
28*a77aa747SAxel Dörfler 			BaseJob*			fJob;
29*a77aa747SAxel Dörfler };
30*a77aa747SAxel Dörfler 
31*a77aa747SAxel Dörfler 
32*a77aa747SAxel Dörfler class JobInitializedLogItem : public AbstractJobLogItem {
33*a77aa747SAxel Dörfler public:
34*a77aa747SAxel Dörfler 								JobInitializedLogItem(Job* job);
35*a77aa747SAxel Dörfler 	virtual						~JobInitializedLogItem();
36*a77aa747SAxel Dörfler 
37*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
38*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
39*a77aa747SAxel Dörfler };
40*a77aa747SAxel Dörfler 
41*a77aa747SAxel Dörfler 
42*a77aa747SAxel Dörfler class JobIgnoredLogItem : public LogItem {
43*a77aa747SAxel Dörfler public:
44*a77aa747SAxel Dörfler 								JobIgnoredLogItem(Job* job, status_t error);
45*a77aa747SAxel Dörfler 	virtual						~JobIgnoredLogItem();
46*a77aa747SAxel Dörfler 
47*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
48*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
49*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
50*a77aa747SAxel Dörfler 	virtual	bool				Matches(const char* jobName,
51*a77aa747SAxel Dörfler 									const char* eventName);
52*a77aa747SAxel Dörfler 
53*a77aa747SAxel Dörfler private:
54*a77aa747SAxel Dörfler 			BString				fJobName;
55*a77aa747SAxel Dörfler 			status_t			fError;
56*a77aa747SAxel Dörfler };
57*a77aa747SAxel Dörfler 
58*a77aa747SAxel Dörfler 
59*a77aa747SAxel Dörfler class JobLaunchedLogItem : public AbstractJobLogItem {
60*a77aa747SAxel Dörfler public:
61*a77aa747SAxel Dörfler 								JobLaunchedLogItem(Job* job, status_t status);
62*a77aa747SAxel Dörfler 	virtual						~JobLaunchedLogItem();
63*a77aa747SAxel Dörfler 
64*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
65*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
66*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
67*a77aa747SAxel Dörfler 
68*a77aa747SAxel Dörfler private:
69*a77aa747SAxel Dörfler 			status_t			fStatus;
70*a77aa747SAxel Dörfler };
71*a77aa747SAxel Dörfler 
72*a77aa747SAxel Dörfler 
73*a77aa747SAxel Dörfler class JobTerminatedLogItem : public AbstractJobLogItem {
74*a77aa747SAxel Dörfler public:
75*a77aa747SAxel Dörfler 								JobTerminatedLogItem(Job* job, status_t status);
76*a77aa747SAxel Dörfler 	virtual						~JobTerminatedLogItem();
77*a77aa747SAxel Dörfler 
78*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
79*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
80*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
81*a77aa747SAxel Dörfler 
82*a77aa747SAxel Dörfler private:
83*a77aa747SAxel Dörfler 			status_t			fStatus;
84*a77aa747SAxel Dörfler };
85*a77aa747SAxel Dörfler 
86*a77aa747SAxel Dörfler 
87*a77aa747SAxel Dörfler class JobEnabledLogItem : public AbstractJobLogItem {
88*a77aa747SAxel Dörfler public:
89*a77aa747SAxel Dörfler 								JobEnabledLogItem(Job* job, bool enabled);
90*a77aa747SAxel Dörfler 	virtual						~JobEnabledLogItem();
91*a77aa747SAxel Dörfler 
92*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
93*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
94*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
95*a77aa747SAxel Dörfler 
96*a77aa747SAxel Dörfler private:
97*a77aa747SAxel Dörfler 			bool				fEnabled;
98*a77aa747SAxel Dörfler };
99*a77aa747SAxel Dörfler 
100*a77aa747SAxel Dörfler 
101*a77aa747SAxel Dörfler class JobStoppedLogItem : public AbstractJobLogItem {
102*a77aa747SAxel Dörfler public:
103*a77aa747SAxel Dörfler 								JobStoppedLogItem(BaseJob* job, bool force);
104*a77aa747SAxel Dörfler 	virtual						~JobStoppedLogItem();
105*a77aa747SAxel Dörfler 
106*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
107*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
108*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
109*a77aa747SAxel Dörfler 
110*a77aa747SAxel Dörfler private:
111*a77aa747SAxel Dörfler 			bool				fForce;
112*a77aa747SAxel Dörfler };
113*a77aa747SAxel Dörfler 
114*a77aa747SAxel Dörfler 
115*a77aa747SAxel Dörfler class EventLogItem : public AbstractJobLogItem {
116*a77aa747SAxel Dörfler public:
117*a77aa747SAxel Dörfler 								EventLogItem(BaseJob* job, Event* event);
118*a77aa747SAxel Dörfler 	virtual						~EventLogItem();
119*a77aa747SAxel Dörfler 
120*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
121*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
122*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
123*a77aa747SAxel Dörfler 	virtual	bool				Matches(const char* jobName,
124*a77aa747SAxel Dörfler 									const char* eventName);
125*a77aa747SAxel Dörfler 
126*a77aa747SAxel Dörfler private:
127*a77aa747SAxel Dörfler 			Event*				fEvent;
128*a77aa747SAxel Dörfler };
129*a77aa747SAxel Dörfler 
130*a77aa747SAxel Dörfler 
131*a77aa747SAxel Dörfler class AbstractExternalEventLogItem : public LogItem {
132*a77aa747SAxel Dörfler public:
133*a77aa747SAxel Dörfler 								AbstractExternalEventLogItem(const char* name);
134*a77aa747SAxel Dörfler 	virtual						~AbstractExternalEventLogItem();
135*a77aa747SAxel Dörfler 
136*a77aa747SAxel Dörfler 	virtual status_t			GetParameter(BMessage& parameter) const;
137*a77aa747SAxel Dörfler 	virtual	bool				Matches(const char* jobName,
138*a77aa747SAxel Dörfler 									const char* eventName);
139*a77aa747SAxel Dörfler 
140*a77aa747SAxel Dörfler protected:
141*a77aa747SAxel Dörfler 			BString				fEventName;
142*a77aa747SAxel Dörfler };
143*a77aa747SAxel Dörfler 
144*a77aa747SAxel Dörfler 
145*a77aa747SAxel Dörfler class ExternalEventLogItem : public AbstractExternalEventLogItem {
146*a77aa747SAxel Dörfler public:
147*a77aa747SAxel Dörfler 								ExternalEventLogItem(const char* name);
148*a77aa747SAxel Dörfler 	virtual						~ExternalEventLogItem();
149*a77aa747SAxel Dörfler 
150*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
151*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
152*a77aa747SAxel Dörfler };
153*a77aa747SAxel Dörfler 
154*a77aa747SAxel Dörfler 
155*a77aa747SAxel Dörfler class ExternalEventRegisteredLogItem : public AbstractExternalEventLogItem {
156*a77aa747SAxel Dörfler public:
157*a77aa747SAxel Dörfler 								ExternalEventRegisteredLogItem(
158*a77aa747SAxel Dörfler 									const char* name);
159*a77aa747SAxel Dörfler 	virtual						~ExternalEventRegisteredLogItem();
160*a77aa747SAxel Dörfler 
161*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
162*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
163*a77aa747SAxel Dörfler };
164*a77aa747SAxel Dörfler 
165*a77aa747SAxel Dörfler 
166*a77aa747SAxel Dörfler class ExternalEventUnregisteredLogItem : public AbstractExternalEventLogItem {
167*a77aa747SAxel Dörfler public:
168*a77aa747SAxel Dörfler 								ExternalEventUnregisteredLogItem(
169*a77aa747SAxel Dörfler 									const char* name);
170*a77aa747SAxel Dörfler 	virtual						~ExternalEventUnregisteredLogItem();
171*a77aa747SAxel Dörfler 
172*a77aa747SAxel Dörfler 	virtual	LogItemType			Type() const;
173*a77aa747SAxel Dörfler 	virtual status_t			GetMessage(BString& target) const;
174*a77aa747SAxel Dörfler };
175*a77aa747SAxel Dörfler 
176*a77aa747SAxel Dörfler 
177*a77aa747SAxel Dörfler // #pragma mark -
178*a77aa747SAxel Dörfler 
179*a77aa747SAxel Dörfler 
LogItem()180*a77aa747SAxel Dörfler LogItem::LogItem()
181*a77aa747SAxel Dörfler 	:
182*a77aa747SAxel Dörfler 	fWhen(system_time())
183*a77aa747SAxel Dörfler {
184*a77aa747SAxel Dörfler }
185*a77aa747SAxel Dörfler 
186*a77aa747SAxel Dörfler 
~LogItem()187*a77aa747SAxel Dörfler LogItem::~LogItem()
188*a77aa747SAxel Dörfler {
189*a77aa747SAxel Dörfler }
190*a77aa747SAxel Dörfler 
191*a77aa747SAxel Dörfler 
192*a77aa747SAxel Dörfler BString
Message() const193*a77aa747SAxel Dörfler LogItem::Message() const
194*a77aa747SAxel Dörfler {
195*a77aa747SAxel Dörfler 	BString message;
196*a77aa747SAxel Dörfler 	GetMessage(message);
197*a77aa747SAxel Dörfler 	return message;
198*a77aa747SAxel Dörfler }
199*a77aa747SAxel Dörfler 
200*a77aa747SAxel Dörfler 
201*a77aa747SAxel Dörfler // #pragma mark - Log
202*a77aa747SAxel Dörfler 
203*a77aa747SAxel Dörfler 
Log()204*a77aa747SAxel Dörfler Log::Log()
205*a77aa747SAxel Dörfler 	:
206*a77aa747SAxel Dörfler 	fCount(0)
207*a77aa747SAxel Dörfler {
208*a77aa747SAxel Dörfler 	mutex_init(&fLock, "log lock");
209*a77aa747SAxel Dörfler }
210*a77aa747SAxel Dörfler 
211*a77aa747SAxel Dörfler 
212*a77aa747SAxel Dörfler void
Add(LogItem * item)213*a77aa747SAxel Dörfler Log::Add(LogItem* item)
214*a77aa747SAxel Dörfler {
215*a77aa747SAxel Dörfler 	MutexLocker locker(fLock);
216*a77aa747SAxel Dörfler 	if (fCount == kMaxItems)
217*a77aa747SAxel Dörfler 		fItems.Remove(fItems.First());
218*a77aa747SAxel Dörfler 	else
219*a77aa747SAxel Dörfler 		fCount++;
220*a77aa747SAxel Dörfler 
221*a77aa747SAxel Dörfler 	fItems.Add(item);
222*a77aa747SAxel Dörfler }
223*a77aa747SAxel Dörfler 
224*a77aa747SAxel Dörfler 
225*a77aa747SAxel Dörfler void
JobInitialized(Job * job)226*a77aa747SAxel Dörfler Log::JobInitialized(Job* job)
227*a77aa747SAxel Dörfler {
228*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) JobInitializedLogItem(job);
229*a77aa747SAxel Dörfler 	if (item != NULL)
230*a77aa747SAxel Dörfler 		Add(item);
231*a77aa747SAxel Dörfler 	else
232*a77aa747SAxel Dörfler 		debug_printf("Initialized job \"%s\"\n", job->Name());
233*a77aa747SAxel Dörfler }
234*a77aa747SAxel Dörfler 
235*a77aa747SAxel Dörfler 
236*a77aa747SAxel Dörfler void
JobIgnored(Job * job,status_t status)237*a77aa747SAxel Dörfler Log::JobIgnored(Job* job, status_t status)
238*a77aa747SAxel Dörfler {
239*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) JobIgnoredLogItem(job, status);
240*a77aa747SAxel Dörfler 	if (item != NULL)
241*a77aa747SAxel Dörfler 		Add(item);
242*a77aa747SAxel Dörfler 	else {
243*a77aa747SAxel Dörfler 		debug_printf("Ignored job \"%s\": %s\n", job->Name(),
244*a77aa747SAxel Dörfler 			strerror(status));
245*a77aa747SAxel Dörfler 	}
246*a77aa747SAxel Dörfler }
247*a77aa747SAxel Dörfler 
248*a77aa747SAxel Dörfler 
249*a77aa747SAxel Dörfler void
JobLaunched(Job * job,status_t status)250*a77aa747SAxel Dörfler Log::JobLaunched(Job* job, status_t status)
251*a77aa747SAxel Dörfler {
252*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) JobLaunchedLogItem(job, status);
253*a77aa747SAxel Dörfler 	if (item != NULL)
254*a77aa747SAxel Dörfler 		Add(item);
255*a77aa747SAxel Dörfler 	else {
256*a77aa747SAxel Dörfler 		debug_printf("Launched job \"%s\": %s\n", job->Name(),
257*a77aa747SAxel Dörfler 			strerror(status));
258*a77aa747SAxel Dörfler 	}
259*a77aa747SAxel Dörfler }
260*a77aa747SAxel Dörfler 
261*a77aa747SAxel Dörfler 
262*a77aa747SAxel Dörfler void
JobTerminated(Job * job,status_t status)263*a77aa747SAxel Dörfler Log::JobTerminated(Job* job, status_t status)
264*a77aa747SAxel Dörfler {
265*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) JobTerminatedLogItem(job, status);
266*a77aa747SAxel Dörfler 	if (item != NULL)
267*a77aa747SAxel Dörfler 		Add(item);
268*a77aa747SAxel Dörfler 	else {
269*a77aa747SAxel Dörfler 		debug_printf("Terminated job \"%s\": %s\n", job->Name(),
270*a77aa747SAxel Dörfler 			strerror(status));
271*a77aa747SAxel Dörfler 	}
272*a77aa747SAxel Dörfler }
273*a77aa747SAxel Dörfler 
274*a77aa747SAxel Dörfler 
275*a77aa747SAxel Dörfler void
JobEnabled(Job * job,bool enabled)276*a77aa747SAxel Dörfler Log::JobEnabled(Job* job, bool enabled)
277*a77aa747SAxel Dörfler {
278*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) JobEnabledLogItem(job, enabled);
279*a77aa747SAxel Dörfler 	if (item != NULL)
280*a77aa747SAxel Dörfler 		Add(item);
281*a77aa747SAxel Dörfler 	else
282*a77aa747SAxel Dörfler 		debug_printf("Enabled job \"%s\": %d\n", job->Name(), enabled);
283*a77aa747SAxel Dörfler }
284*a77aa747SAxel Dörfler 
285*a77aa747SAxel Dörfler 
286*a77aa747SAxel Dörfler void
JobStopped(BaseJob * job,bool force)287*a77aa747SAxel Dörfler Log::JobStopped(BaseJob* job, bool force)
288*a77aa747SAxel Dörfler {
289*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) JobStoppedLogItem(job, force);
290*a77aa747SAxel Dörfler 	if (item != NULL)
291*a77aa747SAxel Dörfler 		Add(item);
292*a77aa747SAxel Dörfler 	else
293*a77aa747SAxel Dörfler 		debug_printf("Stopped job \"%s\"\n", job->Name());
294*a77aa747SAxel Dörfler }
295*a77aa747SAxel Dörfler 
296*a77aa747SAxel Dörfler 
297*a77aa747SAxel Dörfler void
EventTriggered(BaseJob * job,Event * event)298*a77aa747SAxel Dörfler Log::EventTriggered(BaseJob* job, Event* event)
299*a77aa747SAxel Dörfler {
300*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) EventLogItem(job, event);
301*a77aa747SAxel Dörfler 	if (item != NULL)
302*a77aa747SAxel Dörfler 		Add(item);
303*a77aa747SAxel Dörfler 	else {
304*a77aa747SAxel Dörfler 		debug_printf("Event triggered for \"%s\": %s\n", job->Name(),
305*a77aa747SAxel Dörfler 			event->ToString().String());
306*a77aa747SAxel Dörfler 	}
307*a77aa747SAxel Dörfler }
308*a77aa747SAxel Dörfler 
309*a77aa747SAxel Dörfler 
310*a77aa747SAxel Dörfler void
ExternalEventTriggered(const char * name)311*a77aa747SAxel Dörfler Log::ExternalEventTriggered(const char* name)
312*a77aa747SAxel Dörfler {
313*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) ExternalEventLogItem(name);
314*a77aa747SAxel Dörfler 	if (item != NULL)
315*a77aa747SAxel Dörfler 		Add(item);
316*a77aa747SAxel Dörfler 	else
317*a77aa747SAxel Dörfler 		debug_printf("External event triggered: %s\n", name);
318*a77aa747SAxel Dörfler }
319*a77aa747SAxel Dörfler 
320*a77aa747SAxel Dörfler 
321*a77aa747SAxel Dörfler void
ExternalEventRegistered(const char * name)322*a77aa747SAxel Dörfler Log::ExternalEventRegistered(const char* name)
323*a77aa747SAxel Dörfler {
324*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) ExternalEventRegisteredLogItem(name);
325*a77aa747SAxel Dörfler 	if (item != NULL)
326*a77aa747SAxel Dörfler 		Add(item);
327*a77aa747SAxel Dörfler 	else
328*a77aa747SAxel Dörfler 		debug_printf("External event registered: %s\n", name);
329*a77aa747SAxel Dörfler }
330*a77aa747SAxel Dörfler 
331*a77aa747SAxel Dörfler 
332*a77aa747SAxel Dörfler void
ExternalEventUnregistered(const char * name)333*a77aa747SAxel Dörfler Log::ExternalEventUnregistered(const char* name)
334*a77aa747SAxel Dörfler {
335*a77aa747SAxel Dörfler 	LogItem* item = new(std::nothrow) ExternalEventUnregisteredLogItem(name);
336*a77aa747SAxel Dörfler 	if (item != NULL)
337*a77aa747SAxel Dörfler 		Add(item);
338*a77aa747SAxel Dörfler 	else
339*a77aa747SAxel Dörfler 		debug_printf("External event unregistered: %s\n", name);
340*a77aa747SAxel Dörfler }
341*a77aa747SAxel Dörfler 
342*a77aa747SAxel Dörfler 
343*a77aa747SAxel Dörfler // #pragma mark - AbstractJobLogItem
344*a77aa747SAxel Dörfler 
345*a77aa747SAxel Dörfler 
AbstractJobLogItem(BaseJob * job)346*a77aa747SAxel Dörfler AbstractJobLogItem::AbstractJobLogItem(BaseJob* job)
347*a77aa747SAxel Dörfler 	:
348*a77aa747SAxel Dörfler 	fJob(job)
349*a77aa747SAxel Dörfler {
350*a77aa747SAxel Dörfler }
351*a77aa747SAxel Dörfler 
352*a77aa747SAxel Dörfler 
~AbstractJobLogItem()353*a77aa747SAxel Dörfler AbstractJobLogItem::~AbstractJobLogItem()
354*a77aa747SAxel Dörfler {
355*a77aa747SAxel Dörfler }
356*a77aa747SAxel Dörfler 
357*a77aa747SAxel Dörfler 
358*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const359*a77aa747SAxel Dörfler AbstractJobLogItem::GetParameter(BMessage& parameter) const
360*a77aa747SAxel Dörfler {
361*a77aa747SAxel Dörfler 	return parameter.AddString("job", fJob->Name());
362*a77aa747SAxel Dörfler }
363*a77aa747SAxel Dörfler 
364*a77aa747SAxel Dörfler 
365*a77aa747SAxel Dörfler bool
Matches(const char * jobName,const char * eventName)366*a77aa747SAxel Dörfler AbstractJobLogItem::Matches(const char* jobName, const char* eventName)
367*a77aa747SAxel Dörfler {
368*a77aa747SAxel Dörfler 	if (jobName == NULL && eventName == NULL)
369*a77aa747SAxel Dörfler 		return true;
370*a77aa747SAxel Dörfler 
371*a77aa747SAxel Dörfler 	if (jobName != NULL && strcmp(fJob->Name(), jobName) == 0)
372*a77aa747SAxel Dörfler 		return true;
373*a77aa747SAxel Dörfler 
374*a77aa747SAxel Dörfler 	return false;
375*a77aa747SAxel Dörfler }
376*a77aa747SAxel Dörfler 
377*a77aa747SAxel Dörfler 
378*a77aa747SAxel Dörfler // #pragma mark - JobInitializedLogItem
379*a77aa747SAxel Dörfler 
380*a77aa747SAxel Dörfler 
JobInitializedLogItem(Job * job)381*a77aa747SAxel Dörfler JobInitializedLogItem::JobInitializedLogItem(Job* job)
382*a77aa747SAxel Dörfler 	:
383*a77aa747SAxel Dörfler 	AbstractJobLogItem(job)
384*a77aa747SAxel Dörfler {
385*a77aa747SAxel Dörfler }
386*a77aa747SAxel Dörfler 
387*a77aa747SAxel Dörfler 
~JobInitializedLogItem()388*a77aa747SAxel Dörfler JobInitializedLogItem::~JobInitializedLogItem()
389*a77aa747SAxel Dörfler {
390*a77aa747SAxel Dörfler }
391*a77aa747SAxel Dörfler 
392*a77aa747SAxel Dörfler 
393*a77aa747SAxel Dörfler LogItemType
Type() const394*a77aa747SAxel Dörfler JobInitializedLogItem::Type() const
395*a77aa747SAxel Dörfler {
396*a77aa747SAxel Dörfler 	return kJobInitialized;
397*a77aa747SAxel Dörfler }
398*a77aa747SAxel Dörfler 
399*a77aa747SAxel Dörfler 
400*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const401*a77aa747SAxel Dörfler JobInitializedLogItem::GetMessage(BString& target) const
402*a77aa747SAxel Dörfler {
403*a77aa747SAxel Dörfler 	target.SetToFormat("Job \"%s\" initialized.", fJob->Name());
404*a77aa747SAxel Dörfler 	return B_OK;
405*a77aa747SAxel Dörfler }
406*a77aa747SAxel Dörfler 
407*a77aa747SAxel Dörfler 
408*a77aa747SAxel Dörfler // #pragma mark - JobIgnoredLogItem
409*a77aa747SAxel Dörfler 
410*a77aa747SAxel Dörfler 
JobIgnoredLogItem(Job * job,status_t error)411*a77aa747SAxel Dörfler JobIgnoredLogItem::JobIgnoredLogItem(Job* job, status_t error)
412*a77aa747SAxel Dörfler 	:
413*a77aa747SAxel Dörfler 	fJobName(job->Name()),
414*a77aa747SAxel Dörfler 	fError(error)
415*a77aa747SAxel Dörfler {
416*a77aa747SAxel Dörfler }
417*a77aa747SAxel Dörfler 
418*a77aa747SAxel Dörfler 
~JobIgnoredLogItem()419*a77aa747SAxel Dörfler JobIgnoredLogItem::~JobIgnoredLogItem()
420*a77aa747SAxel Dörfler {
421*a77aa747SAxel Dörfler }
422*a77aa747SAxel Dörfler 
423*a77aa747SAxel Dörfler 
424*a77aa747SAxel Dörfler LogItemType
Type() const425*a77aa747SAxel Dörfler JobIgnoredLogItem::Type() const
426*a77aa747SAxel Dörfler {
427*a77aa747SAxel Dörfler 	return kJobIgnored;
428*a77aa747SAxel Dörfler }
429*a77aa747SAxel Dörfler 
430*a77aa747SAxel Dörfler 
431*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const432*a77aa747SAxel Dörfler JobIgnoredLogItem::GetMessage(BString& target) const
433*a77aa747SAxel Dörfler {
434*a77aa747SAxel Dörfler 	target.SetToFormat("Ignored job \"%s\" due %s", fJobName.String(),
435*a77aa747SAxel Dörfler 		strerror(fError));
436*a77aa747SAxel Dörfler 	return B_OK;
437*a77aa747SAxel Dörfler }
438*a77aa747SAxel Dörfler 
439*a77aa747SAxel Dörfler 
440*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const441*a77aa747SAxel Dörfler JobIgnoredLogItem::GetParameter(BMessage& parameter) const
442*a77aa747SAxel Dörfler {
443*a77aa747SAxel Dörfler 	status_t status = parameter.AddString("job", fJobName);
444*a77aa747SAxel Dörfler 	if (status == B_OK)
445*a77aa747SAxel Dörfler 		status = parameter.AddInt32("error", fError);
446*a77aa747SAxel Dörfler 	return status;
447*a77aa747SAxel Dörfler }
448*a77aa747SAxel Dörfler 
449*a77aa747SAxel Dörfler 
450*a77aa747SAxel Dörfler bool
Matches(const char * jobName,const char * eventName)451*a77aa747SAxel Dörfler JobIgnoredLogItem::Matches(const char* jobName, const char* eventName)
452*a77aa747SAxel Dörfler {
453*a77aa747SAxel Dörfler 	if (jobName == NULL && eventName == NULL)
454*a77aa747SAxel Dörfler 		return true;
455*a77aa747SAxel Dörfler 
456*a77aa747SAxel Dörfler 	if (jobName != NULL && fJobName == jobName)
457*a77aa747SAxel Dörfler 		return true;
458*a77aa747SAxel Dörfler 
459*a77aa747SAxel Dörfler 	return false;
460*a77aa747SAxel Dörfler }
461*a77aa747SAxel Dörfler 
462*a77aa747SAxel Dörfler 
463*a77aa747SAxel Dörfler // #pragma mark - JobLaunchedLogItem
464*a77aa747SAxel Dörfler 
465*a77aa747SAxel Dörfler 
JobLaunchedLogItem(Job * job,status_t status)466*a77aa747SAxel Dörfler JobLaunchedLogItem::JobLaunchedLogItem(Job* job, status_t status)
467*a77aa747SAxel Dörfler 	:
468*a77aa747SAxel Dörfler 	AbstractJobLogItem(job),
469*a77aa747SAxel Dörfler 	fStatus(status)
470*a77aa747SAxel Dörfler {
471*a77aa747SAxel Dörfler }
472*a77aa747SAxel Dörfler 
473*a77aa747SAxel Dörfler 
~JobLaunchedLogItem()474*a77aa747SAxel Dörfler JobLaunchedLogItem::~JobLaunchedLogItem()
475*a77aa747SAxel Dörfler {
476*a77aa747SAxel Dörfler }
477*a77aa747SAxel Dörfler 
478*a77aa747SAxel Dörfler 
479*a77aa747SAxel Dörfler LogItemType
Type() const480*a77aa747SAxel Dörfler JobLaunchedLogItem::Type() const
481*a77aa747SAxel Dörfler {
482*a77aa747SAxel Dörfler 	return kJobLaunched;
483*a77aa747SAxel Dörfler }
484*a77aa747SAxel Dörfler 
485*a77aa747SAxel Dörfler 
486*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const487*a77aa747SAxel Dörfler JobLaunchedLogItem::GetMessage(BString& target) const
488*a77aa747SAxel Dörfler {
489*a77aa747SAxel Dörfler 	target.SetToFormat("Job \"%s\" launched: %s", fJob->Name(),
490*a77aa747SAxel Dörfler 		strerror(fStatus));
491*a77aa747SAxel Dörfler 	return B_OK;
492*a77aa747SAxel Dörfler }
493*a77aa747SAxel Dörfler 
494*a77aa747SAxel Dörfler 
495*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const496*a77aa747SAxel Dörfler JobLaunchedLogItem::GetParameter(BMessage& parameter) const
497*a77aa747SAxel Dörfler {
498*a77aa747SAxel Dörfler 	status_t status = AbstractJobLogItem::GetParameter(parameter);
499*a77aa747SAxel Dörfler 	if (status == B_OK)
500*a77aa747SAxel Dörfler 		status = parameter.AddInt32("status", fStatus);
501*a77aa747SAxel Dörfler 	return status;
502*a77aa747SAxel Dörfler }
503*a77aa747SAxel Dörfler 
504*a77aa747SAxel Dörfler 
505*a77aa747SAxel Dörfler // #pragma mark - JobTerminatedLogItem
506*a77aa747SAxel Dörfler 
507*a77aa747SAxel Dörfler 
JobTerminatedLogItem(Job * job,status_t status)508*a77aa747SAxel Dörfler JobTerminatedLogItem::JobTerminatedLogItem(Job* job, status_t status)
509*a77aa747SAxel Dörfler 	:
510*a77aa747SAxel Dörfler 	AbstractJobLogItem(job),
511*a77aa747SAxel Dörfler 	fStatus(status)
512*a77aa747SAxel Dörfler {
513*a77aa747SAxel Dörfler }
514*a77aa747SAxel Dörfler 
515*a77aa747SAxel Dörfler 
~JobTerminatedLogItem()516*a77aa747SAxel Dörfler JobTerminatedLogItem::~JobTerminatedLogItem()
517*a77aa747SAxel Dörfler {
518*a77aa747SAxel Dörfler }
519*a77aa747SAxel Dörfler 
520*a77aa747SAxel Dörfler 
521*a77aa747SAxel Dörfler LogItemType
Type() const522*a77aa747SAxel Dörfler JobTerminatedLogItem::Type() const
523*a77aa747SAxel Dörfler {
524*a77aa747SAxel Dörfler 	return kJobTerminated;
525*a77aa747SAxel Dörfler }
526*a77aa747SAxel Dörfler 
527*a77aa747SAxel Dörfler 
528*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const529*a77aa747SAxel Dörfler JobTerminatedLogItem::GetMessage(BString& target) const
530*a77aa747SAxel Dörfler {
531*a77aa747SAxel Dörfler 	target.SetToFormat("Job \"%s\" terminated: %s", fJob->Name(),
532*a77aa747SAxel Dörfler 		strerror(fStatus));
533*a77aa747SAxel Dörfler 	return B_OK;
534*a77aa747SAxel Dörfler }
535*a77aa747SAxel Dörfler 
536*a77aa747SAxel Dörfler 
537*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const538*a77aa747SAxel Dörfler JobTerminatedLogItem::GetParameter(BMessage& parameter) const
539*a77aa747SAxel Dörfler {
540*a77aa747SAxel Dörfler 	status_t status = AbstractJobLogItem::GetParameter(parameter);
541*a77aa747SAxel Dörfler 	if (status == B_OK)
542*a77aa747SAxel Dörfler 		status = parameter.AddInt32("status", fStatus);
543*a77aa747SAxel Dörfler 	return status;
544*a77aa747SAxel Dörfler }
545*a77aa747SAxel Dörfler 
546*a77aa747SAxel Dörfler 
547*a77aa747SAxel Dörfler // #pragma mark - JobEnabledLogItem
548*a77aa747SAxel Dörfler 
549*a77aa747SAxel Dörfler 
JobEnabledLogItem(Job * job,bool enabled)550*a77aa747SAxel Dörfler JobEnabledLogItem::JobEnabledLogItem(Job* job, bool enabled)
551*a77aa747SAxel Dörfler 	:
552*a77aa747SAxel Dörfler 	AbstractJobLogItem(job),
553*a77aa747SAxel Dörfler 	fEnabled(enabled)
554*a77aa747SAxel Dörfler {
555*a77aa747SAxel Dörfler }
556*a77aa747SAxel Dörfler 
557*a77aa747SAxel Dörfler 
~JobEnabledLogItem()558*a77aa747SAxel Dörfler JobEnabledLogItem::~JobEnabledLogItem()
559*a77aa747SAxel Dörfler {
560*a77aa747SAxel Dörfler }
561*a77aa747SAxel Dörfler 
562*a77aa747SAxel Dörfler 
563*a77aa747SAxel Dörfler LogItemType
Type() const564*a77aa747SAxel Dörfler JobEnabledLogItem::Type() const
565*a77aa747SAxel Dörfler {
566*a77aa747SAxel Dörfler 	return kJobEnabled;
567*a77aa747SAxel Dörfler }
568*a77aa747SAxel Dörfler 
569*a77aa747SAxel Dörfler 
570*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const571*a77aa747SAxel Dörfler JobEnabledLogItem::GetMessage(BString& target) const
572*a77aa747SAxel Dörfler {
573*a77aa747SAxel Dörfler 	target.SetToFormat("Job \"%s\" %sabled", fJob->Name(),
574*a77aa747SAxel Dörfler 		fEnabled ? "en" : "dis");
575*a77aa747SAxel Dörfler 	return B_OK;
576*a77aa747SAxel Dörfler }
577*a77aa747SAxel Dörfler 
578*a77aa747SAxel Dörfler 
579*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const580*a77aa747SAxel Dörfler JobEnabledLogItem::GetParameter(BMessage& parameter) const
581*a77aa747SAxel Dörfler {
582*a77aa747SAxel Dörfler 	status_t status = AbstractJobLogItem::GetParameter(parameter);
583*a77aa747SAxel Dörfler 	if (status == B_OK)
584*a77aa747SAxel Dörfler 		status = parameter.AddBool("enabled", fEnabled);
585*a77aa747SAxel Dörfler 	return status;
586*a77aa747SAxel Dörfler }
587*a77aa747SAxel Dörfler 
588*a77aa747SAxel Dörfler 
589*a77aa747SAxel Dörfler // #pragma mark - JobStoppedLogItem
590*a77aa747SAxel Dörfler 
591*a77aa747SAxel Dörfler 
JobStoppedLogItem(BaseJob * job,bool force)592*a77aa747SAxel Dörfler JobStoppedLogItem::JobStoppedLogItem(BaseJob* job, bool force)
593*a77aa747SAxel Dörfler 	:
594*a77aa747SAxel Dörfler 	AbstractJobLogItem(job),
595*a77aa747SAxel Dörfler 	fForce(force)
596*a77aa747SAxel Dörfler {
597*a77aa747SAxel Dörfler }
598*a77aa747SAxel Dörfler 
599*a77aa747SAxel Dörfler 
~JobStoppedLogItem()600*a77aa747SAxel Dörfler JobStoppedLogItem::~JobStoppedLogItem()
601*a77aa747SAxel Dörfler {
602*a77aa747SAxel Dörfler }
603*a77aa747SAxel Dörfler 
604*a77aa747SAxel Dörfler 
605*a77aa747SAxel Dörfler LogItemType
Type() const606*a77aa747SAxel Dörfler JobStoppedLogItem::Type() const
607*a77aa747SAxel Dörfler {
608*a77aa747SAxel Dörfler 	return kJobStopped;
609*a77aa747SAxel Dörfler }
610*a77aa747SAxel Dörfler 
611*a77aa747SAxel Dörfler 
612*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const613*a77aa747SAxel Dörfler JobStoppedLogItem::GetMessage(BString& target) const
614*a77aa747SAxel Dörfler {
615*a77aa747SAxel Dörfler 	target.SetToFormat("Job \"%s\" %sstopped", fJob->Name(),
616*a77aa747SAxel Dörfler 		fForce ? "force " : "");
617*a77aa747SAxel Dörfler 	return B_OK;
618*a77aa747SAxel Dörfler }
619*a77aa747SAxel Dörfler 
620*a77aa747SAxel Dörfler 
621*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const622*a77aa747SAxel Dörfler JobStoppedLogItem::GetParameter(BMessage& parameter) const
623*a77aa747SAxel Dörfler {
624*a77aa747SAxel Dörfler 	status_t status = AbstractJobLogItem::GetParameter(parameter);
625*a77aa747SAxel Dörfler 	if (status == B_OK)
626*a77aa747SAxel Dörfler 		status = parameter.AddBool("force", fForce);
627*a77aa747SAxel Dörfler 	return status;
628*a77aa747SAxel Dörfler }
629*a77aa747SAxel Dörfler 
630*a77aa747SAxel Dörfler 
631*a77aa747SAxel Dörfler // #pragma mark - EventLogItem
632*a77aa747SAxel Dörfler 
633*a77aa747SAxel Dörfler 
EventLogItem(BaseJob * job,Event * event)634*a77aa747SAxel Dörfler EventLogItem::EventLogItem(BaseJob* job, Event* event)
635*a77aa747SAxel Dörfler 	:
636*a77aa747SAxel Dörfler 	AbstractJobLogItem(job),
637*a77aa747SAxel Dörfler 	fEvent(event)
638*a77aa747SAxel Dörfler {
639*a77aa747SAxel Dörfler }
640*a77aa747SAxel Dörfler 
641*a77aa747SAxel Dörfler 
~EventLogItem()642*a77aa747SAxel Dörfler EventLogItem::~EventLogItem()
643*a77aa747SAxel Dörfler {
644*a77aa747SAxel Dörfler }
645*a77aa747SAxel Dörfler 
646*a77aa747SAxel Dörfler 
647*a77aa747SAxel Dörfler LogItemType
Type() const648*a77aa747SAxel Dörfler EventLogItem::Type() const
649*a77aa747SAxel Dörfler {
650*a77aa747SAxel Dörfler 	return kEvent;
651*a77aa747SAxel Dörfler }
652*a77aa747SAxel Dörfler 
653*a77aa747SAxel Dörfler 
654*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const655*a77aa747SAxel Dörfler EventLogItem::GetMessage(BString& target) const
656*a77aa747SAxel Dörfler {
657*a77aa747SAxel Dörfler 	target.SetToFormat("Event triggered \"%s\": \"%s\"", fJob->Name(),
658*a77aa747SAxel Dörfler 		fEvent->ToString().String());
659*a77aa747SAxel Dörfler 	return B_OK;
660*a77aa747SAxel Dörfler }
661*a77aa747SAxel Dörfler 
662*a77aa747SAxel Dörfler 
663*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const664*a77aa747SAxel Dörfler EventLogItem::GetParameter(BMessage& parameter) const
665*a77aa747SAxel Dörfler {
666*a77aa747SAxel Dörfler 	status_t status = AbstractJobLogItem::GetParameter(parameter);
667*a77aa747SAxel Dörfler 	if (status == B_OK)
668*a77aa747SAxel Dörfler 		status = parameter.AddString("event", fEvent->ToString());
669*a77aa747SAxel Dörfler 	return status;
670*a77aa747SAxel Dörfler }
671*a77aa747SAxel Dörfler 
672*a77aa747SAxel Dörfler 
673*a77aa747SAxel Dörfler bool
Matches(const char * jobName,const char * eventName)674*a77aa747SAxel Dörfler EventLogItem::Matches(const char* jobName, const char* eventName)
675*a77aa747SAxel Dörfler {
676*a77aa747SAxel Dörfler 	if (eventName != NULL && strstr(fEvent->ToString(), eventName) == NULL)
677*a77aa747SAxel Dörfler 		return false;
678*a77aa747SAxel Dörfler 
679*a77aa747SAxel Dörfler 	return AbstractJobLogItem::Matches(jobName, NULL);
680*a77aa747SAxel Dörfler }
681*a77aa747SAxel Dörfler 
682*a77aa747SAxel Dörfler 
683*a77aa747SAxel Dörfler // #pragma mark - ExternalEventLogItem
684*a77aa747SAxel Dörfler 
685*a77aa747SAxel Dörfler 
AbstractExternalEventLogItem(const char * name)686*a77aa747SAxel Dörfler AbstractExternalEventLogItem::AbstractExternalEventLogItem(const char* name)
687*a77aa747SAxel Dörfler 	:
688*a77aa747SAxel Dörfler 	fEventName(name)
689*a77aa747SAxel Dörfler {
690*a77aa747SAxel Dörfler }
691*a77aa747SAxel Dörfler 
692*a77aa747SAxel Dörfler 
~AbstractExternalEventLogItem()693*a77aa747SAxel Dörfler AbstractExternalEventLogItem::~AbstractExternalEventLogItem()
694*a77aa747SAxel Dörfler {
695*a77aa747SAxel Dörfler }
696*a77aa747SAxel Dörfler 
697*a77aa747SAxel Dörfler 
698*a77aa747SAxel Dörfler status_t
GetParameter(BMessage & parameter) const699*a77aa747SAxel Dörfler AbstractExternalEventLogItem::GetParameter(BMessage& parameter) const
700*a77aa747SAxel Dörfler {
701*a77aa747SAxel Dörfler 	return parameter.AddString("event", fEventName);
702*a77aa747SAxel Dörfler }
703*a77aa747SAxel Dörfler 
704*a77aa747SAxel Dörfler 
705*a77aa747SAxel Dörfler bool
Matches(const char * jobName,const char * eventName)706*a77aa747SAxel Dörfler AbstractExternalEventLogItem::Matches(const char* jobName,
707*a77aa747SAxel Dörfler 	const char* eventName)
708*a77aa747SAxel Dörfler {
709*a77aa747SAxel Dörfler 	if (jobName == NULL && eventName == NULL)
710*a77aa747SAxel Dörfler 		return true;
711*a77aa747SAxel Dörfler 
712*a77aa747SAxel Dörfler 	if (eventName != NULL && strstr(fEventName.String(), eventName) != NULL)
713*a77aa747SAxel Dörfler 		return true;
714*a77aa747SAxel Dörfler 
715*a77aa747SAxel Dörfler 	return false;
716*a77aa747SAxel Dörfler }
717*a77aa747SAxel Dörfler 
718*a77aa747SAxel Dörfler 
719*a77aa747SAxel Dörfler // #pragma mark - ExternalEventLogItem
720*a77aa747SAxel Dörfler 
721*a77aa747SAxel Dörfler 
ExternalEventLogItem(const char * name)722*a77aa747SAxel Dörfler ExternalEventLogItem::ExternalEventLogItem(const char* name)
723*a77aa747SAxel Dörfler 	:
724*a77aa747SAxel Dörfler 	AbstractExternalEventLogItem(name)
725*a77aa747SAxel Dörfler {
726*a77aa747SAxel Dörfler }
727*a77aa747SAxel Dörfler 
728*a77aa747SAxel Dörfler 
~ExternalEventLogItem()729*a77aa747SAxel Dörfler ExternalEventLogItem::~ExternalEventLogItem()
730*a77aa747SAxel Dörfler {
731*a77aa747SAxel Dörfler }
732*a77aa747SAxel Dörfler 
733*a77aa747SAxel Dörfler 
734*a77aa747SAxel Dörfler LogItemType
Type() const735*a77aa747SAxel Dörfler ExternalEventLogItem::Type() const
736*a77aa747SAxel Dörfler {
737*a77aa747SAxel Dörfler 	return kExternalEvent;
738*a77aa747SAxel Dörfler }
739*a77aa747SAxel Dörfler 
740*a77aa747SAxel Dörfler 
741*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const742*a77aa747SAxel Dörfler ExternalEventLogItem::GetMessage(BString& target) const
743*a77aa747SAxel Dörfler {
744*a77aa747SAxel Dörfler 	target.SetToFormat("External event triggered: \"%s\"",
745*a77aa747SAxel Dörfler 		fEventName.String());
746*a77aa747SAxel Dörfler 	return B_OK;
747*a77aa747SAxel Dörfler }
748*a77aa747SAxel Dörfler 
749*a77aa747SAxel Dörfler 
750*a77aa747SAxel Dörfler // #pragma mark - ExternalEventRegisteredLogItem
751*a77aa747SAxel Dörfler 
752*a77aa747SAxel Dörfler 
ExternalEventRegisteredLogItem(const char * name)753*a77aa747SAxel Dörfler ExternalEventRegisteredLogItem::ExternalEventRegisteredLogItem(const char* name)
754*a77aa747SAxel Dörfler 	:
755*a77aa747SAxel Dörfler 	AbstractExternalEventLogItem(name)
756*a77aa747SAxel Dörfler {
757*a77aa747SAxel Dörfler }
758*a77aa747SAxel Dörfler 
759*a77aa747SAxel Dörfler 
~ExternalEventRegisteredLogItem()760*a77aa747SAxel Dörfler ExternalEventRegisteredLogItem::~ExternalEventRegisteredLogItem()
761*a77aa747SAxel Dörfler {
762*a77aa747SAxel Dörfler }
763*a77aa747SAxel Dörfler 
764*a77aa747SAxel Dörfler 
765*a77aa747SAxel Dörfler LogItemType
Type() const766*a77aa747SAxel Dörfler ExternalEventRegisteredLogItem::Type() const
767*a77aa747SAxel Dörfler {
768*a77aa747SAxel Dörfler 	return kExternalEventRegistered;
769*a77aa747SAxel Dörfler }
770*a77aa747SAxel Dörfler 
771*a77aa747SAxel Dörfler 
772*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const773*a77aa747SAxel Dörfler ExternalEventRegisteredLogItem::GetMessage(BString& target) const
774*a77aa747SAxel Dörfler {
775*a77aa747SAxel Dörfler 	target.SetToFormat("External event registered: \"%s\"",
776*a77aa747SAxel Dörfler 		fEventName.String());
777*a77aa747SAxel Dörfler 	return B_OK;
778*a77aa747SAxel Dörfler }
779*a77aa747SAxel Dörfler 
780*a77aa747SAxel Dörfler 
781*a77aa747SAxel Dörfler // #pragma mark - ExternalEventUnregisteredLogItem
782*a77aa747SAxel Dörfler 
783*a77aa747SAxel Dörfler 
ExternalEventUnregisteredLogItem(const char * name)784*a77aa747SAxel Dörfler ExternalEventUnregisteredLogItem::ExternalEventUnregisteredLogItem(
785*a77aa747SAxel Dörfler 	const char* name)
786*a77aa747SAxel Dörfler 	:
787*a77aa747SAxel Dörfler 	AbstractExternalEventLogItem(name)
788*a77aa747SAxel Dörfler {
789*a77aa747SAxel Dörfler }
790*a77aa747SAxel Dörfler 
791*a77aa747SAxel Dörfler 
~ExternalEventUnregisteredLogItem()792*a77aa747SAxel Dörfler ExternalEventUnregisteredLogItem::~ExternalEventUnregisteredLogItem()
793*a77aa747SAxel Dörfler {
794*a77aa747SAxel Dörfler }
795*a77aa747SAxel Dörfler 
796*a77aa747SAxel Dörfler 
797*a77aa747SAxel Dörfler LogItemType
Type() const798*a77aa747SAxel Dörfler ExternalEventUnregisteredLogItem::Type() const
799*a77aa747SAxel Dörfler {
800*a77aa747SAxel Dörfler 	return kExternalEventUnregistered;
801*a77aa747SAxel Dörfler }
802*a77aa747SAxel Dörfler 
803*a77aa747SAxel Dörfler 
804*a77aa747SAxel Dörfler status_t
GetMessage(BString & target) const805*a77aa747SAxel Dörfler ExternalEventUnregisteredLogItem::GetMessage(BString& target) const
806*a77aa747SAxel Dörfler {
807*a77aa747SAxel Dörfler 	target.SetToFormat("External event unregistered: \"%s\"",
808*a77aa747SAxel Dörfler 		fEventName.String());
809*a77aa747SAxel Dörfler 	return B_OK;
810*a77aa747SAxel Dörfler }
811