root/src/add-ons/kernel/file_systems/netfs/client/VolumeEvent.h
// VolumeEvent.h

#ifndef NETFS_VOLUME_EVENT_H
#define NETFS_VOLUME_EVENT_H

#include <fsproto.h>

#include <Referenceable.h>
#include <util/DoublyLinkedList.h>


// event types
enum {
        CONNECTION_BROKEN_EVENT,
};

// VolumeEvent
class VolumeEvent : public BReferenceable,
        public DoublyLinkedListLinkImpl<VolumeEvent> {
public:
                                                                VolumeEvent(uint32 type, vnode_id target = -1);
        virtual                                         ~VolumeEvent();

                        uint32                          GetType() const;

                        void                            SetTarget(vnode_id target);
                        vnode_id                        GetTarget() const;
                                // a node ID identifying the target volume (usually the ID
                                // of the root node)

private:
                        uint32                          fType;
                        vnode_id                        fTarget;
};

// ConnectionBrokenEvent
class ConnectionBrokenEvent : public VolumeEvent {
public:
                                                                ConnectionBrokenEvent(vnode_id target = -1);
        virtual                                         ~ConnectionBrokenEvent();
};

#endif  // NETFS_VOLUME_EVENT_H