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] 13interface 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 typedef [public] struct { 29 uint32 num_entries; 30 notify_entry entries[num_entries]; 31 } notify_entry_array; 32 33 /* 34 to allow for efficient search for matching entries, we 35 divide them by the directory depth, with a separate array 36 per depth. The entries within each depth are sorted by path, 37 allowing for a bisection search. 38 39 The max_mask and max_mask_subdir at each depth is the 40 bitwise or of the filters and subdir filters for all entries 41 at that depth. This allows a depth to be quickly skipped if 42 no entries will match the target filter 43 */ 44 typedef struct { 45 uint32 max_mask; 46 uint32 max_mask_subdir; 47 uint32 num_entries; 48 notify_entry entries[num_entries]; 49 } notify_depth; 50 51 typedef [public] struct { 52 uint32 num_depths; 53 notify_depth depth[num_depths]; 54 } notify_array; 55 56 /* structure sent between servers in notify messages */ 57 typedef [public] struct { 58 uint32 action; 59 utf8string path; 60 pointer private_data; 61 } notify_event; 62 63} 64