xref: /haiku/src/add-ons/kernel/file_systems/netfs/server/NodeMonitoringEvent.cpp (revision 83b1a68c52ba3e0e8796282759f694b7fdddf06d)
1 // NodeMonitoringEvent.cpp
2 
3 #include <Message.h>
4 #include <NodeMonitor.h>
5 
6 #include "DebugSupport.h"
7 #include "NodeMonitoringEvent.h"
8 
9 // NodeMonitoringEvent
10 
11 // constructor
12 NodeMonitoringEvent::NodeMonitoringEvent()
13 	: BReferenceable(),
14 	  time(system_time()),
15 	  queryHandler(NULL),
16 	  remotePort(-1),
17 	  remoteToken(-1)
18 {
19 }
20 
21 // destructor
22 NodeMonitoringEvent::~NodeMonitoringEvent()
23 {
24 	if (queryHandler)
25 		queryHandler->ReleaseReference();
26 }
27 
28 
29 // EntryCreatedEvent
30 
31 // Init
32 status_t
33 EntryCreatedEvent::Init(const BMessage* message)
34 {
35 	opcode = B_ENTRY_CREATED;
36 	const char* localName;
37 	if (message->FindInt32("device", &volumeID) != B_OK
38 		|| message->FindInt64("directory", &directoryID) != B_OK
39 		|| message->FindInt64("node", &nodeID) != B_OK
40 		|| message->FindString("name", &localName) != B_OK) {
41 		return B_BAD_VALUE;
42 	}
43 	if (!name.SetTo(localName))
44 		return B_NO_MEMORY;
45 	return B_OK;
46 }
47 
48 
49 // EntryRemovedEvent
50 
51 // Init
52 status_t
53 EntryRemovedEvent::Init(const BMessage* message)
54 {
55 	opcode = B_ENTRY_REMOVED;
56 	if (message->FindInt32("device", &volumeID) != B_OK
57 		|| message->FindInt64("directory", &directoryID) != B_OK
58 		|| message->FindInt64("node", &nodeID) != B_OK) {
59 		return B_BAD_VALUE;
60 	}
61 	nodeVolumeID = volumeID;
62 	return B_OK;
63 }
64 
65 
66 // EntryMovedEvent
67 
68 // Init
69 status_t
70 EntryMovedEvent::Init(const BMessage* message)
71 {
72 	opcode = B_ENTRY_MOVED;
73 	const char* localName;
74 	if (message->FindInt32("device", &volumeID) != B_OK
75 		|| message->FindInt64("from directory", &fromDirectoryID) != B_OK
76 		|| message->FindInt64("to directory", &toDirectoryID) != B_OK
77 		|| message->FindInt64("node", &nodeID) != B_OK
78 		|| message->FindString("name", &localName) != B_OK) {
79 		return B_BAD_VALUE;
80 	}
81 	nodeVolumeID = volumeID;
82 	if (!toName.SetTo(localName))
83 		return B_NO_MEMORY;
84 	return B_OK;
85 }
86 
87 
88 // StatChangedEvent
89 
90 // Init
91 status_t
92 StatChangedEvent::Init(const BMessage* message)
93 {
94 	opcode = B_STAT_CHANGED;
95 	if (message->FindInt32("device", &volumeID) != B_OK
96 		|| message->FindInt64("node", &nodeID)) {
97 		return B_BAD_VALUE;
98 	}
99 	return B_OK;
100 }
101 
102 
103 // AttributeChangedEvent
104 
105 // Init
106 status_t
107 AttributeChangedEvent::Init(const BMessage* message)
108 {
109 	opcode = B_ATTR_CHANGED;
110 	const char* localName;
111 	if (message->FindInt32("device", &volumeID) != B_OK
112 		|| message->FindInt64("node", &nodeID)
113 		|| message->FindString("attr", &localName) != B_OK) {
114 		return B_BAD_VALUE;
115 	}
116 	if (!attribute.SetTo(localName))
117 		return B_NO_MEMORY;
118 	return B_OK;
119 }
120 
121 
122 // VolumeMountedEvent
123 
124 // Init
125 status_t
126 VolumeMountedEvent::Init(const BMessage* message)
127 {
128 	opcode = B_DEVICE_MOUNTED;
129 	if (message->FindInt32("new device", &newVolumeID) != B_OK
130 		|| message->FindInt32("device", &volumeID) != B_OK
131 		|| message->FindInt64("directory", &directoryID) != B_OK) {
132 		return B_BAD_VALUE;
133 	}
134 	return B_OK;
135 }
136 
137 
138 // VolumeUnmountedEvent
139 
140 // Init
141 status_t
142 VolumeUnmountedEvent::Init(const BMessage* message)
143 {
144 	opcode = B_DEVICE_UNMOUNTED;
145 	if (message->FindInt32("device", &volumeID) != B_OK)
146 		return B_BAD_VALUE;
147 	return B_OK;
148 }
149 
150