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;
23 internal static partial class Interop
25 internal static partial class LibRPCPort
27 internal enum ErrorCode
29 None = Tizen.Internals.Errors.ErrorCode.None,
30 InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,
31 OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory,
32 PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,
33 IoError = Tizen.Internals.Errors.ErrorCode.IoError,
36 internal enum PortType
42 internal static partial class Parcel
44 //int rpc_port_parcel_create(rpc_port_parcel_h *h);
45 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_create")]
46 internal static extern ErrorCode Create(out IntPtr handle);
48 //int rpc_port_parcel_create_from_port(rpc_port_parcel_h *h, rpc_port_h port);
49 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_create_from_port")]
50 internal static extern ErrorCode CreateFromPort(out IntPtr parcelHandle, IntPtr portHandle);
52 //int rpc_port_parcel_send(rpc_port_parcel_h h, rpc_port_h port);
53 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_send")]
54 internal static extern ErrorCode Send(IntPtr parcelHandle, IntPtr portHandle);
56 //int rpc_port_parcel_destroy(rpc_port_parcel_h h);
57 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_destroy")]
58 internal static extern ErrorCode Destroy(IntPtr handle);
60 //int rpc_port_parcel_write_byte(rpc_port_parcel_h h, char b);
61 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_byte")]
62 internal static extern ErrorCode WriteByte(IntPtr parcelHandle, byte b);
64 //int rpc_port_parcel_write_int16(rpc_port_parcel_h h, short i);
65 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_int16")]
66 internal static extern ErrorCode WriteInt16(IntPtr parcelHandle, short i);
68 //int rpc_port_parcel_write_int32(rpc_port_parcel_h h, int i);
69 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_int32")]
70 internal static extern ErrorCode WriteInt32(IntPtr parcelHandle, int i);
72 //int rpc_port_parcel_write_int64(rpc_port_parcel_h h, int i);
73 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_int64")]
74 internal static extern ErrorCode WriteInt64(IntPtr parcelHandle, long i);
76 //int rpc_port_parcel_write_float(rpc_port_parcel_h h, float f);
77 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_float")]
78 internal static extern ErrorCode WriteFloat(IntPtr parcelHandle, float f);
80 //int rpc_port_parcel_write_double(rpc_port_parcel_h h, double d);
81 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_double")]
82 internal static extern ErrorCode WriteDouble(IntPtr parcelHandle, double d);
84 //int rpc_port_parcel_write_string(rpc_port_parcel_h h, const char* str);
85 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_string")]
86 internal static extern ErrorCode WriteString(IntPtr parcelHandle, string str);
88 //int rpc_port_parcel_write_bool(rpc_port_parcel_h h, bool b);
89 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_bool")]
90 internal static extern ErrorCode WriteBool(IntPtr parcelHandle, bool b);
92 //int rpc_port_parcel_write_bundle(rpc_port_parcel_h h, bundle* b);
93 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_bundle")]
94 internal static extern ErrorCode WriteBundle(IntPtr parcelHandle, IntPtr b);
96 //int rpc_port_parcel_write_array_count(rpc_port_parcel_h h, int count);
97 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_write_array_count")]
98 internal static extern ErrorCode WriteArrayCount(IntPtr parcelHandle, int count);
100 //int rpc_port_parcel_read_byte(rpc_port_parcel_h h, char* b);
101 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_byte")]
102 internal static extern ErrorCode ReadByte(IntPtr parcelHandle, out byte b);
104 //int rpc_port_parcel_read_int16(rpc_port_parcel_h h, short *i);
105 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_int16")]
106 internal static extern ErrorCode ReadInt16(IntPtr parcelHandle, out short i);
108 //int rpc_port_parcel_read_int32(rpc_port_parcel_h h, int* i);
109 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_int32")]
110 internal static extern ErrorCode ReadInt32(IntPtr parcelHandle, out int i);
112 //int rpc_port_parcel_read_int64(rpc_port_parcel_h h, long long* i);
113 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_int64")]
114 internal static extern ErrorCode ReadInt64(IntPtr parcelHandle, out long i);
116 //int rpc_port_parcel_read_float(rpc_port_parcel_h h, float *f);
117 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_float")]
118 internal static extern ErrorCode ReadFloat(IntPtr parcelHandle, out float f);
120 //int rpc_port_parcel_read_double(rpc_port_parcel_h h, double *d);
121 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_double")]
122 internal static extern ErrorCode ReadDouble(IntPtr parcelHandle, out double f);
124 //int rpc_port_parcel_read_string(rpc_port_parcel_h h, char** str);
125 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_string")]
126 internal static extern ErrorCode ReadString(IntPtr parcelHandle, out string str);
128 //int rpc_port_parcel_read_bool(rpc_port_parcel_h h, bool *b);
129 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_bool")]
130 internal static extern ErrorCode ReadBool(IntPtr parcelHandle, out bool b);
132 //int rpc_port_parcel_read_bundle(rpc_port_parcel_h h, bundle** b);
133 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_bundle")]
134 internal static extern ErrorCode ReadBundle(IntPtr parcelHandle, out IntPtr b);
136 //int rpc_port_parcel_read_array_count(rpc_port_parcel_h h, int *count);
137 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_read_array_count")]
138 internal static extern ErrorCode ReadArrayCount(IntPtr parcelHandle, out int count);
140 //int rpc_port_parcel_burst_read(rpc_port_parcel_h h, unsigned char *buf, unsigned int size);
141 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_burst_read")]
142 internal static extern ErrorCode Read(IntPtr parcelHandle, [In, Out] byte[] buf, int size);
144 //int rpc_port_parcel_burst_write(rpc_port_parcel_h h, const unsigned char *buf, unsigned int size);
145 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_parcel_burst_write")]
146 internal static extern ErrorCode Write(IntPtr parcelHandle, byte[] buf, int size);
149 internal static partial class Proxy
151 //typedef void (*rpc_port_proxy_connected_event_cb)(const char *ep, const char* port_name, rpc_port_h port, void* data);
152 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
153 internal delegate void ConnectedEventCallback(string endPoint, string port_name, IntPtr port, IntPtr data);
155 //typedef void (*rpc_port_proxy_disconnected_event_cb)(const char *ep, const char* port_name, void* data);
156 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
157 internal delegate void DisconnectedEventCallback(string endPoint, string port_name, IntPtr data);
159 //typedef void (*rpc_port_proxy_rejected_event_cb) (const char* ep, const char* port_name, void* data);
160 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
161 internal delegate void RejectedEventCallback(string endPoint, string port_name, IntPtr data);
163 //typedef void (*rpc_port_proxy_received_event_cb) (const char* ep, const char* port_name, void* data);
164 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
165 internal delegate void ReceivedEventCallback(string endPoint, string port_name, IntPtr data);
167 //int rpc_port_proxy_create(rpc_port_proxy_h *h);
168 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_create")]
169 internal static extern ErrorCode Create(out IntPtr handle);
171 //int rpc_port_proxy_destroy(rpc_port_proxy_h h);
172 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_destroy")]
173 internal static extern ErrorCode Destroy(IntPtr handle);
175 //int rpc_port_proxy_connect(rpc_port_proxy_h h, const char *appid, const char* port);
176 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_connect")]
177 internal static extern ErrorCode Connect(IntPtr handle, string appId, string port);
179 //int rpc_port_proxy_add_connected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_connected_event_cb cb, void* data);
180 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_connected_event_cb")]
181 internal static extern ErrorCode AddConnectedEventCb(IntPtr handle, ConnectedEventCallback cb, IntPtr data);
183 //int rpc_port_proxy_add_disconnected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_disconnected_event_cb cb, void* data);
184 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_disconnected_event_cb")]
185 internal static extern ErrorCode AddDisconnectedEventCb(IntPtr handle, DisconnectedEventCallback cb, IntPtr data);
187 //int rpc_port_proxy_add_rejected_event_cb(rpc_port_proxy_h h, rpc_port_proxy_rejected_event_cb cb, void* data);
188 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_rejected_event_cb")]
189 internal static extern ErrorCode AddRejectedEventCb(IntPtr handle, RejectedEventCallback cb, IntPtr data);
191 //int rpc_port_proxy_add_received_event_cb(rpc_port_proxy_h h, rpc_port_proxy_received_event_cb cb, void* data);
192 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_add_received_event_cb")]
193 internal static extern ErrorCode AddReceivedEventCb(IntPtr handle, ReceivedEventCallback cb, IntPtr data);
195 //int rpc_port_proxy_get_port(rpc_port_proxy_h h, rpc_port_port_type_e type, rpc_port_h* port);
196 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_proxy_get_port")]
197 internal static extern ErrorCode GetPort(IntPtr handle, PortType t, out IntPtr port);
200 internal static partial class Stub
202 //typedef void (*rpc_port_stub_connected_event_cb)(const char *sender, const char *instance, void* data);
203 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
204 internal delegate void ConnectedEventCallback(string sender, string instance, IntPtr data);
206 //typedef void (* rpc_port_stub_disconnected_event_cb) (const char* sender, const char *instance, void* data);
207 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
208 internal delegate void DisconnectedEventCallback(string sender, string instance, IntPtr data);
210 //typedef void (* rpc_port_stub_received_event_cb) (const char* sender, const char *instance, rpc_port_h port, void* data);
211 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
212 internal delegate int ReceivedEventCallback(string sender, string instance, IntPtr port, IntPtr data);
214 //int rpc_port_stub_create(rpc_port_stub_h* h, const char* port_name);
215 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_create")]
216 internal static extern ErrorCode Create(out IntPtr handle, string portName);
218 //int rpc_port_stub_destroy(rpc_port_stub_h h);
219 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_destroy")]
220 internal static extern ErrorCode Destroy(IntPtr handle);
222 //int rpc_port_stub_listen(rpc_port_stub_h h);
223 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_listen")]
224 internal static extern ErrorCode Listen(IntPtr handle);
226 //int rpc_port_stub_add_connected_event_cb(rpc_port_stub_h h, rpc_port_stub_connected_event_cb cb, void* data);
227 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_connected_event_cb")]
228 internal static extern ErrorCode AddConnectedEventCb(IntPtr handle, ConnectedEventCallback cb, IntPtr data);
230 //int rpc_port_stub_add_disconnected_event_cb(rpc_port_stub_h h, rpc_port_stub_disconnected_event_cb cb, void* data);
231 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_disconnected_event_cb")]
232 internal static extern ErrorCode AddDisconnectedEventCb(IntPtr handle, DisconnectedEventCallback cb, IntPtr data);
234 //int rpc_port_stub_add_received_event_cb(rpc_port_stub_h h, rpc_port_stub_received_event_cb cb, void* data);
235 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_received_event_cb")]
236 internal static extern ErrorCode AddReceivedEventCb(IntPtr handle, ReceivedEventCallback cb, IntPtr data);
238 //int rpc_port_stub_add_privilege(rpc_port_stub_h h, const char *privilege);
239 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_add_privilege")]
240 internal static extern ErrorCode AddPrivilege(IntPtr handle, string privilege);
242 //int rpc_port_stub_set_trusted(rpc_port_stub_h h, const bool trusted);
243 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_set_trusted")]
244 internal static extern ErrorCode SetTrusted(IntPtr handle, bool trusted);
246 //int rpc_port_stub_get_port(rpc_port_stub_h h, rpc_port_port_type_e type, const char* instance, rpc_port_h *port);
247 [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_get_port")]
248 internal static extern ErrorCode GetPort(IntPtr handle, PortType t, string instance, out IntPtr port);