Apache Celix  latest
Apache Celix is a framework for C, C++14 and C++17 to develop dynamic modular software applications using component and in-process service-oriented programming.
celix_dm_service_dependency.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #ifndef CELIX_DM_SERVICE_DEPENDENCY_H_
21 #define CELIX_DM_SERVICE_DEPENDENCY_H_
22 
23 #include "celix_types.h"
24 #include "celix_errno.h"
25 #include "celix_threads.h"
26 #include "celix_dm_info.h"
27 #include "celix_framework_export.h"
28 #include "celix_cleanup.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 
39 
40 typedef int (*celix_dm_service_update_fp)(void *handle, void* service);
41 typedef int (*celix_dm_service_swap_fp)(void *handle, void* oldService, void* newService);
42 
43 typedef int (*celix_dm_service_update_with_props_fp)(void *handle, void* service, const celix_properties_t *props);
44 typedef int (*celix_dm_service_swap_with_props_fp)(void *handle, void* oldService, void* newService, const celix_properties_t *newProps);
45 
50  celix_dm_service_swap_fp swap; //not used, deprecated
51 
57 
58 #define CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS { .set = NULL, \
59  .add = NULL, \
60  .remove = NULL, \
61  .swap = NULL, \
62  .setWithProps = NULL, \
63  .addWithProps = NULL, \
64  .removeWithProps = NULL, \
65  .swapWithProps = NULL }
66 
74 CELIX_FRAMEWORK_EXPORT celix_dm_service_dependency_t* celix_dmServiceDependency_create(void);
75 
83 CELIX_FRAMEWORK_EXPORT void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep);
84 
86 
90 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required);
91 
105 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy);
106 
110 CELIX_FRAMEWORK_EXPORT celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency);
111 
119 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char* serviceName, const char* serviceVersionRange, const char* filter);
120 
124 CELIX_FRAMEWORK_EXPORT const char* celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency);
125 
131 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set);
132 
139 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set);
140 
147 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts);
148 
154 CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void* handle);
155 
160 CELIX_FRAMEWORK_EXPORT dm_service_dependency_info_t* celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t* dep);
161 
165 CELIX_FRAMEWORK_EXPORT void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info);
166 
167 #ifdef __cplusplus
168 }
169 #endif
170 
171 #endif /* CELIX_DM_SERVICE_DEPENDENCY_H_ */
celix_dmServiceDependency_setCallback
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set)
celix_dm_service_dependency_callback_options::swapWithProps
celix_dm_service_swap_with_props_fp swapWithProps
Definition: celix_dm_service_dependency.h:55
celix_dm_service_dependency_callback_options::removeWithProps
celix_dm_service_update_with_props_fp removeWithProps
Definition: celix_dm_service_dependency.h:54
celix_dm_service_dependency_callback_options::add
celix_dm_service_update_fp add
Definition: celix_dm_service_dependency.h:48
celix_dm_service_dependency_strategy_enum
celix_dm_service_dependency_strategy_enum
Definition: celix_dm_service_dependency.h:35
celix_dm_info.h
celix_dm_service_dependency_info_struct
Definition: celix_dm_info.h:41
celix_dm_service_dependency_callback_options::remove
celix_dm_service_update_fp remove
Definition: celix_dm_service_dependency.h:49
celix_dmServiceDependency_setStrategy
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy)
celix_dm_service_dependency_callback_options_t
struct celix_dm_service_dependency_callback_options celix_dm_service_dependency_callback_options_t
celix_dmServiceDependency_getStrategy
CELIX_FRAMEWORK_EXPORT celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency)
celix_dm_service_dependency_callback_options::swap
celix_dm_service_swap_fp swap
Definition: celix_dm_service_dependency.h:50
celix_dm_service_dependency_callback_options::set
celix_dm_service_update_fp set
Definition: celix_dm_service_dependency.h:47
celix_dmServiceDependency_destroyInfo
CELIX_FRAMEWORK_EXPORT void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info)
celix_dm_service_dependency_callback_options::setWithProps
celix_dm_service_update_with_props_fp setWithProps
Definition: celix_dm_service_dependency.h:52
celix_dmServiceDependency_setRequired
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required)
celix_dm_service_dependency_callback_options::addWithProps
celix_dm_service_update_with_props_fp addWithProps
Definition: celix_dm_service_dependency.h:53
DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING
@ DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING
Definition: celix_dm_service_dependency.h:36
celix_dmServiceDependency_setCallbackHandle
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void *handle)
CELIX_DEFINE_AUTOPTR_CLEANUP_FUNC
CELIX_DEFINE_AUTOPTR_CLEANUP_FUNC(celix_dm_service_dependency_t, celix_dmServiceDependency_destroy)
celix_dm_service_swap_with_props_fp
int(* celix_dm_service_swap_with_props_fp)(void *handle, void *oldService, void *newService, const celix_properties_t *newProps)
Definition: celix_dm_service_dependency.h:44
celix_dm_service_update_fp
int(* celix_dm_service_update_fp)(void *handle, void *service)
Definition: celix_dm_service_dependency.h:40
celix_dmServiceDependency_setService
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)
celix_dm_service_update_with_props_fp
int(* celix_dm_service_update_with_props_fp)(void *handle, void *service, const celix_properties_t *props)
Definition: celix_dm_service_dependency.h:43
celix_dm_service_dependency_callback_options
Definition: celix_dm_service_dependency.h:46
celix_dmServiceDependency_destroy
CELIX_FRAMEWORK_EXPORT void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep)
celix_dmServiceDependency_create
CELIX_FRAMEWORK_EXPORT celix_dm_service_dependency_t * celix_dmServiceDependency_create(void)
celix_dmServiceDependency_setCallbackWithProperties
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set)
DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND
@ DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND
Definition: celix_dm_service_dependency.h:37
celix_dm_service_swap_fp
int(* celix_dm_service_swap_fp)(void *handle, void *oldService, void *newService)
Definition: celix_dm_service_dependency.h:41
celix_dmServiceDependency_setCallbacksWithOptions
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts)
celix_dm_service_dependency_strategy_t
enum celix_dm_service_dependency_strategy_enum celix_dm_service_dependency_strategy_t
celix_dmServiceDependency_createInfo
CELIX_FRAMEWORK_EXPORT dm_service_dependency_info_t * celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t *dep)
celix_dmServiceDependency_getFilter
const CELIX_FRAMEWORK_EXPORT char * celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency)