2 * Copyright (c) 2021 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.
20 #include "vine-constants.h"
22 #include "vine-data-path.h"
23 #include "vine-event-loop.h"
25 #include "vine-private.h"
26 #include "vine-security.h"
27 #include "vine-service.h"
28 #include "vine-session.h"
29 #include "vine-utils.h"
31 API int vine_initialize()
34 CHECK_FEATURE_SUPPORTED;
39 API int vine_deinitialize()
42 CHECK_FEATURE_SUPPORTED;
44 return _vine_deinit();
47 API int vine_get_capabilities(vine_capability_type_e type, int *capabilities)
50 CHECK_FEATURE_SUPPORTED;
52 return _vine_get_capabilities(type, capabilities);
55 int vine_set_event_loop(vine_event_loop_e loop)
58 CHECK_FEATURE_SUPPORTED;
60 return _vine_set_event_loop(loop);
63 API int vine_session_get_event_fd(vine_session_h session, int *fd)
66 CHECK_FEATURE_SUPPORTED;
68 return _vine_session_get_event_fd(session, fd);
71 API int vine_session_process_event(vine_session_h session)
74 CHECK_FEATURE_SUPPORTED;
76 return _vine_session_process_event(session);
79 API int vine_session_create(vine_session_h *session)
82 CHECK_FEATURE_SUPPORTED;
84 return _vine_session_create(session);
87 API int vine_session_destroy(vine_session_h session)
90 CHECK_FEATURE_SUPPORTED;
92 return _vine_session_destroy(session);
95 API int vine_session_set_registered_cb(vine_session_h session,
96 vine_session_registered_cb callback, void *user_data)
99 CHECK_FEATURE_SUPPORTED;
101 return _vine_session_set_registered_cb(session, callback, user_data);
104 API int vine_session_unset_registered_cb(vine_session_h session)
107 CHECK_FEATURE_SUPPORTED;
109 return _vine_session_unset_registered_cb(session);
112 API int vine_session_set_discovered_cb(vine_session_h session,
113 vine_session_discovered_cb callback, void *user_data)
116 CHECK_FEATURE_SUPPORTED;
118 return _vine_session_set_discovered_cb(session, callback, user_data);
121 API int vine_session_unset_discovered_cb(vine_session_h session)
124 CHECK_FEATURE_SUPPORTED;
126 return _vine_session_unset_discovered_cb(session);
129 API int vine_session_set_discovery_method(vine_session_h session, vine_discovery_method_e method)
132 CHECK_FEATURE_SUPPORTED;
134 return _vine_session_set_discovery_method(session, method);
137 API int vine_session_register(vine_session_h session,
138 vine_service_h service, const char *iface_name)
141 CHECK_FEATURE_SUPPORTED;
143 return _vine_session_register(session, service, iface_name);
146 API int vine_session_unregister(vine_session_h session)
149 CHECK_FEATURE_SUPPORTED;
151 return _vine_session_unregister(session);
154 API int vine_session_start_discovery(vine_session_h session,
155 const char *service_type, const char *iface_name)
158 CHECK_FEATURE_SUPPORTED;
160 return _vine_session_start_discovery(session, service_type, iface_name);
163 API int vine_session_stop_discovery(vine_session_h session)
166 CHECK_FEATURE_SUPPORTED;
168 return _vine_session_stop_discovery(session);
171 API int vine_session_set_ip_resolved_cb(vine_session_h session,
172 vine_service_h service, vine_address_family_e address_family,
173 vine_session_ip_resolved_cb callback, void *user_data)
176 CHECK_FEATURE_SUPPORTED;
178 return _vine_session_set_ip_resolved_cb(session, service,
179 address_family, callback, user_data);
182 API int vine_session_unset_ip_resolved_cb(vine_session_h session,
183 vine_service_h service)
186 CHECK_FEATURE_SUPPORTED;
188 return _vine_session_unset_ip_resolved_cb(session, service);
191 API int vine_service_create(vine_service_h *service)
194 CHECK_FEATURE_SUPPORTED;
196 return _vine_service_create(service, true);
199 API int vine_service_destroy(vine_service_h service)
202 CHECK_FEATURE_SUPPORTED;
204 return _vine_service_destroy(service);
207 API int vine_service_clone(vine_service_h origin, vine_service_h *cloned)
210 CHECK_FEATURE_SUPPORTED;
212 return _vine_service_clone(origin, cloned);
215 API int vine_service_set_type(vine_service_h service, const char *service_type)
218 CHECK_FEATURE_SUPPORTED;
220 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
221 RET_VAL_IF(_is_discovered_service(service), VINE_ERROR_INVALID_OPERATION,
222 "cannot set service type for a discovered service");
223 return _vine_service_set_type(service, service_type);
226 API int vine_service_get_type(vine_service_h service, char **service_type)
229 CHECK_FEATURE_SUPPORTED;
231 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
232 RET_VAL_IF(service_type == NULL, VINE_ERROR_INVALID_PARAMETER,
233 "service_type is NULL");
235 *service_type = (char *)strndup(_vine_service_get_type(service),
236 VINE_MAX_SERVICE_TYPE_LEN);
237 RET_VAL_IF(*service_type == NULL, VINE_ERROR_OUT_OF_MEMORY, "Out of memory");
238 return VINE_ERROR_NONE;
241 API int vine_service_set_name(vine_service_h service, const char *service_name)
244 CHECK_FEATURE_SUPPORTED;
246 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
247 RET_VAL_IF(_is_discovered_service(service), VINE_ERROR_INVALID_OPERATION,
248 "cannot set service name for a discovered service");
249 return _vine_service_set_name(service, service_name);
252 API int vine_service_get_name(vine_service_h service, char **service_name)
255 CHECK_FEATURE_SUPPORTED;
257 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
258 RET_VAL_IF(service_name == NULL, VINE_ERROR_INVALID_PARAMETER,
259 "service_name is NULL");
261 *service_name = (char *)strndup(_vine_service_get_name(service),
262 VINE_MAX_SERVICE_TYPE_LEN);
263 RET_VAL_IF(*service_name == NULL, VINE_ERROR_OUT_OF_MEMORY, "Out of memory");
264 return VINE_ERROR_NONE;
267 API int vine_service_add_attribute(vine_service_h service,
268 const char *key, const char *value)
271 CHECK_FEATURE_SUPPORTED;
273 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
274 RET_VAL_IF(_is_discovered_service(service), VINE_ERROR_INVALID_OPERATION,
275 "cannot add attributes for a discovered service");
276 return _vine_service_add_attribute(service, key, value);
279 API int vine_service_remove_attribute(vine_service_h service, const char *key)
282 CHECK_FEATURE_SUPPORTED;
284 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
285 RET_VAL_IF(_is_discovered_service(service), VINE_ERROR_INVALID_OPERATION,
286 "cannot add attributes for a discovered service");
287 return _vine_service_remove_attribute(service, key);
290 API int vine_service_foreach_attribute(vine_service_h service,
291 vine_service_attribute_cb callback, void *user_data)
294 CHECK_FEATURE_SUPPORTED;
296 return _vine_service_foreach_attribute(service, callback, user_data);
299 API int vine_service_set_port(vine_service_h service, int port)
302 CHECK_FEATURE_SUPPORTED;
304 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
305 RET_VAL_IF(_is_discovered_service(service), VINE_ERROR_INVALID_OPERATION,
306 "cannot set port for a discovered service");
307 return _vine_service_set_port(service, port);
310 API int vine_service_get_port(vine_service_h service, int *port)
313 CHECK_FEATURE_SUPPORTED;
315 RET_VAL_IF(service == NULL, VINE_ERROR_INVALID_PARAMETER, "service is NULL");
316 RET_VAL_IF(port == NULL, VINE_ERROR_INVALID_PARAMETER, "port is NULL");
318 *port = _vine_service_get_port(service);
319 return VINE_ERROR_NONE;
322 API int vine_dp_create(vine_session_h session, vine_dp_type_e type, vine_dp_h *dp)
325 CHECK_FEATURE_SUPPORTED;
327 return _vine_dp_create(session, type, dp);
330 API int vine_dp_destroy(vine_dp_h dp)
333 CHECK_FEATURE_SUPPORTED;
335 return _vine_dp_destroy(dp);
338 API int vine_dp_get_id(vine_dp_h dp, char **id)
341 CHECK_FEATURE_SUPPORTED;
343 return _vine_dp_get_id(dp, id);
346 API int vine_dp_set_iface_name(vine_dp_h dp, const char *iface_name)
349 CHECK_FEATURE_SUPPORTED;
351 return _vine_dp_set_iface_name(dp, iface_name);
354 API int vine_dp_set_address_family(vine_dp_h dp, vine_address_family_e addr_family)
357 CHECK_FEATURE_SUPPORTED;
359 return _vine_dp_set_addr_family(dp, addr_family);
362 API int vine_dp_set_remote_ip(vine_dp_h dp, vine_address_family_e addr_family, const char *ip)
365 CHECK_FEATURE_SUPPORTED;
367 return _vine_dp_set_remote_ip(dp, addr_family, ip);
370 API int vine_dp_get_remote_ip(vine_dp_h dp, vine_address_family_e *addr_family, char **ip)
373 CHECK_FEATURE_SUPPORTED;
375 return _vine_dp_get_remote_ip(dp, addr_family, ip);
378 API int vine_dp_set_remote_port(vine_dp_h dp, int port)
381 CHECK_FEATURE_SUPPORTED;
383 return _vine_dp_set_remote_port(dp, port);
386 API int vine_dp_get_remote_port(vine_dp_h dp, int *port)
389 CHECK_FEATURE_SUPPORTED;
391 return _vine_dp_get_remote_port(dp, port);
394 API int vine_dp_get_ip(vine_dp_h dp, vine_address_family_e *addr_family, char **ip)
397 CHECK_FEATURE_SUPPORTED;
399 return _vine_dp_get_ip(dp, addr_family, ip);
402 API int vine_dp_set_port(vine_dp_h dp, int port)
405 CHECK_FEATURE_SUPPORTED;
407 return _vine_dp_set_port(dp, port);
410 API int vine_dp_get_port(vine_dp_h dp, int *port)
413 CHECK_FEATURE_SUPPORTED;
415 return _vine_dp_get_port(dp, port);
418 API int vine_dp_set_topic(vine_dp_h dp, const char *topic)
421 CHECK_FEATURE_SUPPORTED;
423 return _vine_dp_set_topic(dp, topic);
426 API int vine_dp_set_max_connections(vine_dp_h dp, int max_conn)
429 CHECK_FEATURE_SUPPORTED;
431 return _vine_dp_set_max_connections(dp, max_conn);
434 API int vine_dp_set_security(vine_dp_h dp, vine_security_h security)
437 CHECK_FEATURE_SUPPORTED;
439 return _vine_dp_set_security(dp, security);
442 API int vine_dp_set_accepted_cb(vine_dp_h dp, vine_dp_accepted_cb callback, void *user_data)
445 CHECK_FEATURE_SUPPORTED;
447 return _vine_dp_set_accepted_cb(dp, callback, user_data);
450 API int vine_dp_unset_accepted_cb(vine_dp_h dp)
453 CHECK_FEATURE_SUPPORTED;
455 return _vine_dp_unset_accepted_cb(dp);
458 API int vine_dp_set_terminated_cb(vine_dp_h dp, vine_dp_terminated_cb callback, void *user_data)
461 CHECK_FEATURE_SUPPORTED;
463 return _vine_dp_set_terminated_cb(dp, callback, user_data);
466 API int vine_dp_unset_terminated_cb(vine_dp_h dp)
469 CHECK_FEATURE_SUPPORTED;
471 return _vine_dp_unset_terminated_cb(dp);
474 API int vine_dp_open(vine_dp_h dp, vine_dp_opened_cb callback, void *user_data)
477 CHECK_FEATURE_SUPPORTED;
479 return _vine_dp_open(dp, callback, user_data);
482 API int vine_dp_close(vine_dp_h dp)
485 CHECK_FEATURE_SUPPORTED;
487 return _vine_dp_close(dp);
490 API int vine_dp_send(vine_dp_h dp, unsigned char *buf, size_t len)
493 CHECK_FEATURE_SUPPORTED;
495 return _vine_dp_send(dp, buf, len);
498 API int vine_dp_recv(vine_dp_h dp,
499 unsigned char *buf, size_t buf_len, size_t *read_len)
502 CHECK_FEATURE_SUPPORTED;
504 return _vine_dp_recv(dp, buf, buf_len, read_len);
507 API int vine_dp_set_received_cb(vine_dp_h dp, vine_dp_received_cb callback, void *user_data)
510 CHECK_FEATURE_SUPPORTED;
512 return _vine_dp_set_received_cb(dp, callback, user_data);
515 API int vine_dp_unset_received_cb(vine_dp_h dp)
518 CHECK_FEATURE_SUPPORTED;
520 return _vine_dp_unset_received_cb(dp);
523 API int vine_dp_set_peer_joined_cb(vine_dp_h dp, vine_dp_peer_joined_cb callback, void *user_data)
526 CHECK_FEATURE_SUPPORTED;
528 return _vine_dp_set_peer_joined_cb(dp, callback, user_data);
531 API int vine_dp_unset_peer_joined_cb(vine_dp_h dp)
534 CHECK_FEATURE_SUPPORTED;
536 return _vine_dp_unset_peer_joined_cb(dp);
539 API int vine_dp_set_peer_left_cb(vine_dp_h dp, vine_dp_peer_left_cb callback, void *user_data)
542 CHECK_FEATURE_SUPPORTED;
544 return _vine_dp_set_peer_left_cb(dp, callback, user_data);
547 API int vine_dp_unset_peer_left_cb(vine_dp_h dp)
550 CHECK_FEATURE_SUPPORTED;
552 return _vine_dp_unset_peer_left_cb(dp);
555 API int vine_security_create(vine_security_h *security)
558 CHECK_FEATURE_SUPPORTED;
560 return _vine_security_create(security);
563 API int vine_security_destroy(vine_security_h security)
566 CHECK_FEATURE_SUPPORTED;
568 return _vine_security_destroy(security);
571 API int vine_security_set_type(vine_security_h security, vine_security_type_e type)
574 CHECK_FEATURE_SUPPORTED;
576 return _vine_security_set_type(security, type);
579 API int vine_security_get_type(vine_security_h security, vine_security_type_e *type)
582 CHECK_FEATURE_SUPPORTED;
584 return _vine_security_get_type(security, type);
587 API int vine_security_set_tls_version(vine_security_h security,
588 vine_security_tls_version_e version)
591 CHECK_FEATURE_SUPPORTED;
593 return _vine_security_set_tls_version(security, version);
596 API int vine_security_get_tls_version(vine_security_h security,
597 vine_security_tls_version_e *version)
600 CHECK_FEATURE_SUPPORTED;
602 return _vine_security_get_tls_version(security, version);
605 API int vine_security_set_verification_flags(vine_security_h security, int flags)
608 CHECK_FEATURE_SUPPORTED;
610 return _vine_security_set_verification_flags(security, flags);
613 API int vine_security_get_verification_flags(vine_security_h security, int*flags)
616 CHECK_FEATURE_SUPPORTED;
618 return _vine_security_get_verification_flags(security, flags);
621 API int vine_security_set_ca_path(vine_security_h security, const char *ca_path)
624 CHECK_FEATURE_SUPPORTED;
626 return _vine_security_set_ca_path(security, ca_path);
629 API int vine_security_get_ca_path(vine_security_h security, char **ca_path)
632 CHECK_FEATURE_SUPPORTED;
634 return _vine_security_get_ca_path(security, ca_path);
637 API int vine_security_set_cert_path(vine_security_h security, const char *cert_path)
640 CHECK_FEATURE_SUPPORTED;
642 return _vine_security_set_cert_path(security, cert_path);
645 API int vine_security_get_cert_path(vine_security_h security, char **cert_path)
648 CHECK_FEATURE_SUPPORTED;
650 return _vine_security_get_cert_path(security, cert_path);
653 API int vine_security_set_private_key(vine_security_h security, const char *key_path)
656 CHECK_FEATURE_SUPPORTED;
658 return _vine_security_set_private_key(security, key_path);
661 API int vine_security_get_private_key(vine_security_h security, char **key_path)
664 CHECK_FEATURE_SUPPORTED;
666 return _vine_security_get_private_key(security, key_path);
669 API int vine_security_set_psk(vine_security_h security, const char *psk)
672 CHECK_FEATURE_SUPPORTED;
674 return _vine_security_set_psk(security, psk);
677 API int vine_security_get_psk(vine_security_h security, char **psk)
680 CHECK_FEATURE_SUPPORTED;
682 return _vine_security_get_psk(security, psk);