s3: Modifications to generic notify structures to allow implementation of OneFS notify.
[obnox/samba-ctdb.git] / source / librpc / idl / notify.idl
1 #include "idl_types.h"
2
3 /*
4    IDL structures for notify change code
5
6    this defines the structures used in the notify database code, and
7    the change notify buffers
8 */
9
10 [
11   pointer_default(unique)
12 ]
13 interface notify
14 {
15
16         /* structure used in the notify database */
17         typedef [public] struct {
18                 server_id server;
19                 uint32 filter; /* filter to apply in this directory */
20                 uint32 subdir_filter; /* filter to apply in child directories */
21                 uint32 dir_fd;   /* fd of open directory */
22                 file_id dir_id;  /* file_id of open directory */
23                 utf8string path;
24                 uint32 path_len; /* saves some computation on search */
25                 pointer private_data;
26         } notify_entry;
27
28         /*
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.
33
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         
38         */
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;
45
46         typedef [public] struct {
47                 uint32 num_depths;
48                 notify_depth depth[num_depths];
49         } notify_array;
50
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;
57
58 }