axis2_svc_skeleton.h

Go to the documentation of this file.
00001 /*
00002 * Copyright 2004,2005 The Apache Software Foundation.
00003 *
00004 * Licensed under the Apache License, Version 2.0 (the "License");
00005 * you may not use this file except in compliance with the License.
00006 * You may obtain a copy of the License at
00007 *
00008 *      http://www.apache.org/licenses/LICENSE-2.0
00009 *
00010 * Unless required by applicable law or agreed to in writing, software
00011 * distributed under the License is distributed on an "AS IS" BASIS,
00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013 * See the License for the specific language governing permissions and
00014 * limitations under the License.
00015 */
00016 
00017 #ifndef AXIS2_SVC_SKELETON_H
00018 #define AXIS2_SVC_SKELETON_H
00019 
00039 #include <axiom_node.h>
00040 #include <axis2_array_list.h>
00041 #include <axis2_msg_ctx.h>
00042 
00043 #ifdef __cplusplus
00044 extern "C"
00045 {
00046 #endif
00047 
00048 
00050     typedef struct axis2_svc_skeleton_ops axis2_svc_skeleton_ops_t;
00052     typedef struct axis2_svc_skeleton axis2_svc_skeleton_t;
00053    
00059      struct axis2_svc_skeleton_ops
00060     {
00061 
00062         /*
00063     * @param svc_skeleton pointer to svc_skeleton struct
00064     * @param env pointer to environment struct
00065     */
00066         int (AXIS2_CALL *
00067                 init)(
00068                     axis2_svc_skeleton_t *svc_skeleton,
00069                     const axis2_env_t *env);
00070 
00071         /*
00072     * @param svc_skeli pointer to svc_skeli struct
00073     * @param env pointer to environment struct
00074     */
00075         int (AXIS2_CALL *
00076                 free)(
00077                     axis2_svc_skeleton_t *svc_skeli,
00078                     const axis2_env_t *env);
00079 
00080         /*
00081     * @param svc_skeli pointer to svc_skeli struct
00082     * @param env pointer to environment struct
00083     */
00084         int (AXIS2_CALL *
00085                 free_void_arg)(
00086                     void *svc_skeli,
00087                     const axis2_env_t *env);
00088 
00089         /*
00090     * @param svc_skeli pointer to svc_skeli struct
00091     * @param env pointer to environment struct
00092     * @param node pointer to node struct
00093     * @param msg_ctx pointer to message context struct
00094     */
00095         axiom_node_t *(AXIS2_CALL*
00096                 invoke)(
00097                     axis2_svc_skeleton_t *svc_skeli,
00098                     const axis2_env_t *env,
00099                     axiom_node_t *node,
00100                     axis2_msg_ctx_t *msg_ctx);
00101 
00102         /*
00103     * @param svc_skeli pointer to svc_skeli struct
00104     * @param env pointer to environment struct
00105     * @param node pointer to node struct
00106     */
00107         axiom_node_t *(AXIS2_CALL*
00108                 on_fault)(
00109                     axis2_svc_skeleton_t *svc_skeli,
00110                     const axis2_env_t *env,
00111                     axiom_node_t *node);
00112 
00113 
00114     } ;
00115 
00122      struct axis2_svc_skeleton
00123     {
00124         axis2_svc_skeleton_ops_t *ops;
00125         axis2_array_list_t *func_array;
00126     };
00127 
00133     AXIS2_EXTERN axis2_svc_skeleton_t * AXIS2_CALL
00134     axis2_svc_skeleton_create (const axis2_env_t *env);
00135 
00136 /*************************** Function macros **********************************/
00137 
00140 #define AXIS2_SVC_SKELETON_INIT(svc_skeleton, env) \
00141       ((svc_skeleton)->ops->init (svc_skeleton, env))
00142 
00145 #define AXIS2_SVC_SKELETON_FREE(svc_skeleton, env) \
00146       ((svc_skeleton)->ops->free (svc_skeleton, env))
00147 
00150 #define AXIS2_SVC_SKELETON_INVOKE(svc_skeleton, env, node, msg_ctx) \
00151       ((svc_skeleton)->ops->invoke (svc_skeleton, env, node, msg_ctx))
00152 
00155 #define AXIS2_SVC_SKELETON_ON_FAULT(svc_skeleton, env, node) \
00156       ((svc_skeleton)->ops->on_fault (svc_skeleton, env, node))
00157 
00160 #ifdef __cplusplus
00161 }
00162 #endif
00163 
00164 #endif /* AXIS2_SVC_SKELETON_H */

Generated on Tue Oct 3 20:47:59 2006 for Axis2/C by  doxygen 1.4.7