Celix  2.2.0
An implementation of the OSGi specification adapted to C and C++
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 
27 #include "celix_dm_info.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 
38 
39 typedef int (*celix_dm_service_update_fp)(void *handle, void* service);
40 typedef int (*celix_dm_service_swap_fp)(void *handle, void* oldService, void* newService);
41 
42 typedef int (*celix_dm_service_update_with_props_fp)(void *handle, void* service, const celix_properties_t *props);
43 typedef int (*celix_dm_service_swap_with_props_fp)(void *handle, void* oldService, void* newService, const celix_properties_t *newProps);
44 
50 
56 
57 #define CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS { .set = NULL, \
58  .add = NULL, \
59  .remove = NULL, \
60  .swap = NULL, \
61  .setWithProps = NULL, \
62  .addWithProps = NULL, \
63  .removeWithProps = NULL, \
64  .swapWithProps = NULL }
65 
70 celix_dm_service_dependency_t* celix_dmServiceDependency_create(void);
71 
76 void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep);
77 
81 celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required);
82 
87 celix_status_t celix_dmServiceDependency_setAddCLanguageFilter(celix_dm_service_dependency_t *dependency, bool addCLangFilter);
88 
89 
103 celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy);
104 
108 celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency);
109 
117 celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char* serviceName, const char* serviceVersionRange, const char* filter);
118 
122 const char* celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency);
123 
129 celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set);
130 
137 celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set);
138 
145 celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts);
146 
152 celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void* handle);
153 
158 dm_service_dependency_info_t* celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t* dep);
159 
163 void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info);
164 
165 #ifdef __cplusplus
166 }
167 #endif
168 
169 #endif /* CELIX_DM_SERVICE_DEPENDENCY_H_ */
int(* celix_dm_service_update_fp)(void *handle, void *service)
Definition: celix_dm_service_dependency.h:39
int(* celix_dm_service_swap_fp)(void *handle, void *oldService, void *newService)
Definition: celix_dm_service_dependency.h:40
void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep)
enum celix_dm_service_dependency_strategy_enum celix_dm_service_dependency_strategy_t
celix_status_t celix_dmServiceDependency_setAddCLanguageFilter(celix_dm_service_dependency_t *dependency, bool addCLangFilter)
Definition: celix_dm_info.h:42
celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void *handle)
celix_dm_service_update_fp add
Definition: celix_dm_service_dependency.h:47
Definition: celix_dm_service_dependency.h:35
celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)
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:43
celix_dm_service_dependency_strategy_enum
Definition: celix_dm_service_dependency.h:34
celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy)
celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set)
celix_dm_service_swap_fp swap
Definition: celix_dm_service_dependency.h:49
Definition: celix_dm_service_dependency.h:36
celix_dm_service_update_with_props_fp removeWithProps
Definition: celix_dm_service_dependency.h:53
celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required)
void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info)
celix_dm_service_dependency_t * celix_dmServiceDependency_create(void)
celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency)
celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts)
const char * celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency)
celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set)
celix_dm_service_swap_with_props_fp swapWithProps
Definition: celix_dm_service_dependency.h:54
celix_dm_service_update_with_props_fp setWithProps
Definition: celix_dm_service_dependency.h:51
struct celix_dm_service_dependency_callback_options celix_dm_service_dependency_callback_options_t
celix_dm_service_update_with_props_fp addWithProps
Definition: celix_dm_service_dependency.h:52
dm_service_dependency_info_t * celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t *dep)
Definition: celix_dm_service_dependency.h:45
int(* celix_dm_service_update_with_props_fp)(void *handle, void *service, const celix_properties_t *props)
Definition: celix_dm_service_dependency.h:42