summaryrefslogtreecommitdiff
path: root/source4/librpc/idl/echo.idl
blob: 85b86c310e83f9fd58b26f81dc84bd5877b17d68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "idl_types.h"


[
  uuid(60a15ec5-4de8-11d7-a637-005056a20182),
  endpoints(rpcecho, TCP-0),
  version(1.0),
  helpstring("Simple echo pipe")
]
interface rpcecho
{
	/* Add one to an integer */
	void echo_AddOne(
		[in,out,ref] uint32 *v
	);
	/* Echo an array of bytes back at the caller */
	void echo_EchoData(
		[in] uint32 len,
		[in] [size_is(len)] uint8 in_data[],
		[out] [size_is(len)] uint8 out_data[]
	);
	/* Sink data to the server */
	void echo_SinkData(
		[in] uint32 len,
		[in,ref,size_is(len)] uint8 *data
	);
	/* Source data from server */
	void echo_SourceData(
		[in] uint32 len,
		[out,ref,size_is(len)] uint8 *data
	);


	/* test strings */
 	void echo_TestCall (
		[in]       unistr *s1,
		[out]      unistr *s2
 		);


	/* test some alignment issues */
	typedef struct {
		uint8 v;
	} echo_info1;

	typedef struct {
		uint16 v;
	} echo_info2;

	typedef struct {
		uint32 v;
	} echo_info3;

	typedef struct {
		HYPER_T v;
	} echo_info4;

	typedef struct {
		uint8 v1;
		HYPER_T v2;
	} echo_info5;

	typedef struct {
		uint8 v1;
		echo_info1 info1;
	} echo_info6;

	typedef union {
		[case(1)]  echo_info1 info1;
	} echo_XXX;

	typedef struct {
		uint8 v1;
		echo_info4 info4;
	} echo_info7;

	typedef union {
		[case(1)]  echo_info1 info1;
		[case(2)]  echo_info2 info2;
		[case(3)]  echo_info3 info3;
		[case(4)]  echo_info4 info4;
		[case(5)]  echo_info5 info5;
		[case(6)]  echo_info6 info6;
		[case(7)]  echo_info7 info7;
	} echo_Info;

	NTSTATUS echo_TestCall2 (
		     [in]                    uint16 level,
		     [out,switch_is(level)]  echo_Info *info
		);
}