From afd1e2002ef270bb29f7abcfc97cc7f5ec49f970 Mon Sep 17 00:00:00 2001 From: shatty <shatty@nowhere.fake> Date: Sun, 1 Feb 2004 05:50:00 +0000 Subject: [PATCH] basic interface git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6455 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/storage/AddOnMonitorHandler.h | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 headers/private/storage/AddOnMonitorHandler.h diff --git a/headers/private/storage/AddOnMonitorHandler.h b/headers/private/storage/AddOnMonitorHandler.h new file mode 100644 index 0000000000..f471211cc4 --- /dev/null +++ b/headers/private/storage/AddOnMonitorHandler.h @@ -0,0 +1,61 @@ +#ifndef _ADD_ON_MONITOR_HANDLER_H +#define _ADD_ON_MONITOR_HANDLER_H + +#include <list> +#include "NodeMonitorHandler.h" + +namespace BPrivate { +namespace Storage { + +struct add_on_entry_info { + char name[B_FILE_NAME_LENGTH]; + node_ref nref; + node_ref dir_nref; +}; + +struct add_on_directory_info { + node_ref nref; + std::list<add_on_entry_info> entries; +}; + +class AddOnMonitorHandler : public NodeMonitorHandler { +private: + typedef NodeMonitorHandler inherited; +public: + AddOnMonitorHandler(const char * name = "AddOnMonitorHandler"); + virtual ~AddOnMonitorHandler(); + + virtual void MessageReceived(BMessage * msg); + + // supply the add on directories here, in the order you want them checked + virtual status_t AddDirectory(const node_ref * nref); + +protected: + // hooks for subclass + virtual void AddOnCreated(const add_on_entry_info * entry_info); + virtual void AddOnEnabled(const add_on_entry_info * entry_info); + virtual void AddOnDisabled(const add_on_entry_info * entry_info); + virtual void AddOnRemoved(const add_on_entry_info * entry_info); + +protected: + virtual void EntryCreated(const char *name, ino_t directory, + dev_t device, ino_t node); + virtual void EntryRemoved(ino_t directory, dev_t device, ino_t node); + virtual void EntryMoved(const char *name, ino_t from_directory, + ino_t to_directory, dev_t device, ino_t node); + +private: + void HandlePulse(); + + std::list<add_on_directory_info> directories; + std::list<add_on_entry_info> pending_entries; + std::list<add_on_entry_info> former_entries; +}; + + +}; // namespace Storage +}; // namespace BPrivate + +using namespace BPrivate::Storage; + +#endif // _ADD_ON_MONITOR_HANDLER_H