Merge branch 'master' of /home/tridge/samba/git/combined
[Samba/aatanasov.git] / source4 / librpc / idl / notify.idl
bloba19f7376785e6d7d7f39d6429dab31f4a2363675
1 #include "idl_types.h"
3 /*
4 IDL structures for notify change code
6 this defines the structures used in the notify database code, and
7 the change notify buffers
8 */
10 import "server_id.idl";
13 pointer_default(unique)
15 interface notify
18 /* structure used in the notify database */
19 typedef [public] struct {
20 server_id server;
21 uint32 filter; /* filter to apply in this directory */
22 uint32 subdir_filter; /* filter to apply in child directories */
23 utf8string path;
24 uint32 path_len; /* saves some computation on search */
25 pointer private_data;
26 } notify_entry;
29 to allow for efficient search for matching entries, we
30 divide them by the directory depth, with a separate array
31 per depth. The entries within each depth are sorted by path,
32 allowing for a bisection search.
34 The max_mask and max_mask_subdir at each depth is the
35 bitwise or of the filters and subdir filters for all entries
36 at that depth. This allows a depth to be quickly skipped if
37 no entries will match the target filter
39 typedef struct {
40 uint32 max_mask;
41 uint32 max_mask_subdir;
42 uint32 num_entries;
43 notify_entry entries[num_entries];
44 } notify_depth;
46 typedef [public] struct {
47 uint32 num_depths;
48 notify_depth depth[num_depths];
49 } notify_array;
51 /* structure sent between servers in notify messages */
52 typedef [public] struct {
53 uint32 action;
54 utf8string path;
55 pointer private_data;
56 } notify_event;