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