// NodeMonitoringEvent.h #ifndef NET_FS_NODE_MONITORING_EVENT_H #define NET_FS_NODE_MONITORING_EVENT_H #include #include #include class BMessage; // NodeMonitoringEvent struct NodeMonitoringEvent : public BReferenceable, public DoublyLinkedListLinkImpl { NodeMonitoringEvent(); virtual ~NodeMonitoringEvent(); virtual status_t Init(const BMessage* message) = 0; int32 opcode; bigtime_t time; BReferenceable* queryHandler; // only for query notifications port_id remotePort; // int32 remoteToken; // }; // EntryCreatedEvent struct EntryCreatedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t volumeID; ino_t directoryID; ino_t nodeID; HashString name; }; // EntryRemovedEvent struct EntryRemovedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t volumeID; ino_t directoryID; dev_t nodeVolumeID; // == volumeID, unless this // event is manually generated // for an entry pointing to the // root of a FS ino_t nodeID; HashString name; // filled in later }; // EntryMovedEvent struct EntryMovedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t volumeID; ino_t fromDirectoryID; ino_t toDirectoryID; dev_t nodeVolumeID; // usually == volumeID, unless // the node is the root dir of // a volume (the VolumeManager) // fixes this field ino_t nodeID; HashString fromName; // filled in later HashString toName; }; // StatChangedEvent struct StatChangedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t volumeID; ino_t nodeID; }; // AttributeChangedEvent struct AttributeChangedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t volumeID; ino_t nodeID; HashString attribute; }; // VolumeMountedEvent struct VolumeMountedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t newVolumeID; dev_t volumeID; ino_t directoryID; }; // VolumeUnmountedEvent struct VolumeUnmountedEvent : NodeMonitoringEvent { status_t Init(const BMessage* message); dev_t volumeID; }; #endif // NET_FS_NODE_MONITORING_EVENT_H