#ifndef NET_FS_NODE_MONITORING_EVENT_H
#define NET_FS_NODE_MONITORING_EVENT_H
#include <HashString.h>
#include <Referenceable.h>
#include <util/DoublyLinkedList.h>
class BMessage;
struct NodeMonitoringEvent : public BReferenceable,
public DoublyLinkedListLinkImpl<NodeMonitoringEvent> {
NodeMonitoringEvent();
virtual ~NodeMonitoringEvent();
virtual status_t Init(const BMessage* message) = 0;
int32 opcode;
bigtime_t time;
BReferenceable* queryHandler;
port_id remotePort;
int32 remoteToken;
};
struct EntryCreatedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t volumeID;
ino_t directoryID;
ino_t nodeID;
HashString name;
};
struct EntryRemovedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t volumeID;
ino_t directoryID;
dev_t nodeVolumeID;
ino_t nodeID;
HashString name;
};
struct EntryMovedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t volumeID;
ino_t fromDirectoryID;
ino_t toDirectoryID;
dev_t nodeVolumeID;
ino_t nodeID;
HashString fromName;
HashString toName;
};
struct StatChangedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t volumeID;
ino_t nodeID;
};
struct AttributeChangedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t volumeID;
ino_t nodeID;
HashString attribute;
};
struct VolumeMountedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t newVolumeID;
dev_t volumeID;
ino_t directoryID;
};
struct VolumeUnmountedEvent : NodeMonitoringEvent {
status_t Init(const BMessage* message);
dev_t volumeID;
};
#endif