summaryrefslogtreecommitdiffstats
path: root/include/axis2_svc_grp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/axis2_svc_grp.h')
-rw-r--r--include/axis2_svc_grp.h368
1 files changed, 368 insertions, 0 deletions
diff --git a/include/axis2_svc_grp.h b/include/axis2_svc_grp.h
new file mode 100644
index 0000000..4f05296
--- /dev/null
+++ b/include/axis2_svc_grp.h
@@ -0,0 +1,368 @@
+
+/*
+ * 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.
+ */
+
+#ifndef AXIS2_SVC_GRP_H
+#define AXIS2_SVC_GRP_H
+
+/**
+ * @defgroup axis2_svc_grp service group
+ * @ingroup axis2_desc
+ * service group represents the static structure of a service group in
+ * the Axis2 configuration.
+ * In Axis2 description hierarchy, a service group lives inside the
+ * configuration. service groups are configured in services.xml files located
+ * in the respective service group folders of the services folder in the repository.
+ * In services.xml file, services groups are declared at top level.
+ * A service group can have one or more services associated with it.
+ * Sometimes services.xml would not have a service group defined, but only a
+ * service. In such cases a service group with the same name as that of the
+ * service mentioned in services.xml would be created by the deployment
+ * engine and the service would be associated with that newly created service
+ * group. The deployment engine would create service group instances to represent
+ * those configured service groups in services.xml files and would store
+ * them in the configuration.
+ * service group encapsulates data on engaged module information and the
+ * service associated with service group.
+ * @{
+ */
+
+/**
+ * @file axis2_svc_grp.h
+ */
+
+#include <axutil_param_container.h>
+#include <axis2_desc.h>
+#include <axis2_svc.h>
+#include <axis2_svc_grp_ctx.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /** Type name for struct axis2_svc_grp */
+ typedef struct axis2_svc_grp axis2_svc_grp_t;
+
+ struct axis2_svc;
+ struct axis2_svc_grp_ctx;
+
+ /**
+ * Frees service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return void
+ */
+ AXIS2_EXTERN void AXIS2_CALL
+ axis2_svc_grp_free(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Sets service group name.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param svc_grp_name service group name string
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_set_name(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axis2_char_t * svc_grp_name);
+
+ /**
+ * Gets service group name.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return service group name string
+ */
+ AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
+ axis2_svc_grp_get_name(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Adds given service to service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param service service to be added, service group assumes ownership
+ * of service
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_add_svc(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ struct axis2_svc *svc);
+
+ /**
+ * Gets named service from service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param svc_qname pointer to QName of the service
+ * @return pointer to service corresponding to given QName, returns a
+ * reference, not a cloned copy
+ */
+ AXIS2_EXTERN struct axis2_svc *AXIS2_CALL
+ axis2_svc_grp_get_svc(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axutil_qname_t * svc_qname);
+
+ /**
+ * Gets all services associated with service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return pointer to hash table containing all services, returns a
+ * reference, not a cloned copy
+ */
+ AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
+ axis2_svc_grp_get_all_svcs(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Removes named service from service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param svc_name pointer to service QName
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_remove_svc(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axutil_qname_t * svc_qname);
+
+ /**
+ * Adds parameter.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param param pointer to parameter, service group assumes ownership
+ * of parameter
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_add_param(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ axutil_param_t * param);
+
+ /**
+ * Gets named parameter.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param name parameter name
+ * @return pointer to named parameter if exists, else NULL. Returns a
+ * reference, not a cloned copy
+ */
+ AXIS2_EXTERN axutil_param_t *AXIS2_CALL
+ axis2_svc_grp_get_param(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axis2_char_t * name);
+
+ /**
+ * Remove a parameter.
+ * @param svc_grp pointer to service grp struct
+ * @param env pointer to the environment
+ * @Param param_name parameter name to be removed
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_remove_param(
+ const axis2_svc_grp_t *svc_grp,
+ const axutil_env_t *env,
+ const axis2_char_t *param_name);
+
+ /**
+ * Gets all parameters set on service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return pointer to array list containing parameter, returns a
+ * reference, not a cloned copy
+ */
+ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+
+ axis2_svc_grp_get_all_params(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Checks if the named parameter is locked.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param param_name pointer to param name
+ * @return AXIS2_TRUE if the named parameter is locked, else AXIS2_FALSE
+ */
+ AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+ axis2_svc_grp_is_param_locked(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axis2_char_t * param_name);
+
+ /**
+ * Adds given module QName to list of module QNames.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param module_name pointer to module QName
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_add_module_qname(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axutil_qname_t * module_qname);
+
+ /**
+ * Gets parent which is of type configuration.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return pointer to parent configuration, returns a
+ * reference, not a cloned copy
+ */
+ AXIS2_EXTERN struct axis2_conf *AXIS2_CALL
+ axis2_svc_grp_get_parent(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Sets parent which is of type configuration.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param parent parent configuration, service group does not assume
+ * the ownership of configuration
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_set_parent(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ struct axis2_conf *parent);
+
+ /**
+ * Engages named module to service group. Engaging a module to service
+ * group would ensure that the same module would be engaged to all
+ * services within the group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param module_name pointer to module QName
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_engage_module(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axutil_qname_t * module_qname);
+
+ /**
+ * Gets all module QNames associated with service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return pointer to array list containing all QNames, returns a
+ * reference, not a cloned copy
+ */
+ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+
+ axis2_svc_grp_get_all_module_qnames(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Adds module reference.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param moduleref pointer to module QName
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_svc_grp_add_module_ref(
+ axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ const axutil_qname_t * moduleref);
+
+ /**
+ * Gets all module references.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @return pointer to array list containing module reference, returns
+ * a reference, not a cloned copy
+ */
+ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+
+ axis2_svc_grp_get_all_module_refs(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Gets service group context related to this service group.
+ * @param svc_grp pointer to service group struct
+ * @param env pointer to environment struct
+ * @param parent pointer to configuration context which is the parent of
+ * the context hierarchy
+ * @return pointer to service group context related to this service
+ * group, returns a reference, not a cloned copy
+ */
+ AXIS2_EXTERN struct axis2_svc_grp_ctx *AXIS2_CALL
+
+ axis2_svc_grp_get_svc_grp_ctx(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env,
+ struct axis2_conf_ctx *parent);
+
+ AXIS2_EXTERN axutil_param_container_t *AXIS2_CALL
+
+ axis2_svc_grp_get_param_container(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+ /**
+ * Creates a service group struct instance.
+ * @param env pointer to environment struct
+ * @return pointer to newly created service group
+ */
+ AXIS2_EXTERN axis2_svc_grp_t *AXIS2_CALL
+ axis2_svc_grp_create(
+ const axutil_env_t * env);
+
+ /**
+ * Creates service group with given configuration as the parent.
+ * @param env pointer to environment struct
+ * @param conf pointer to configuration, service group created does not
+ * assume ownership of configuration
+ * @return pointer to newly created service group
+ */
+ AXIS2_EXTERN axis2_svc_grp_t *AXIS2_CALL
+ axis2_svc_grp_create_with_conf(
+ const axutil_env_t * env,
+ struct axis2_conf *conf);
+
+ /**
+ * Gets base description.
+ * @param svc_grp pointer to message
+ * @param env pointer to environment struct
+ * @return pointer to base description struct
+ */
+ AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
+ axis2_svc_grp_get_base(
+ const axis2_svc_grp_t * svc_grp,
+ const axutil_env_t * env);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIS2_SVC_GRP_H */