cfd4a21d90135905665addae32e9d0e4368d9c1f
[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
150         internal static partial class Proxy
151         {
152             //typedef void (*rpc_port_proxy_connected_event_cb)(const char *ep, const char* port_name, rpc_port_h port, void* data);
153             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
154             internal delegate void ConnectedEventCallback(string endPoint, string port_name, IntPtr port, IntPtr data);
155
156             //typedef void (*rpc_port_proxy_disconnected_event_cb)(const char *ep, const char* port_name, void* data);
157             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
158             internal delegate void DisconnectedEventCallback(string endPoint, string port_name, IntPtr data);
159
160             //typedef void (*rpc_port_proxy_rejected_event_cb) (const char* ep, const char* port_name, void* data);
161             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
162             internal delegate void RejectedEventCallback(string endPoint, string port_name, IntPtr data);
163
164             //typedef void (*rpc_port_proxy_received_event_cb) (const char* ep, const char* port_name, void* data);
165             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
166             internal delegate void ReceivedEventCallback(string endPoint, string port_name, IntPtr data);
167
168             //int rpc_port_proxy_create(rpc_port_proxy_h *h);
169             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_create")]
170             internal static extern ErrorCode Create(out IntPtr handle);
171
172             //int rpc_port_proxy_destroy(rpc_port_proxy_h h);
173             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_destroy")]
174             internal static extern ErrorCode Destroy(IntPtr handle);
175
176             //int rpc_port_proxy_connect(rpc_port_proxy_h h, const char *appid, const char* port);
177             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_connect")]
178             internal static extern ErrorCode Connect(IntPtr handle, string appId, string port);
179
180             //int rpc_port_proxy_add_connected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_connected_event_cb cb, void* data);
181             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_connected_event_cb")]
182             internal static extern ErrorCode AddConnectedEventCb(IntPtr handle, ConnectedEventCallback cb, IntPtr data);
183
184             //int rpc_port_proxy_add_disconnected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_disconnected_event_cb cb, void* data);
185             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_disconnected_event_cb")]
186             internal static extern ErrorCode AddDisconnectedEventCb(IntPtr handle, DisconnectedEventCallback cb, IntPtr data);
187
188             //int rpc_port_proxy_add_rejected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_rejected_event_cb cb, void* data);
189             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_rejected_event_cb")]
190             internal static extern ErrorCode AddRejectedEventCb(IntPtr handle, RejectedEventCallback cb, IntPtr data);
191
192             //int rpc_port_proxy_add_received_event_cb(rpc_port_proxy_h h, rpc_port_proxy_received_event_cb cb, void* data);
193             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_received_event_cb")]
194             internal static extern ErrorCode AddReceivedEventCb(IntPtr handle, ReceivedEventCallback cb, IntPtr data);
195
196             //int rpc_port_proxy_get_port(rpc_port_proxy_h h, rpc_port_port_type_e type, rpc_port_h* port);
197             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_get_port")]
198             internal static extern ErrorCode GetPort(IntPtr handle, PortType t, out IntPtr port);
199
200             //int rpc_port_proxy_connect_sync(rpc_port_proxy_h h, const char* appid, const char* port);
201             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_connect_sync")]
202             internal static extern ErrorCode ConnectSync(IntPtr handle, string appId, string port);
203         }
204
205         internal static partial class Stub
206         {
207             //typedef void (*rpc_port_stub_connected_event_cb)(const char *sender, const char *instance, void* data);
208             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
209             internal delegate void ConnectedEventCallback(string sender, string instance, IntPtr data);
210
211             //typedef void (* rpc_port_stub_disconnected_event_cb) (const char* sender, const char *instance, void* data);
212             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
213             internal delegate void DisconnectedEventCallback(string sender, string instance, IntPtr data);
214
215             //typedef void (* rpc_port_stub_received_event_cb) (const char* sender, const char *instance, rpc_port_h port, void* data);
216             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
217             internal delegate int ReceivedEventCallback(string sender, string instance, IntPtr port, IntPtr data);
218
219             //int rpc_port_stub_create(rpc_port_stub_h* h, const char* port_name);
220             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_create")]
221             internal static extern ErrorCode Create(out IntPtr handle, string portName);
222
223             //int rpc_port_stub_destroy(rpc_port_stub_h h);
224             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_destroy")]
225             internal static extern ErrorCode Destroy(IntPtr handle);
226
227             //int rpc_port_stub_listen(rpc_port_stub_h h);
228             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_listen")]
229             internal static extern ErrorCode Listen(IntPtr handle);
230
231             //int rpc_port_stub_add_connected_event_cb(rpc_port_stub_h h, rpc_port_stub_connected_event_cb cb, void* data);
232             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_connected_event_cb")]
233             internal static extern ErrorCode AddConnectedEventCb(IntPtr handle, ConnectedEventCallback cb, IntPtr data);
234
235             //int rpc_port_stub_add_disconnected_event_cb(rpc_port_stub_h h, rpc_port_stub_disconnected_event_cb cb, void* data);
236             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_disconnected_event_cb")]
237             internal static extern ErrorCode AddDisconnectedEventCb(IntPtr handle, DisconnectedEventCallback cb, IntPtr data);
238
239             //int rpc_port_stub_add_received_event_cb(rpc_port_stub_h h, rpc_port_stub_received_event_cb cb, void* data);
240             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_received_event_cb")]
241             internal static extern ErrorCode AddReceivedEventCb(IntPtr handle, ReceivedEventCallback cb, IntPtr data);
242
243             //int rpc_port_stub_add_privilege(rpc_port_stub_h h, const char *privilege);
244             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_privilege")]
245             internal static extern ErrorCode AddPrivilege(IntPtr handle, string privilege);
246
247             //int rpc_port_stub_set_trusted(rpc_port_stub_h h, const bool trusted);
248             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_set_trusted")]
249             internal static extern ErrorCode SetTrusted(IntPtr handle, bool trusted);
250
251             //int rpc_port_stub_get_port(rpc_port_stub_h h, rpc_port_port_type_e type, const char* instance, rpc_port_h *port);
252             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_get_port")]
253             internal static extern ErrorCode GetPort(IntPtr handle, PortType t, string instance, out IntPtr port);
254         }
255
256         internal static partial class Port
257         {
258             //int rpc_port_set_private_sharing_array(rpc_port_h port, const char* paths[], unsigned int size);
259             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_set_private_sharing_array")]
260             internal static extern ErrorCode SetPrivateSharingArray(IntPtr handle, string[] paths, uint size);
261
262             //int rpc_port_set_private_sharing(rpc_port_h port, const char* path);
263             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_set_private_sharing")]
264             internal static extern ErrorCode SetPrivateSharing(IntPtr handle, string path);
265
266             //int rpc_port_unset_private_sharing(rpc_port_h port);
267             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_unset_private_sharing")]
268             internal static extern ErrorCode UnsetPrivateSharing(IntPtr handle);
269         }
270     }
271 }