[Applications.RPCPort] Add new constructor and method for Parcel (#3549)
[platform/core/csapi/tizenfx.git] / src / Tizen.Applications.Common / Interop / Interop.RPCPort.cs
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19
20 using Tizen.Internals.Errors;
21 using Tizen.Applications;
22 using System.Reflection;
23
24 internal static partial class Interop
25 {
26     internal static partial class LibRPCPort
27     {
28         internal enum ErrorCode
29         {
30             None = Tizen.Internals.Errors.ErrorCode.None,
31             InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,
32             OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory,
33             PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,
34             IoError = Tizen.Internals.Errors.ErrorCode.IoError,
35         }
36
37         internal enum PortType
38         {
39             Main,
40             Callback
41         }
42
43         internal static partial class Parcel
44         {
45             //int rpc_port_parcel_create(rpc_port_parcel_h *h);
46             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_create")]
47             internal static extern ErrorCode Create(out IntPtr handle);
48
49             //int rpc_port_parcel_create_from_port(rpc_port_parcel_h *h, rpc_port_h port);
50             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_create_from_port")]
51             internal static extern ErrorCode CreateFromPort(out IntPtr parcelHandle, IntPtr portHandle);
52
53             //int rpc_port_parcel_send(rpc_port_parcel_h h, rpc_port_h port);
54             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_send")]
55             internal static extern ErrorCode Send(IntPtr parcelHandle, IntPtr portHandle);
56
57             //int rpc_port_parcel_destroy(rpc_port_parcel_h h);
58             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_destroy")]
59             internal static extern ErrorCode Destroy(IntPtr handle);
60
61             //int rpc_port_parcel_write_byte(rpc_port_parcel_h h, char b);
62             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_byte")]
63             internal static extern ErrorCode WriteByte(IntPtr parcelHandle, byte b);
64
65             //int rpc_port_parcel_write_int16(rpc_port_parcel_h h, short i);
66             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_int16")]
67             internal static extern ErrorCode WriteInt16(IntPtr parcelHandle, short i);
68
69             //int rpc_port_parcel_write_int32(rpc_port_parcel_h h, int i);
70             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_int32")]
71             internal static extern ErrorCode WriteInt32(IntPtr parcelHandle, int i);
72
73             //int rpc_port_parcel_write_int64(rpc_port_parcel_h h, int i);
74             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_int64")]
75             internal static extern ErrorCode WriteInt64(IntPtr parcelHandle, long i);
76
77             //int rpc_port_parcel_write_float(rpc_port_parcel_h h, float f);
78             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_float")]
79             internal static extern ErrorCode WriteFloat(IntPtr parcelHandle, float f);
80
81             //int rpc_port_parcel_write_double(rpc_port_parcel_h h, double d);
82             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_double")]
83             internal static extern ErrorCode WriteDouble(IntPtr parcelHandle, double d);
84
85             //int rpc_port_parcel_write_string(rpc_port_parcel_h h, const char* str);
86             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_string")]
87             internal static extern ErrorCode WriteString(IntPtr parcelHandle, string str);
88
89             //int rpc_port_parcel_write_bool(rpc_port_parcel_h h, bool b);
90             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_bool")]
91             internal static extern ErrorCode WriteBool(IntPtr parcelHandle, bool b);
92
93             //int rpc_port_parcel_write_bundle(rpc_port_parcel_h h, bundle* b);
94             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_bundle")]
95             internal static extern ErrorCode WriteBundle(IntPtr parcelHandle, IntPtr b);
96
97             //int rpc_port_parcel_write_array_count(rpc_port_parcel_h h, int count);
98             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_array_count")]
99             internal static extern ErrorCode WriteArrayCount(IntPtr parcelHandle, int count);
100
101             //int rpc_port_parcel_read_byte(rpc_port_parcel_h h, char* b);
102             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_byte")]
103             internal static extern ErrorCode ReadByte(IntPtr parcelHandle, out byte b);
104
105             //int rpc_port_parcel_read_int16(rpc_port_parcel_h h, short *i);
106             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_int16")]
107             internal static extern ErrorCode ReadInt16(IntPtr parcelHandle, out short i);
108
109             //int rpc_port_parcel_read_int32(rpc_port_parcel_h h, int* i);
110             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_int32")]
111             internal static extern ErrorCode ReadInt32(IntPtr parcelHandle, out int i);
112
113             //int rpc_port_parcel_read_int64(rpc_port_parcel_h h, long long* i);
114             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_int64")]
115             internal static extern ErrorCode ReadInt64(IntPtr parcelHandle, out long i);
116
117             //int rpc_port_parcel_read_float(rpc_port_parcel_h h, float *f);
118             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_float")]
119             internal static extern ErrorCode ReadFloat(IntPtr parcelHandle, out float f);
120
121             //int rpc_port_parcel_read_double(rpc_port_parcel_h h, double *d);
122             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_double")]
123             internal static extern ErrorCode ReadDouble(IntPtr parcelHandle, out double f);
124
125             //int rpc_port_parcel_read_string(rpc_port_parcel_h h, char** str);
126             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_string")]
127             internal static extern ErrorCode ReadString(IntPtr parcelHandle, out string str);
128
129             //int rpc_port_parcel_read_bool(rpc_port_parcel_h h, bool *b);
130             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_bool")]
131             internal static extern ErrorCode ReadBool(IntPtr parcelHandle, out bool b);
132
133             //int rpc_port_parcel_read_bundle(rpc_port_parcel_h h, bundle** b);
134             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_bundle")]
135             internal static extern ErrorCode ReadBundle(IntPtr parcelHandle, out IntPtr b);
136
137             //int rpc_port_parcel_read_array_count(rpc_port_parcel_h h, int *count);
138             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_array_count")]
139             internal static extern ErrorCode ReadArrayCount(IntPtr parcelHandle, out int count);
140
141             //int rpc_port_parcel_burst_read(rpc_port_parcel_h h, unsigned char *buf, unsigned int size);
142             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_burst_read")]
143             internal static extern ErrorCode Read(IntPtr parcelHandle, [In, Out] byte[] buf, int size);
144
145             //int rpc_port_parcel_burst_write(rpc_port_parcel_h h, const unsigned char *buf, unsigned int size);
146             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_burst_write")]
147             internal static extern ErrorCode Write(IntPtr parcelHandle, byte[] buf, int size);
148
149             //int rpc_port_parcel_get_header(rpc_port_parcel_h h, rpc_port_parcel_header_h *header);
150             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_get_header")]
151             internal static extern ErrorCode GetHeader(IntPtr parcelHandle, out IntPtr ParcelHeaderHandle);
152
153             //int rpc_port_parcel_header_set_tag(rpc_port_parcel_header_h header, const char *tag);
154             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_set_tag")]
155             internal static extern ErrorCode SetTag(IntPtr parcelHeaderHandle, string tag);
156
157             //int rpc_port_parcel_header_get_tag(rpc_port_parcel_header_h header, char **tag);
158             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_get_tag")]
159             internal static extern ErrorCode GetTag(IntPtr parcelHeaderHandle, out string tag);
160
161             //int rpc_port_parcel_header_set_seq_num(rpc_port_parcel_header_h header, int seq_num);
162             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_set_seq_num")]
163             internal static extern ErrorCode SetSeqNum(IntPtr parcelHeaderHandle, int seq_num);
164
165             //int rpc_port_parcel_header_get_seq_num(rpc_port_parcel_header_h header, int *seq_num);
166             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_get_seq_num")]
167             internal static extern ErrorCode GetSeqNum(IntPtr parcelHeaderHandle, out int seq_num);
168
169             //int rpc_port_parcel_header_get_timestamp(rpc_port_parcel_header_h header, struct timespec *timestamp);
170             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_header_get_timestamp")]
171             internal static extern ErrorCode GetTimeStamp(IntPtr parcelHeaderHandle, ref Libc.TimeStamp time);
172
173             //int rpc_port_parcel_get_raw(rpc_port_parcel_h h, void **raw, unsigned int *size);
174             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_get_raw")]
175             internal static extern ErrorCode GetRaw(IntPtr parcelHandle, out IntPtr raw, out uint size);
176
177             //int rpc_port_parcel_create_from_raw(rpc_port_parcel_h *h, const void *raw, unsigned int size);
178             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_create_from_raw")]
179             internal static extern ErrorCode CreateFromRaw(out IntPtr parcelHandle, byte[] raw, uint size);
180         }
181
182         internal static partial class Proxy
183         {
184             //typedef void (*rpc_port_proxy_connected_event_cb)(const char *ep, const char* port_name, rpc_port_h port, void* data);
185             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
186             internal delegate void ConnectedEventCallback(string endPoint, string port_name, IntPtr port, IntPtr data);
187
188             //typedef void (*rpc_port_proxy_disconnected_event_cb)(const char *ep, const char* port_name, void* data);
189             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
190             internal delegate void DisconnectedEventCallback(string endPoint, string port_name, IntPtr data);
191
192             //typedef void (*rpc_port_proxy_rejected_event_cb) (const char* ep, const char* port_name, void* data);
193             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
194             internal delegate void RejectedEventCallback(string endPoint, string port_name, IntPtr data);
195
196             //typedef void (*rpc_port_proxy_received_event_cb) (const char* ep, const char* port_name, void* data);
197             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
198             internal delegate void ReceivedEventCallback(string endPoint, string port_name, IntPtr data);
199
200             //int rpc_port_proxy_create(rpc_port_proxy_h *h);
201             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_create")]
202             internal static extern ErrorCode Create(out IntPtr handle);
203
204             //int rpc_port_proxy_destroy(rpc_port_proxy_h h);
205             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_destroy")]
206             internal static extern ErrorCode Destroy(IntPtr handle);
207
208             //int rpc_port_proxy_connect(rpc_port_proxy_h h, const char *appid, const char* port);
209             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_connect")]
210             internal static extern ErrorCode Connect(IntPtr handle, string appId, string port);
211
212             //int rpc_port_proxy_add_connected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_connected_event_cb cb, void* data);
213             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_connected_event_cb")]
214             internal static extern ErrorCode AddConnectedEventCb(IntPtr handle, ConnectedEventCallback cb, IntPtr data);
215
216             //int rpc_port_proxy_add_disconnected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_disconnected_event_cb cb, void* data);
217             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_disconnected_event_cb")]
218             internal static extern ErrorCode AddDisconnectedEventCb(IntPtr handle, DisconnectedEventCallback cb, IntPtr data);
219
220             //int rpc_port_proxy_add_rejected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_rejected_event_cb cb, void* data);
221             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_rejected_event_cb")]
222             internal static extern ErrorCode AddRejectedEventCb(IntPtr handle, RejectedEventCallback cb, IntPtr data);
223
224             //int rpc_port_proxy_add_received_event_cb(rpc_port_proxy_h h, rpc_port_proxy_received_event_cb cb, void* data);
225             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_received_event_cb")]
226             internal static extern ErrorCode AddReceivedEventCb(IntPtr handle, ReceivedEventCallback cb, IntPtr data);
227
228             //int rpc_port_proxy_get_port(rpc_port_proxy_h h, rpc_port_port_type_e type, rpc_port_h* port);
229             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_get_port")]
230             internal static extern ErrorCode GetPort(IntPtr handle, PortType t, out IntPtr port);
231
232             //int rpc_port_proxy_connect_sync(rpc_port_proxy_h h, const char* appid, const char* port);
233             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_connect_sync")]
234             internal static extern ErrorCode ConnectSync(IntPtr handle, string appId, string port);
235         }
236
237         internal static partial class Stub
238         {
239             //typedef void (*rpc_port_stub_connected_event_cb)(const char *sender, const char *instance, void* data);
240             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
241             internal delegate void ConnectedEventCallback(string sender, string instance, IntPtr data);
242
243             //typedef void (* rpc_port_stub_disconnected_event_cb) (const char* sender, const char *instance, void* data);
244             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
245             internal delegate void DisconnectedEventCallback(string sender, string instance, IntPtr data);
246
247             //typedef void (* rpc_port_stub_received_event_cb) (const char* sender, const char *instance, rpc_port_h port, void* data);
248             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
249             internal delegate int ReceivedEventCallback(string sender, string instance, IntPtr port, IntPtr data);
250
251             //int rpc_port_stub_create(rpc_port_stub_h* h, const char* port_name);
252             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_create")]
253             internal static extern ErrorCode Create(out IntPtr handle, string portName);
254
255             //int rpc_port_stub_destroy(rpc_port_stub_h h);
256             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_destroy")]
257             internal static extern ErrorCode Destroy(IntPtr handle);
258
259             //int rpc_port_stub_listen(rpc_port_stub_h h);
260             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_listen")]
261             internal static extern ErrorCode Listen(IntPtr handle);
262
263             //int rpc_port_stub_add_connected_event_cb(rpc_port_stub_h h, rpc_port_stub_connected_event_cb cb, void* data);
264             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_connected_event_cb")]
265             internal static extern ErrorCode AddConnectedEventCb(IntPtr handle, ConnectedEventCallback cb, IntPtr data);
266
267             //int rpc_port_stub_add_disconnected_event_cb(rpc_port_stub_h h, rpc_port_stub_disconnected_event_cb cb, void* data);
268             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_disconnected_event_cb")]
269             internal static extern ErrorCode AddDisconnectedEventCb(IntPtr handle, DisconnectedEventCallback cb, IntPtr data);
270
271             //int rpc_port_stub_add_received_event_cb(rpc_port_stub_h h, rpc_port_stub_received_event_cb cb, void* data);
272             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_received_event_cb")]
273             internal static extern ErrorCode AddReceivedEventCb(IntPtr handle, ReceivedEventCallback cb, IntPtr data);
274
275             //int rpc_port_stub_add_privilege(rpc_port_stub_h h, const char *privilege);
276             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_privilege")]
277             internal static extern ErrorCode AddPrivilege(IntPtr handle, string privilege);
278
279             //int rpc_port_stub_set_trusted(rpc_port_stub_h h, const bool trusted);
280             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_set_trusted")]
281             internal static extern ErrorCode SetTrusted(IntPtr handle, bool trusted);
282
283             //int rpc_port_stub_get_port(rpc_port_stub_h h, rpc_port_port_type_e type, const char* instance, rpc_port_h *port);
284             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_get_port")]
285             internal static extern ErrorCode GetPort(IntPtr handle, PortType t, string instance, out IntPtr port);
286         }
287
288         internal static partial class Port
289         {
290             //int rpc_port_set_private_sharing_array(rpc_port_h port, const char* paths[], unsigned int size);
291             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_set_private_sharing_array")]
292             internal static extern ErrorCode SetPrivateSharingArray(IntPtr handle, string[] paths, uint size);
293
294             //int rpc_port_set_private_sharing(rpc_port_h port, const char* path);
295             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_set_private_sharing")]
296             internal static extern ErrorCode SetPrivateSharing(IntPtr handle, string path);
297
298             //int rpc_port_unset_private_sharing(rpc_port_h port);
299             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_unset_private_sharing")]
300             internal static extern ErrorCode UnsetPrivateSharing(IntPtr handle);
301
302             //int rpc_port_disconnect(rpc_port_h h);
303             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_disconnect")]
304             internal static extern ErrorCode Disconnect(IntPtr handle);
305         }
306     }
307 }