haiku/headers/private/storage/AddOnMonitorHandler.h
Rene Gollent ca5e024130 Probably forgotten changes in the last commit, though I'm not sure if Axel had any other style cleanups in mind in this file. Fixes build at any rate.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28230 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-18 15:45:57 +00:00

62 lines
1.6 KiB
C++

#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> fDirectories;
std::list<add_on_entry_info> fPendingEntries;
std::list<add_on_entry_info> fFormerEntries;
};
}; // namespace Storage
}; // namespace BPrivate
using namespace BPrivate::Storage;
#endif // _ADD_ON_MONITOR_HANDLER_H