2 * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Runtime.InteropServices;
20 using Tizen.Internals.Errors;
21 using Tizen.Applications;
22 using System.Reflection;
24 internal static partial class Interop
26 internal static partial class LibRPCPort
28 internal enum ErrorCode
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,
37 internal enum PortType
43 internal static partial class Parcel
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
150 internal static partial class Proxy
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
205 internal static partial class Stub
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
256 internal static partial class Port
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);
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);
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);