Define discrinants first.
[Samba/vfs_proxy.git] / source / librpc / idl / proxy.idl
blob79084304d93b4ea2873a095b96ff9335fb7256bf
3 uuid("bf25facd-cc1a-4067-9a23-2e20b26816e5"),
4 endpoint("ncacn_np:[\\pipe\\rpcproxy]", "ncacn_ip_tcp:", "ncalrpc:"),
5 pointer_default(unique),
6 version(1.0),
7 helpstring("ufomechanic Caching Proxy")
9 interface rpcproxy
11 NTSTATUS proxy_Read(
12 [in] uint32 fnum, /* file number as supplied by remote device */
13 [in] uint32 mincnt,
14 [in] uint32 maxcnt,
15 [in] hyper offset,
16 [in] uint8 read_for_execute,
17 [in,out] uint8 flags, /* read_for_execute, zlib, md5 etc */
18 [in] [switch_is(flags & PROXY_USE_CACHE)] digest_ digest,
19 [out] uint32 nread,
20 [out] [switch_is(flags)] Read_data response
23 NTSTATUS proxy_Write(
24 [in] uint32 fnum, /* file number as supplied by remote device */
25 [in] hyper offset,
26 [in] uint32 count, /* the uncompressed count */
27 [in] uint16 mode,
28 [in] uint8 flags, /* read_for_execute, zlib, md5 etc */
29 [in] [switch_is(flags)] Write_data data,
30 [out] uint32 nwritten,
31 [out] uint32 remaining
34 typedef enum {
35 PROXY_USE_CACHE = 1,
36 PROXY_USE_ZLIB = 2
37 } proxy_Read_flags;
39 typedef struct digest {
40 uint8 data[16];
41 } digest;
43 typedef [nodiscriminant,switch_type(uint8)] union {
44 [case(PROXY_USE_CACHE)] uint8 digest[16];
45 [default];
46 } digest_;
48 typedef struct {
49 uint32 count;
50 [nodiscriminant,size_is(count)] uint8 data[];
51 } Read_data_generic;
53 typedef [nodiscriminant,switch_type(uint8)] union {
54 [case(0)] Read_data_generic generic;
55 [case(PROXY_USE_ZLIB)] Read_data_generic compress;
56 [default];
57 } Read_data;
59 typedef struct {
60 uint32 count;
61 [nodiscriminant,size_is(count)] uint8 data[];
62 } Write_data_generic;
64 typedef [nodiscriminant,switch_type(uint8)] union {
65 [case(0)] Write_data_generic generic;
66 [case(PROXY_USE_ZLIB)] Write_data_generic compress;
67 [default];
68 } Write_data;