http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/private/include/calculator_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/private/include/calculator_impl.h b/remote_services/examples/calculator_service/private/include/calculator_impl.h deleted file mode 100644 index 5e075e4..0000000 --- a/remote_services/examples/calculator_service/private/include/calculator_impl.h +++ /dev/null @@ -1,43 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * calculator_impl.h - * - * \date Oct 5, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef CALCULATOR_IMPL_H_ -#define CALCULATOR_IMPL_H_ - -#include "celix_errno.h" - -#include "calculator_service.h" - -struct calculator { -}; - -celix_status_t calculator_create(calculator_pt *calcuator); -celix_status_t calculator_destroy(calculator_pt *calcuator); -celix_status_t calculator_add(calculator_pt calcuator, double a, double b, double *result); -celix_status_t calculator_sub(calculator_pt calcuator, double a, double b, double *result); -celix_status_t calculator_sqrt(calculator_pt calcuator, double a, double *result); - -#endif /* CALCULATOR_IMPL_H_ */
http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/private/src/calculator_activator.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/private/src/calculator_activator.c b/remote_services/examples/calculator_service/private/src/calculator_activator.c deleted file mode 100644 index 688a7b0..0000000 --- a/remote_services/examples/calculator_service/private/src/calculator_activator.c +++ /dev/null @@ -1,110 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * calculator_activator.c - * - * \date Oct 5, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> - -#include "bundle_activator.h" -#include "bundle_context.h" -#include "service_registration.h" - -#include "calculator_impl.h" -#include "remote_constants.h" - -struct activator { - calculator_pt calculator; - calculator_service_pt service; - - service_registration_pt calculatorReg; - service_registration_pt calculatorReg2; -}; - -celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator; - - activator = calloc(1, sizeof(*activator)); - if (!activator) { - status = CELIX_ENOMEM; - } else { - activator->calculatorReg = NULL; - activator->calculatorReg2 = NULL; - - *userData = activator; - } - - return status; -} - -celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator = userData; - properties_pt properties = NULL; - - status = calculator_create(&activator->calculator); - if (status == CELIX_SUCCESS) { - activator->service = calloc(1, sizeof(*activator->service)); - if (!activator->service) { - status = CELIX_ENOMEM; - } else { - activator->service->calculator = activator->calculator; - activator->service->add = calculator_add; - activator->service->sub = calculator_sub; - activator->service->sqrt = calculator_sqrt; - - properties = properties_create(); - properties_set(properties, (char *) OSGI_RSA_SERVICE_EXPORTED_INTERFACES, (char *) CALCULATOR_SERVICE); - - bundleContext_registerService(context, (char *) CALCULATOR_SERVICE, activator->service, properties, &activator->calculatorReg); - - properties_pt properties2 = properties_create(); - properties_set(properties2, (char *) OSGI_RSA_SERVICE_EXPORTED_INTERFACES, (char *) CALCULATOR2_SERVICE); - bundleContext_registerService(context, CALCULATOR2_SERVICE, activator->service, properties2, &activator->calculatorReg2); - } - } - - return status; -} - -celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator = userData; - - serviceRegistration_unregister(activator->calculatorReg); - serviceRegistration_unregister(activator->calculatorReg2); - - free(activator->service); - - calculator_destroy(&activator->calculator); - - return status; -} - -celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - - free(userData); - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/private/src/calculator_impl.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/private/src/calculator_impl.c b/remote_services/examples/calculator_service/private/src/calculator_impl.c deleted file mode 100644 index adccb52..0000000 --- a/remote_services/examples/calculator_service/private/src/calculator_impl.c +++ /dev/null @@ -1,79 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * calculator_impl.c - * - * \date Oct 5, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <math.h> - -#include <stdlib.h> -#include <stdio.h> - -#include "calculator_impl.h" - -celix_status_t calculator_create(calculator_pt *calculator) { - celix_status_t status = CELIX_SUCCESS; - - *calculator = calloc(1, sizeof(**calculator)); - if (!*calculator) { - status = CELIX_ENOMEM; - } - - return status; -} - -celix_status_t calculator_destroy(calculator_pt *calculator) { - free(*calculator); - return CELIX_SUCCESS; -} - -celix_status_t calculator_add(calculator_pt calculator, double a, double b, double *result) { - celix_status_t status = CELIX_SUCCESS; - - *result = a + b; - printf("CALCULATOR: Add: %f + %f = %f\n", a, b, *result); - - return status; -} - -celix_status_t calculator_sub(calculator_pt calculator, double a, double b, double *result) { - celix_status_t status = CELIX_SUCCESS; - - *result = a - b; - printf("CALCULATOR: Sub: %f + %f = %f\n", a, b, *result); - - return status; -} - -celix_status_t calculator_sqrt(calculator_pt calculator, double a, double *result) { - celix_status_t status = CELIX_SUCCESS; - - if (a > 0) { - *result = sqrt(a); - printf("CALCULATOR: Sqrt: %f = %f\n", a, *result); - } else { - printf("CALCULATOR: Sqrt: %f = ERR\n", a); - status = CELIX_ILLEGAL_ARGUMENT; - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/public/include/calculator_service.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/public/include/calculator_service.h b/remote_services/examples/calculator_service/public/include/calculator_service.h deleted file mode 100644 index 8e2f0dc..0000000 --- a/remote_services/examples/calculator_service/public/include/calculator_service.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * calculator_service.h - * - * \date Oct 5, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef CALCULATOR_SERVICE_H_ -#define CALCULATOR_SERVICE_H_ - -#define CALCULATOR_SERVICE "org.apache.celix.calc.api.Calculator" -#define CALCULATOR2_SERVICE "org.apache.celix.calc.api.Calculator2" - - -typedef struct calculator *calculator_pt; - -typedef struct calculator_service *calculator_service_pt; - -/* - * The calculator service definition corresponds to the following Java interface: - * - * interface Calculator { - * double add(double a, double b); - * double sub(double a, double b); - * double sqrt(double a); - * } - */ -struct calculator_service { - calculator_pt calculator; - int (*add)(calculator_pt calculator, double a, double b, double *result); - int (*sub)(calculator_pt calculator, double a, double b, double *result); - int (*sqrt)(calculator_pt calculator, double a, double *result); -}; - - - -#endif /* CALCULATOR_SERVICE_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/public/include/org.apache.celix.calc.api.Calculator2.descriptor ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/public/include/org.apache.celix.calc.api.Calculator2.descriptor b/remote_services/examples/calculator_service/public/include/org.apache.celix.calc.api.Calculator2.descriptor deleted file mode 100644 index b784838..0000000 --- a/remote_services/examples/calculator_service/public/include/org.apache.celix.calc.api.Calculator2.descriptor +++ /dev/null @@ -1,11 +0,0 @@ -:header -type=interface -name=calculator -version=1.3.0 -:annotations -classname=org.example.Calculator -:types -:methods -add(DD)D=add(#am=handle;PDD#am=pre;*D)N -sub(DD)D=sub(#am=handle;PDD#am=pre;*D)N -sqrt(D)D=sqrt(#am=handle;PD#am=pre;*D)N http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/src/calculator_activator.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/src/calculator_activator.c b/remote_services/examples/calculator_service/src/calculator_activator.c new file mode 100644 index 0000000..688a7b0 --- /dev/null +++ b/remote_services/examples/calculator_service/src/calculator_activator.c @@ -0,0 +1,110 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * calculator_activator.c + * + * \date Oct 5, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ +#include <stdlib.h> + +#include "bundle_activator.h" +#include "bundle_context.h" +#include "service_registration.h" + +#include "calculator_impl.h" +#include "remote_constants.h" + +struct activator { + calculator_pt calculator; + calculator_service_pt service; + + service_registration_pt calculatorReg; + service_registration_pt calculatorReg2; +}; + +celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) { + celix_status_t status = CELIX_SUCCESS; + struct activator *activator; + + activator = calloc(1, sizeof(*activator)); + if (!activator) { + status = CELIX_ENOMEM; + } else { + activator->calculatorReg = NULL; + activator->calculatorReg2 = NULL; + + *userData = activator; + } + + return status; +} + +celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) { + celix_status_t status = CELIX_SUCCESS; + struct activator *activator = userData; + properties_pt properties = NULL; + + status = calculator_create(&activator->calculator); + if (status == CELIX_SUCCESS) { + activator->service = calloc(1, sizeof(*activator->service)); + if (!activator->service) { + status = CELIX_ENOMEM; + } else { + activator->service->calculator = activator->calculator; + activator->service->add = calculator_add; + activator->service->sub = calculator_sub; + activator->service->sqrt = calculator_sqrt; + + properties = properties_create(); + properties_set(properties, (char *) OSGI_RSA_SERVICE_EXPORTED_INTERFACES, (char *) CALCULATOR_SERVICE); + + bundleContext_registerService(context, (char *) CALCULATOR_SERVICE, activator->service, properties, &activator->calculatorReg); + + properties_pt properties2 = properties_create(); + properties_set(properties2, (char *) OSGI_RSA_SERVICE_EXPORTED_INTERFACES, (char *) CALCULATOR2_SERVICE); + bundleContext_registerService(context, CALCULATOR2_SERVICE, activator->service, properties2, &activator->calculatorReg2); + } + } + + return status; +} + +celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) { + celix_status_t status = CELIX_SUCCESS; + struct activator *activator = userData; + + serviceRegistration_unregister(activator->calculatorReg); + serviceRegistration_unregister(activator->calculatorReg2); + + free(activator->service); + + calculator_destroy(&activator->calculator); + + return status; +} + +celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) { + celix_status_t status = CELIX_SUCCESS; + + free(userData); + + return status; +} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/src/calculator_impl.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/src/calculator_impl.c b/remote_services/examples/calculator_service/src/calculator_impl.c new file mode 100644 index 0000000..adccb52 --- /dev/null +++ b/remote_services/examples/calculator_service/src/calculator_impl.c @@ -0,0 +1,79 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * calculator_impl.c + * + * \date Oct 5, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ +#include <math.h> + +#include <stdlib.h> +#include <stdio.h> + +#include "calculator_impl.h" + +celix_status_t calculator_create(calculator_pt *calculator) { + celix_status_t status = CELIX_SUCCESS; + + *calculator = calloc(1, sizeof(**calculator)); + if (!*calculator) { + status = CELIX_ENOMEM; + } + + return status; +} + +celix_status_t calculator_destroy(calculator_pt *calculator) { + free(*calculator); + return CELIX_SUCCESS; +} + +celix_status_t calculator_add(calculator_pt calculator, double a, double b, double *result) { + celix_status_t status = CELIX_SUCCESS; + + *result = a + b; + printf("CALCULATOR: Add: %f + %f = %f\n", a, b, *result); + + return status; +} + +celix_status_t calculator_sub(calculator_pt calculator, double a, double b, double *result) { + celix_status_t status = CELIX_SUCCESS; + + *result = a - b; + printf("CALCULATOR: Sub: %f + %f = %f\n", a, b, *result); + + return status; +} + +celix_status_t calculator_sqrt(calculator_pt calculator, double a, double *result) { + celix_status_t status = CELIX_SUCCESS; + + if (a > 0) { + *result = sqrt(a); + printf("CALCULATOR: Sqrt: %f = %f\n", a, *result); + } else { + printf("CALCULATOR: Sqrt: %f = ERR\n", a); + status = CELIX_ILLEGAL_ARGUMENT; + } + + return status; +} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_service/src/calculator_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_service/src/calculator_impl.h b/remote_services/examples/calculator_service/src/calculator_impl.h new file mode 100644 index 0000000..5e075e4 --- /dev/null +++ b/remote_services/examples/calculator_service/src/calculator_impl.h @@ -0,0 +1,43 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * calculator_impl.h + * + * \date Oct 5, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef CALCULATOR_IMPL_H_ +#define CALCULATOR_IMPL_H_ + +#include "celix_errno.h" + +#include "calculator_service.h" + +struct calculator { +}; + +celix_status_t calculator_create(calculator_pt *calcuator); +celix_status_t calculator_destroy(calculator_pt *calcuator); +celix_status_t calculator_add(calculator_pt calcuator, double a, double b, double *result); +celix_status_t calculator_sub(calculator_pt calcuator, double a, double b, double *result); +celix_status_t calculator_sqrt(calculator_pt calcuator, double a, double *result); + +#endif /* CALCULATOR_IMPL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/CMakeLists.txt b/remote_services/examples/calculator_shell/CMakeLists.txt index 980fa1a..78c0737 100644 --- a/remote_services/examples/calculator_shell/CMakeLists.txt +++ b/remote_services/examples/calculator_shell/CMakeLists.txt @@ -15,28 +15,22 @@ # specific language governing permissions and limitations # under the License. -include_directories("private/include") -include_directories("../../../utils/public/include") -include_directories("../calculator_service/public/include") - -add_bundle(calculator_shell SOURCES - private/src/add_command - private/src/sub_command - private/src/sqrt_command - private/src/calculator_shell_activator - - private/include/add_command.h - private/include/sqrt_command.h - private/include/sub_command.h - +add_bundle(calculator_shell + SOURCES + src/add_command + src/sub_command + src/sqrt_command + src/calculator_shell_activator VERSION 0.0.1 SYMBOLIC_NAME "apache_celix_remoting_calculator_shell" ) +target_include_directories(calculator_shell PRIVATE src) +target_link_libraries(calculator_shell PRIVATE Celix::shell_api calculator_api) bundle_files(calculator_shell - ../calculator_service/public/include/org.apache.celix.calc.api.Calculator2.descriptor - #private/include/org.apache.celix.calc.api.Calculator2.descriptor ##Use this descriptor in case you want to try out versioning! + ../calculator_api/include/org.apache.celix.calc.api.Calculator2.descriptor + #src/org.apache.celix.calc.api.Calculator2.descriptor ##Use this descriptor in case you want to try out versioning! DESTINATION . ) -target_link_libraries(calculator_shell PRIVATE Celix::shell_api) + http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/include/add_command.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/include/add_command.h b/remote_services/examples/calculator_shell/private/include/add_command.h deleted file mode 100644 index 58a7bda..0000000 --- a/remote_services/examples/calculator_shell/private/include/add_command.h +++ /dev/null @@ -1,32 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * add_command.h - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef ADD_COMMAND_H_ -#define ADD_COMMAND_H_ - -void addCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err); - -#endif /* ADD_COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/include/org.apache.celix.calc.api.Calculator2.descriptor ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/include/org.apache.celix.calc.api.Calculator2.descriptor b/remote_services/examples/calculator_shell/private/include/org.apache.celix.calc.api.Calculator2.descriptor deleted file mode 100644 index 789af9a..0000000 --- a/remote_services/examples/calculator_shell/private/include/org.apache.celix.calc.api.Calculator2.descriptor +++ /dev/null @@ -1,11 +0,0 @@ -+:header -+type=interface -+name=calculator -+version=1.2.3 -+:annotations -+classname=org.example.Calculator -+:types -+:methods -+add(DD)D=add(#am=handle;PDD#am=pre;*D)N -+sub(DD)D=sub(#am=handle;PDD#am=pre;*D)N -+sqrt(D)D=sqrt(#am=handle;PD#am=pre;*D)N http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/include/sqrt_command.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/include/sqrt_command.h b/remote_services/examples/calculator_shell/private/include/sqrt_command.h deleted file mode 100644 index c9d07d2..0000000 --- a/remote_services/examples/calculator_shell/private/include/sqrt_command.h +++ /dev/null @@ -1,32 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * sqrt_command.h - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef SQRT_COMMAND_H_ -#define SQRT_COMMAND_H_ - -void sqrtCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err); - -#endif /* SQRT_COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/include/sub_command.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/include/sub_command.h b/remote_services/examples/calculator_shell/private/include/sub_command.h deleted file mode 100644 index cf13616..0000000 --- a/remote_services/examples/calculator_shell/private/include/sub_command.h +++ /dev/null @@ -1,32 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * sub_command.h - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef SUB_COMMAND_H_ -#define SUB_COMMAND_H_ - -void subCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err); - -#endif /* SUB_COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/src/add_command.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/src/add_command.c b/remote_services/examples/calculator_shell/private/src/add_command.c deleted file mode 100644 index b2520ae..0000000 --- a/remote_services/examples/calculator_shell/private/src/add_command.c +++ /dev/null @@ -1,101 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * add_command.c - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#include <stdlib.h> -#include <ctype.h> -#include <string.h> -#include <command.h> - -#include "array_list.h" -#include "bundle_context.h" -#include "add_command.h" -#include "calculator_service.h" - - -static celix_status_t addCommand_isNumeric(char *number, bool *ret); - -void addCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err) { - celix_status_t status = CELIX_SUCCESS; - service_reference_pt calculatorService = NULL; - - status = bundleContext_getServiceReference(context, (char *) CALCULATOR_SERVICE, &calculatorService); - if (calculatorService == NULL) { - fprintf(err, "ADD: Cannot get reference for %s. Trying to get one for %s\n", CALCULATOR_SERVICE, CALCULATOR2_SERVICE); - status = bundleContext_getServiceReference(context, (char *) CALCULATOR2_SERVICE, &calculatorService); - if (calculatorService == NULL) { - fprintf(err, "ADD: Cannot get reference even for %s.\n", CALCULATOR2_SERVICE); - } - } - if (status == CELIX_SUCCESS) { - char *token = line; - strtok_r(line, " ", &token); - char *aStr = strtok_r(NULL, " ", &token); - char *bStr = strtok_r(NULL, " ", &token); - bool aNumeric, bNumeric; - if (aStr != NULL && bStr != NULL) { - addCommand_isNumeric(aStr, &aNumeric); - addCommand_isNumeric(bStr, &bNumeric); - if(aNumeric && bNumeric){ - calculator_service_pt calculator = NULL; - status = bundleContext_getService(context, calculatorService, (void *) &calculator); - if (status == CELIX_SUCCESS && calculator != NULL) { - double a = atof(aStr); - double b = atof(bStr); - double result = 0; - status = calculator->add(calculator->calculator, a, b, &result); - if (status == CELIX_SUCCESS) { - fprintf(out, "CALCULATOR_SHELL: Add: %f + %f = %f\n", a, b, result); - } else { - fprintf(err, "ADD: Unexpected exception in Calc service\n"); - } - } else { - fprintf(err, "No calc service available\n"); - } - } else { - fprintf(err, "ADD: Requires 2 numerical parameter\n"); - } - } else { - fprintf(err, "ADD: Requires 2 numerical parameter\n"); - } - } else { - fprintf(err, "No calc service available\n"); - } - - //return status; -} - -static celix_status_t addCommand_isNumeric(char *number, bool *ret) { - celix_status_t status = CELIX_SUCCESS; - *ret = true; - while(*number) { - if(!isdigit(*number) && *number != '.') { - *ret = false; - break; - } - number++; - } - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/src/calculator_shell_activator.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/src/calculator_shell_activator.c b/remote_services/examples/calculator_shell/private/src/calculator_shell_activator.c deleted file mode 100644 index d6b561b..0000000 --- a/remote_services/examples/calculator_shell/private/src/calculator_shell_activator.c +++ /dev/null @@ -1,125 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * calculator_shell_activator.c - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> -#include <command.h> - -#include "bundle_activator.h" -#include "bundle_context.h" -#include "service_registration.h" - -#include "add_command.h" -#include "sub_command.h" -#include "sqrt_command.h" - -struct activator { - service_registration_pt addCommand; - command_service_pt addCmd; - command_service_pt addCmdSrv; - - service_registration_pt subCommand; - command_service_pt subCmd; - command_service_pt subCmdSrv; - - service_registration_pt sqrtCommand; - command_service_pt sqrtCmd; - command_service_pt sqrtCmdSrv; -}; - -celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) { - celix_status_t status = CELIX_SUCCESS; - if (status == CELIX_SUCCESS) { - *userData = calloc(1, sizeof(struct activator)); - if (!*userData) { - status = CELIX_ENOMEM; - } else { - ((struct activator *) (*userData))->addCommand = NULL; - ((struct activator *) (*userData))->subCommand = NULL; - ((struct activator *) (*userData))->sqrtCommand = NULL; - - ((struct activator *) (*userData))->addCmd = NULL; - ((struct activator *) (*userData))->subCmd = NULL; - ((struct activator *) (*userData))->sqrtCmd = NULL; - - ((struct activator *) (*userData))->addCmdSrv = NULL; - ((struct activator *) (*userData))->subCmdSrv = NULL; - ((struct activator *) (*userData))->sqrtCmdSrv = NULL; - } - } - - return CELIX_SUCCESS; -} - -celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - - struct activator * activator = (struct activator *) userData; - - activator->addCmdSrv = calloc(1, sizeof(*activator->addCmdSrv)); - activator->addCmdSrv->handle = context; - activator->addCmdSrv->executeCommand = (void *)addCommand_execute; - properties_pt props = properties_create(); - properties_set(props, OSGI_SHELL_COMMAND_NAME, "add"); - bundleContext_registerService(context, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, activator->addCmdSrv, props, &activator->addCommand); - - - activator->sqrtCmdSrv = calloc(1, sizeof(*activator->sqrtCmdSrv)); - activator->sqrtCmdSrv->handle = context; - activator->sqrtCmdSrv->executeCommand = (void *)sqrtCommand_execute; - props = properties_create(); - properties_set(props, OSGI_SHELL_COMMAND_NAME, "sqrt"); - bundleContext_registerService(context, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, activator->sqrtCmdSrv, props, &activator->sqrtCommand); - - activator->subCmdSrv = calloc(1, sizeof(*activator->subCmdSrv)); - activator->subCmdSrv->handle = context; - activator->subCmdSrv->executeCommand = (void *)subCommand_execute; - props = properties_create(); - properties_set(props, OSGI_SHELL_COMMAND_NAME, "sub"); - bundleContext_registerService(context, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, activator->subCmdSrv, props, &activator->subCommand); - - return status; -} - - -celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - struct activator * activator = (struct activator *) userData; - serviceRegistration_unregister(activator->addCommand); - serviceRegistration_unregister(activator->subCommand); - serviceRegistration_unregister(activator->sqrtCommand); - - free(activator->addCmdSrv); - free(activator->subCmdSrv); - free(activator->sqrtCmdSrv); - - return status; -} - -celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) { - free(userData); - return CELIX_SUCCESS; -} - http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/src/sqrt_command.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/src/sqrt_command.c b/remote_services/examples/calculator_shell/private/src/sqrt_command.c deleted file mode 100644 index 2e7238c..0000000 --- a/remote_services/examples/calculator_shell/private/src/sqrt_command.c +++ /dev/null @@ -1,96 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * sqrt_command.c - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#include <stdlib.h> -#include <ctype.h> -#include <string.h> - -#include "array_list.h" -#include "bundle_context.h" -#include "sqrt_command.h" -#include "calculator_service.h" - -static celix_status_t sqrtCommand_isNumeric(char *number, bool *ret); - -void sqrtCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err) { - celix_status_t status = CELIX_SUCCESS; - service_reference_pt calculatorService = NULL; - - status = bundleContext_getServiceReference(context, (char *) CALCULATOR_SERVICE, &calculatorService); - if (calculatorService == NULL) { - fprintf(err, "SQRT: Cannot get reference for %s. Trying to get one for %s\n", CALCULATOR_SERVICE, CALCULATOR2_SERVICE); - status = bundleContext_getServiceReference(context, (char *) CALCULATOR2_SERVICE, &calculatorService); - if (calculatorService == NULL) { - fprintf(err, "SQRT: Cannot get reference even for %s.\n", CALCULATOR2_SERVICE); - } - } - if (status == CELIX_SUCCESS) { - char *token = line; - strtok_r(line, " ", &token); - char *aStr = strtok_r(NULL, " ", &token); - if(aStr != NULL){ - bool numeric; - sqrtCommand_isNumeric(aStr, &numeric); - if (numeric) { - calculator_service_pt calculator = NULL; - status = bundleContext_getService(context, calculatorService, (void *) &calculator); - if (status == CELIX_SUCCESS && calculator != NULL) { - double a = atof(aStr); - double result = 0; - status = calculator->sqrt(calculator->calculator, a, &result); - if (status == CELIX_SUCCESS) { - fprintf(out, "CALCULATOR_SHELL: Sqrt: %f = %f\n", a, result); - } else { - fprintf(err, "SQRT: Unexpected exception in Calc service\n"); - } - } else { - fprintf(err, "No calc service available\n"); - } - } else { - fprintf(err, "SQRT: Requires 1 numerical parameter\n"); - } - } else { - fprintf(err, "SQRT: Requires 1 numerical parameter\n"); - } - } else { - fprintf(err, "No calc service available\n"); - } - - //return status; -} - -static celix_status_t sqrtCommand_isNumeric(char *number, bool *ret) { - celix_status_t status = CELIX_SUCCESS; - *ret = true; - while(*number) { - if(!isdigit(*number) && *number != '.') { - *ret = false; - break; - } - number++; - } - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/private/src/sub_command.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/private/src/sub_command.c b/remote_services/examples/calculator_shell/private/src/sub_command.c deleted file mode 100644 index 672ea4c..0000000 --- a/remote_services/examples/calculator_shell/private/src/sub_command.c +++ /dev/null @@ -1,99 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * sub_command.c - * - * \date Oct 13, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#include <stdlib.h> -#include <ctype.h> -#include <string.h> - -#include "array_list.h" -#include "bundle_context.h" -#include "sub_command.h" -#include "calculator_service.h" - -static celix_status_t subCommand_isNumeric(char *number, bool *ret); - -void subCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err) { - celix_status_t status = CELIX_SUCCESS; - service_reference_pt calculatorService = NULL; - - status = bundleContext_getServiceReference(context, (char *) CALCULATOR_SERVICE, &calculatorService); - if (calculatorService == NULL) { - fprintf(err, "SUB: Cannot get reference for %s. Trying to get one for %s\n", CALCULATOR_SERVICE, CALCULATOR2_SERVICE); - status = bundleContext_getServiceReference(context, (char *) CALCULATOR2_SERVICE, &calculatorService); - if (calculatorService == NULL) { - fprintf(err, "SUB: Cannot get reference even for %s.\n", CALCULATOR2_SERVICE); - } - } - if (status == CELIX_SUCCESS) { - char *token = line; - strtok_r(line, " ", &token); - char *aStr = strtok_r(NULL, " ", &token); - char *bStr = strtok_r(NULL, " ", &token); - if(aStr != NULL && bStr != NULL ){ - bool aNumeric, bNumeric; - subCommand_isNumeric(aStr, &aNumeric); - subCommand_isNumeric(bStr, &bNumeric); - if (aNumeric && bNumeric) { - calculator_service_pt calculator = NULL; - status = bundleContext_getService(context, calculatorService, (void *) &calculator); - if (status == CELIX_SUCCESS && calculator != NULL) { - double a = atof(aStr); - double b = atof(bStr); - double result = 0; - status = calculator->sub(calculator->calculator, a, b, &result); - if (status == CELIX_SUCCESS) { - fprintf(out, "CALCULATOR_SHELL: Sub: %f - %f = %f\n", a, b, result); - } else { - fprintf(err, "SUB: Unexpected exception in Calc service\n"); - } - } else { - fprintf(err, "No calc service available\n"); - } - } else { - fprintf(err, "SUB: Requires 2 numerical parameter\n"); - } - } else { - fprintf(err, "SUB: Requires 2 numerical parameter\n"); - } - } else { - fprintf(err, "No calc service available\n"); - } - - //return status; -} - -static celix_status_t subCommand_isNumeric(char *number, bool *ret) { - celix_status_t status = CELIX_SUCCESS; - *ret = true; - while(*number) { - if(!isdigit(*number) && *number != '.') { - *ret = false; - break; - } - number++; - } - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/add_command.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/add_command.c b/remote_services/examples/calculator_shell/src/add_command.c new file mode 100644 index 0000000..b2520ae --- /dev/null +++ b/remote_services/examples/calculator_shell/src/add_command.c @@ -0,0 +1,101 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * add_command.c + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> +#include <command.h> + +#include "array_list.h" +#include "bundle_context.h" +#include "add_command.h" +#include "calculator_service.h" + + +static celix_status_t addCommand_isNumeric(char *number, bool *ret); + +void addCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err) { + celix_status_t status = CELIX_SUCCESS; + service_reference_pt calculatorService = NULL; + + status = bundleContext_getServiceReference(context, (char *) CALCULATOR_SERVICE, &calculatorService); + if (calculatorService == NULL) { + fprintf(err, "ADD: Cannot get reference for %s. Trying to get one for %s\n", CALCULATOR_SERVICE, CALCULATOR2_SERVICE); + status = bundleContext_getServiceReference(context, (char *) CALCULATOR2_SERVICE, &calculatorService); + if (calculatorService == NULL) { + fprintf(err, "ADD: Cannot get reference even for %s.\n", CALCULATOR2_SERVICE); + } + } + if (status == CELIX_SUCCESS) { + char *token = line; + strtok_r(line, " ", &token); + char *aStr = strtok_r(NULL, " ", &token); + char *bStr = strtok_r(NULL, " ", &token); + bool aNumeric, bNumeric; + if (aStr != NULL && bStr != NULL) { + addCommand_isNumeric(aStr, &aNumeric); + addCommand_isNumeric(bStr, &bNumeric); + if(aNumeric && bNumeric){ + calculator_service_pt calculator = NULL; + status = bundleContext_getService(context, calculatorService, (void *) &calculator); + if (status == CELIX_SUCCESS && calculator != NULL) { + double a = atof(aStr); + double b = atof(bStr); + double result = 0; + status = calculator->add(calculator->calculator, a, b, &result); + if (status == CELIX_SUCCESS) { + fprintf(out, "CALCULATOR_SHELL: Add: %f + %f = %f\n", a, b, result); + } else { + fprintf(err, "ADD: Unexpected exception in Calc service\n"); + } + } else { + fprintf(err, "No calc service available\n"); + } + } else { + fprintf(err, "ADD: Requires 2 numerical parameter\n"); + } + } else { + fprintf(err, "ADD: Requires 2 numerical parameter\n"); + } + } else { + fprintf(err, "No calc service available\n"); + } + + //return status; +} + +static celix_status_t addCommand_isNumeric(char *number, bool *ret) { + celix_status_t status = CELIX_SUCCESS; + *ret = true; + while(*number) { + if(!isdigit(*number) && *number != '.') { + *ret = false; + break; + } + number++; + } + return status; +} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/add_command.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/add_command.h b/remote_services/examples/calculator_shell/src/add_command.h new file mode 100644 index 0000000..58a7bda --- /dev/null +++ b/remote_services/examples/calculator_shell/src/add_command.h @@ -0,0 +1,32 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * add_command.h + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef ADD_COMMAND_H_ +#define ADD_COMMAND_H_ + +void addCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err); + +#endif /* ADD_COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/calculator_shell_activator.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/calculator_shell_activator.c b/remote_services/examples/calculator_shell/src/calculator_shell_activator.c new file mode 100644 index 0000000..d6b561b --- /dev/null +++ b/remote_services/examples/calculator_shell/src/calculator_shell_activator.c @@ -0,0 +1,125 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * calculator_shell_activator.c + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ +#include <stdlib.h> +#include <string.h> +#include <command.h> + +#include "bundle_activator.h" +#include "bundle_context.h" +#include "service_registration.h" + +#include "add_command.h" +#include "sub_command.h" +#include "sqrt_command.h" + +struct activator { + service_registration_pt addCommand; + command_service_pt addCmd; + command_service_pt addCmdSrv; + + service_registration_pt subCommand; + command_service_pt subCmd; + command_service_pt subCmdSrv; + + service_registration_pt sqrtCommand; + command_service_pt sqrtCmd; + command_service_pt sqrtCmdSrv; +}; + +celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) { + celix_status_t status = CELIX_SUCCESS; + if (status == CELIX_SUCCESS) { + *userData = calloc(1, sizeof(struct activator)); + if (!*userData) { + status = CELIX_ENOMEM; + } else { + ((struct activator *) (*userData))->addCommand = NULL; + ((struct activator *) (*userData))->subCommand = NULL; + ((struct activator *) (*userData))->sqrtCommand = NULL; + + ((struct activator *) (*userData))->addCmd = NULL; + ((struct activator *) (*userData))->subCmd = NULL; + ((struct activator *) (*userData))->sqrtCmd = NULL; + + ((struct activator *) (*userData))->addCmdSrv = NULL; + ((struct activator *) (*userData))->subCmdSrv = NULL; + ((struct activator *) (*userData))->sqrtCmdSrv = NULL; + } + } + + return CELIX_SUCCESS; +} + +celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) { + celix_status_t status = CELIX_SUCCESS; + + struct activator * activator = (struct activator *) userData; + + activator->addCmdSrv = calloc(1, sizeof(*activator->addCmdSrv)); + activator->addCmdSrv->handle = context; + activator->addCmdSrv->executeCommand = (void *)addCommand_execute; + properties_pt props = properties_create(); + properties_set(props, OSGI_SHELL_COMMAND_NAME, "add"); + bundleContext_registerService(context, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, activator->addCmdSrv, props, &activator->addCommand); + + + activator->sqrtCmdSrv = calloc(1, sizeof(*activator->sqrtCmdSrv)); + activator->sqrtCmdSrv->handle = context; + activator->sqrtCmdSrv->executeCommand = (void *)sqrtCommand_execute; + props = properties_create(); + properties_set(props, OSGI_SHELL_COMMAND_NAME, "sqrt"); + bundleContext_registerService(context, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, activator->sqrtCmdSrv, props, &activator->sqrtCommand); + + activator->subCmdSrv = calloc(1, sizeof(*activator->subCmdSrv)); + activator->subCmdSrv->handle = context; + activator->subCmdSrv->executeCommand = (void *)subCommand_execute; + props = properties_create(); + properties_set(props, OSGI_SHELL_COMMAND_NAME, "sub"); + bundleContext_registerService(context, (char *)OSGI_SHELL_COMMAND_SERVICE_NAME, activator->subCmdSrv, props, &activator->subCommand); + + return status; +} + + +celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) { + celix_status_t status = CELIX_SUCCESS; + struct activator * activator = (struct activator *) userData; + serviceRegistration_unregister(activator->addCommand); + serviceRegistration_unregister(activator->subCommand); + serviceRegistration_unregister(activator->sqrtCommand); + + free(activator->addCmdSrv); + free(activator->subCmdSrv); + free(activator->sqrtCmdSrv); + + return status; +} + +celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) { + free(userData); + return CELIX_SUCCESS; +} + http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/org.apache.celix.calc.api.Calculator2.descriptor ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/org.apache.celix.calc.api.Calculator2.descriptor b/remote_services/examples/calculator_shell/src/org.apache.celix.calc.api.Calculator2.descriptor new file mode 100644 index 0000000..789af9a --- /dev/null +++ b/remote_services/examples/calculator_shell/src/org.apache.celix.calc.api.Calculator2.descriptor @@ -0,0 +1,11 @@ ++:header ++type=interface ++name=calculator ++version=1.2.3 ++:annotations ++classname=org.example.Calculator ++:types ++:methods ++add(DD)D=add(#am=handle;PDD#am=pre;*D)N ++sub(DD)D=sub(#am=handle;PDD#am=pre;*D)N ++sqrt(D)D=sqrt(#am=handle;PD#am=pre;*D)N http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/sqrt_command.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/sqrt_command.c b/remote_services/examples/calculator_shell/src/sqrt_command.c new file mode 100644 index 0000000..2e7238c --- /dev/null +++ b/remote_services/examples/calculator_shell/src/sqrt_command.c @@ -0,0 +1,96 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * sqrt_command.c + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "array_list.h" +#include "bundle_context.h" +#include "sqrt_command.h" +#include "calculator_service.h" + +static celix_status_t sqrtCommand_isNumeric(char *number, bool *ret); + +void sqrtCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err) { + celix_status_t status = CELIX_SUCCESS; + service_reference_pt calculatorService = NULL; + + status = bundleContext_getServiceReference(context, (char *) CALCULATOR_SERVICE, &calculatorService); + if (calculatorService == NULL) { + fprintf(err, "SQRT: Cannot get reference for %s. Trying to get one for %s\n", CALCULATOR_SERVICE, CALCULATOR2_SERVICE); + status = bundleContext_getServiceReference(context, (char *) CALCULATOR2_SERVICE, &calculatorService); + if (calculatorService == NULL) { + fprintf(err, "SQRT: Cannot get reference even for %s.\n", CALCULATOR2_SERVICE); + } + } + if (status == CELIX_SUCCESS) { + char *token = line; + strtok_r(line, " ", &token); + char *aStr = strtok_r(NULL, " ", &token); + if(aStr != NULL){ + bool numeric; + sqrtCommand_isNumeric(aStr, &numeric); + if (numeric) { + calculator_service_pt calculator = NULL; + status = bundleContext_getService(context, calculatorService, (void *) &calculator); + if (status == CELIX_SUCCESS && calculator != NULL) { + double a = atof(aStr); + double result = 0; + status = calculator->sqrt(calculator->calculator, a, &result); + if (status == CELIX_SUCCESS) { + fprintf(out, "CALCULATOR_SHELL: Sqrt: %f = %f\n", a, result); + } else { + fprintf(err, "SQRT: Unexpected exception in Calc service\n"); + } + } else { + fprintf(err, "No calc service available\n"); + } + } else { + fprintf(err, "SQRT: Requires 1 numerical parameter\n"); + } + } else { + fprintf(err, "SQRT: Requires 1 numerical parameter\n"); + } + } else { + fprintf(err, "No calc service available\n"); + } + + //return status; +} + +static celix_status_t sqrtCommand_isNumeric(char *number, bool *ret) { + celix_status_t status = CELIX_SUCCESS; + *ret = true; + while(*number) { + if(!isdigit(*number) && *number != '.') { + *ret = false; + break; + } + number++; + } + return status; +} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/sqrt_command.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/sqrt_command.h b/remote_services/examples/calculator_shell/src/sqrt_command.h new file mode 100644 index 0000000..c9d07d2 --- /dev/null +++ b/remote_services/examples/calculator_shell/src/sqrt_command.h @@ -0,0 +1,32 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * sqrt_command.h + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef SQRT_COMMAND_H_ +#define SQRT_COMMAND_H_ + +void sqrtCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err); + +#endif /* SQRT_COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/sub_command.c ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/sub_command.c b/remote_services/examples/calculator_shell/src/sub_command.c new file mode 100644 index 0000000..672ea4c --- /dev/null +++ b/remote_services/examples/calculator_shell/src/sub_command.c @@ -0,0 +1,99 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * sub_command.c + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "array_list.h" +#include "bundle_context.h" +#include "sub_command.h" +#include "calculator_service.h" + +static celix_status_t subCommand_isNumeric(char *number, bool *ret); + +void subCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err) { + celix_status_t status = CELIX_SUCCESS; + service_reference_pt calculatorService = NULL; + + status = bundleContext_getServiceReference(context, (char *) CALCULATOR_SERVICE, &calculatorService); + if (calculatorService == NULL) { + fprintf(err, "SUB: Cannot get reference for %s. Trying to get one for %s\n", CALCULATOR_SERVICE, CALCULATOR2_SERVICE); + status = bundleContext_getServiceReference(context, (char *) CALCULATOR2_SERVICE, &calculatorService); + if (calculatorService == NULL) { + fprintf(err, "SUB: Cannot get reference even for %s.\n", CALCULATOR2_SERVICE); + } + } + if (status == CELIX_SUCCESS) { + char *token = line; + strtok_r(line, " ", &token); + char *aStr = strtok_r(NULL, " ", &token); + char *bStr = strtok_r(NULL, " ", &token); + if(aStr != NULL && bStr != NULL ){ + bool aNumeric, bNumeric; + subCommand_isNumeric(aStr, &aNumeric); + subCommand_isNumeric(bStr, &bNumeric); + if (aNumeric && bNumeric) { + calculator_service_pt calculator = NULL; + status = bundleContext_getService(context, calculatorService, (void *) &calculator); + if (status == CELIX_SUCCESS && calculator != NULL) { + double a = atof(aStr); + double b = atof(bStr); + double result = 0; + status = calculator->sub(calculator->calculator, a, b, &result); + if (status == CELIX_SUCCESS) { + fprintf(out, "CALCULATOR_SHELL: Sub: %f - %f = %f\n", a, b, result); + } else { + fprintf(err, "SUB: Unexpected exception in Calc service\n"); + } + } else { + fprintf(err, "No calc service available\n"); + } + } else { + fprintf(err, "SUB: Requires 2 numerical parameter\n"); + } + } else { + fprintf(err, "SUB: Requires 2 numerical parameter\n"); + } + } else { + fprintf(err, "No calc service available\n"); + } + + //return status; +} + +static celix_status_t subCommand_isNumeric(char *number, bool *ret) { + celix_status_t status = CELIX_SUCCESS; + *ret = true; + while(*number) { + if(!isdigit(*number) && *number != '.') { + *ret = false; + break; + } + number++; + } + return status; +} http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/examples/calculator_shell/src/sub_command.h ---------------------------------------------------------------------- diff --git a/remote_services/examples/calculator_shell/src/sub_command.h b/remote_services/examples/calculator_shell/src/sub_command.h new file mode 100644 index 0000000..cf13616 --- /dev/null +++ b/remote_services/examples/calculator_shell/src/sub_command.h @@ -0,0 +1,32 @@ +/** + *Licensed to the Apache Software Foundation (ASF) under one + *or more contributor license agreements. See the NOTICE file + *distributed with this work for additional information + *regarding copyright ownership. The ASF licenses this file + *to you under the Apache License, Version 2.0 (the + *"License"); you may not use this file except in compliance + *with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + *Unless required by applicable law or agreed to in writing, + *software distributed under the License is distributed on an + *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + *specific language governing permissions and limitations + *under the License. + */ +/* + * sub_command.h + * + * \date Oct 13, 2011 + * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> + * \copyright Apache License, Version 2.0 + */ + +#ifndef SUB_COMMAND_H_ +#define SUB_COMMAND_H_ + +void subCommand_execute(bundle_context_pt context, char *line, FILE *out, FILE *err); + +#endif /* SUB_COMMAND_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/remote_service_admin/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/CMakeLists.txt b/remote_services/remote_service_admin/CMakeLists.txt deleted file mode 100644 index ac703e2..0000000 --- a/remote_services/remote_service_admin/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -install (FILES - public/include/remote_endpoint_impl.h - public/include/remote_endpoint.h - public/include/remote_proxy.h - public/include/remote_service_admin.h - public/include/export_registration.h - public/include/import_registration.h - public/include/endpoint_description.h - public/include/endpoint_listener.h - public/include/remote_constants.h - DESTINATION - include/celix/remote_service_admin - COMPONENT - remote_service_admin -) -install (FILES - private/src/remote_proxy_factory_impl.c - DESTINATION - share/celix/remote_service_admin - COMPONENT - remote_service_admin -) -install (FILES - public/include/endpoint_listener.h - DESTINATION - include/celix/endpoint_listener - COMPONENT - remote_service_admin -) http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/remote_service_admin/README.md ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/README.md b/remote_services/remote_service_admin/README.md deleted file mode 100644 index c4bdebd..0000000 --- a/remote_services/remote_service_admin/README.md +++ /dev/null @@ -1,11 +0,0 @@ -## Remote Service Admin - -The Remote Service Admin (RSA) provides the mechanisms to import and export services when instructed to do so by the Topology Manager. - -To delegate method calls to the actual service implementation, the RSA_SHM and the RSA_HTTP are using "endpoint/proxy" bundles, which has all the knowledge about the marshalling and unmarshalling of data for the service. The RSA_DFI implementation combines a [foreign function interface](https://en.wikipedia.org/wiki/Foreign_function_interface) technique together with manualy created descriptors. - -Note that this folder contains code commonly used by the RSA implementations and therefore does not include any CMAKE configuration. - -###### Properties - ENDPOINTS defines the relative directory where endpoints and proxys can be found (default: endpoints) - CELIX_FRAMEWORK_EXTENDER_PATH Used in RSA_DFI only. Can be used to define a path to use as an extender path point for the framework bundle. For normal bundles the bundle cache is used. http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/remote_service_admin/private/include/export_registration_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/private/include/export_registration_impl.h b/remote_services/remote_service_admin/private/include/export_registration_impl.h deleted file mode 100644 index bb276f9..0000000 --- a/remote_services/remote_service_admin/private/include/export_registration_impl.h +++ /dev/null @@ -1,61 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * export_registration_impl.h - * - * \date Oct 6, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef EXPORT_REGISTRATION_IMPL_H_ -#define EXPORT_REGISTRATION_IMPL_H_ - -#include "remote_service_admin.h" -#include "remote_endpoint.h" -#include "service_tracker.h" -#include "log_helper.h" - -struct export_registration { - bundle_context_pt context; - remote_service_admin_pt rsa; - endpoint_description_pt endpointDescription; - service_reference_pt reference; - log_helper_pt loghelper; - - service_tracker_pt tracker; - service_tracker_pt endpointTracker; - - remote_endpoint_service_pt endpoint; - - export_reference_pt exportReference; - bundle_pt bundle; - - bool closed; -}; - -celix_status_t exportRegistration_create(log_helper_pt helper, service_reference_pt reference, endpoint_description_pt endpoint, remote_service_admin_pt rsa, bundle_context_pt context, export_registration_pt *registration); -celix_status_t exportRegistration_destroy(export_registration_pt *registration); -celix_status_t exportRegistration_open(export_registration_pt registration); - -celix_status_t exportRegistration_setEndpointDescription(export_registration_pt registration, endpoint_description_pt endpointDescription); -celix_status_t exportRegistration_startTracking(export_registration_pt registration); -celix_status_t exportRegistration_stopTracking(export_registration_pt registration); - -#endif /* EXPORT_REGISTRATION_IMPL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/remote_service_admin/private/include/import_registration_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/private/include/import_registration_impl.h b/remote_services/remote_service_admin/private/include/import_registration_impl.h deleted file mode 100644 index 7aa397f..0000000 --- a/remote_services/remote_service_admin/private/include/import_registration_impl.h +++ /dev/null @@ -1,81 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * import_registration_impl.h - * - * \date Oct 14, 2011 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef IMPORT_REGISTRATION_IMPL_H_ -#define IMPORT_REGISTRATION_IMPL_H_ - -#include "remote_service_admin.h" -#include "remote_proxy.h" -#include "service_tracker.h" -#include "log_helper.h" - -struct import_registration { - bundle_context_pt context; - endpoint_description_pt endpointDescription; - - service_reference_pt reference; - import_reference_pt importReference; - - remote_service_admin_pt rsa; - sendToHandle sendToCallback; - - bool closed; -}; - - - -struct import_registration_factory -{ - char* serviceName; - log_helper_pt loghelper; - remote_proxy_factory_service_pt trackedFactory; - service_tracker_pt proxyFactoryTracker; - bundle_context_pt context; - array_list_pt registrations; - bundle_pt bundle; -}; - - -celix_status_t importRegistration_create(endpoint_description_pt endpoint, remote_service_admin_pt rsa, sendToHandle callback, bundle_context_pt context, import_registration_pt *registration); -celix_status_t importRegistration_destroy(import_registration_pt registration); - -celix_status_t importRegistration_setEndpointDescription(import_registration_pt registration, endpoint_description_pt endpointDescription); -celix_status_t importRegistration_setHandler(import_registration_pt registration, void * handler); -celix_status_t importRegistration_setCallback(import_registration_pt registration, sendToHandle callback); - -celix_status_t importRegistration_getException(import_registration_pt registration); -celix_status_t importRegistration_getImportReference(import_registration_pt registration, import_reference_pt *reference); - -celix_status_t importRegistration_createProxyFactoryTracker(import_registration_factory_pt registration_factory, service_tracker_pt *tracker); - -celix_status_t importRegistrationFactory_destroy(import_registration_factory_pt* registration_factory); -//celix_status_t importRegistrationFactory_open(import_registration_factory_pt registration_factory); -celix_status_t importRegistrationFactory_close(import_registration_factory_pt registration_factory); -celix_status_t importRegistrationFactory_install(log_helper_pt helper, char* serviceName, bundle_context_pt context, import_registration_factory_pt *registration_factory); - - - -#endif /* IMPORT_REGISTRATION_IMPL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h b/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h deleted file mode 100644 index e8a5e1f..0000000 --- a/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h +++ /dev/null @@ -1,49 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * remote_service_admin_impl.h - * - * \date Dec 5, 2013 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ - -#ifndef REMOTE_SERVICE_ADMIN_IMPL_H_ -#define REMOTE_SERVICE_ADMIN_IMPL_H_ - -#include "remote_service_admin.h" - -#define BUNDLE_STORE_PROPERTY_NAME "ENDPOINTS" -#define DEFAULT_BUNDLE_STORE "endpoints" - -celix_status_t remoteServiceAdmin_create(bundle_context_pt context, remote_service_admin_pt *admin); -celix_status_t remoteServiceAdmin_destroy(remote_service_admin_pt *admin); - -celix_status_t remoteServiceAdmin_send(remote_service_admin_pt rsa, endpoint_description_pt endpointDescription, char *methodSignature, char **reply, int* replyStatus); - -celix_status_t remoteServiceAdmin_exportService(remote_service_admin_pt admin, char *serviceId, properties_pt properties, array_list_pt *registrations); -celix_status_t remoteServiceAdmin_removeExportedService(remote_service_admin_pt admin, export_registration_pt registration); -celix_status_t remoteServiceAdmin_getExportedServices(remote_service_admin_pt admin, array_list_pt *services); -celix_status_t remoteServiceAdmin_getImportedEndpoints(remote_service_admin_pt admin, array_list_pt *services); -celix_status_t remoteServiceAdmin_importService(remote_service_admin_pt admin, endpoint_description_pt endpoint, import_registration_pt *registration); -celix_status_t remoteServiceAdmin_removeImportedService(remote_service_admin_pt admin, import_registration_pt registration); - -celix_status_t remoteServiceAdmin_destroyEndpointDescription(endpoint_description_pt *description); - -#endif /* REMOTE_SERVICE_ADMIN_IMPL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/2a670f26/remote_services/remote_service_admin/private/src/endpoint_description.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin/private/src/endpoint_description.c b/remote_services/remote_service_admin/private/src/endpoint_description.c deleted file mode 100644 index 0d8b684..0000000 --- a/remote_services/remote_service_admin/private/src/endpoint_description.c +++ /dev/null @@ -1,89 +0,0 @@ -/** - *Licensed to the Apache Software Foundation (ASF) under one - *or more contributor license agreements. See the NOTICE file - *distributed with this work for additional information - *regarding copyright ownership. The ASF licenses this file - *to you under the Apache License, Version 2.0 (the - *"License"); you may not use this file except in compliance - *with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - *Unless required by applicable law or agreed to in writing, - *software distributed under the License is distributed on an - *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - *specific language governing permissions and limitations - *under the License. - */ -/* - * endpoint_description.c - * - * \date 25 Jul 2014 - * \author <a href="mailto:[email protected]">Apache Celix Project Team</a> - * \copyright Apache License, Version 2.0 - */ -#include <stdlib.h> -#include <string.h> - -#include "celix_errno.h" -#include "celix_log.h" - -#include "endpoint_description.h" -#include "remote_constants.h" -#include "constants.h" - -static celix_status_t endpointDescription_verifyLongProperty(properties_pt properties, char *propertyName, unsigned long *longProperty); - -celix_status_t endpointDescription_create(properties_pt properties, endpoint_description_pt *endpointDescription) { - celix_status_t status = CELIX_SUCCESS; - - unsigned long serviceId = 0UL; - status = endpointDescription_verifyLongProperty(properties, (char *) OSGI_RSA_ENDPOINT_SERVICE_ID, &serviceId); - if (status != CELIX_SUCCESS) { - return status; - } - - endpoint_description_pt ep = calloc(1,sizeof(*ep)); - - ep->properties = properties; - ep->frameworkUUID = (char*)properties_get(properties, OSGI_RSA_ENDPOINT_FRAMEWORK_UUID); - ep->id = (char*)properties_get(properties, OSGI_RSA_ENDPOINT_ID); - ep->service = strndup(properties_get(properties, OSGI_FRAMEWORK_OBJECTCLASS), 1024*10); - ep->serviceId = serviceId; - - if (!(ep->frameworkUUID) || !(ep->id) || !(ep->service) ) { - fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "ENDPOINT_DESCRIPTION: incomplete description!."); - status = CELIX_BUNDLE_EXCEPTION; - } - - if(status == CELIX_SUCCESS){ - *endpointDescription = ep; - } - else{ - *endpointDescription = NULL; - free(ep); - } - - return status; -} - -celix_status_t endpointDescription_destroy(endpoint_description_pt description) { - properties_destroy(description->properties); - free(description->service); - free(description); - return CELIX_SUCCESS; -} - -static celix_status_t endpointDescription_verifyLongProperty(properties_pt properties, char *propertyName, unsigned long *longProperty) { - celix_status_t status = CELIX_SUCCESS; - - const char *value = properties_get(properties, propertyName); - if (value == NULL) { - *longProperty = 0UL; - } else { - *longProperty = strtoul(value,NULL,10); - } - - return status; -}
