1/*
2 * Copyright 2010, Axel Dörfler, axeld@pinc-software.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <stdio.h>
8
9#include <Application.h>
10#include <Entry.h>
11#include <NodeMonitor.h>
12
13
14class Application : public BApplication {
15public:
16								Application();
17	virtual						~Application();
18
19protected:
20	virtual	void				ArgvReceived(int32 argCount, char** args);
21	virtual void				ReadyToRun();
22	virtual	void				MessageReceived(BMessage* message);
23
24private:
25			bool				fWatchingNode;
26};
27
28
29Application::Application()
30	:
31	BApplication("application/x-vnd.test-node-monitor-test"),
32	fWatchingNode(false)
33{
34}
35
36
37Application::~Application()
38{
39}
40
41
42void
43Application::ArgvReceived(int32 argCount, char** args)
44{
45	uint32 flags = B_WATCH_STAT;
46
47	for (int32 i = 0; i < argCount; i++) {
48		BEntry entry(args[i]);
49		if (!entry.Exists()) {
50			fprintf(stderr, "Entry does not exist: %s\n", args[i]);
51			continue;
52		}
53
54		node_ref nodeRef;
55		entry.GetNodeRef(&nodeRef);
56		if (watch_node(&nodeRef, flags, this) == B_OK)
57			fWatchingNode = true;
58	}
59}
60
61
62void
63Application::ReadyToRun()
64{
65	if (!fWatchingNode)
66		Quit();
67}
68
69
70void
71Application::MessageReceived(BMessage* message)
72{
73	switch (message->what) {
74		case B_NODE_MONITOR:
75			message->PrintToStream();
76			break;
77
78		default:
79			BApplication::MessageReceived(message);
80	}
81}
82
83
84// #pragma mark -
85
86
87int
88main(int argc, char** argv)
89{
90	Application app;
91	app.Run();
92
93	return 0;
94}
95