# message receiver
[receivers]

## Files
file | axis2_msg_recv.h
| Axis Message Receiver interface. Message Receiver struct. This interface is extended by custom message receivers.

## Typedefs
typedef struct axis2_msg_recv | axis2_msg_recv_t
typedef axis2_status_t(* | AXIS2_MSG_RECV_INVOKE_BUSINESS_LOGIC )(axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_msg_ctx *in_msg_ctx, struct axis2_msg_ctx *out_msg_ctx)
typedef axis2_status_t(* | AXIS2_MSG_RECV_RECEIVE )(axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_msg_ctx *in_msg_ctx, void *callback_recv_param)
typedef axis2_status_t(* | AXIS2_MSG_RECV_LOAD_AND_INIT_SVC )(axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_svc *svc)
## Functions
AXIS2_EXTERN void | axis2_msg_recv_free (axis2_msg_recv_t *msg_recv, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t | axis2_msg_recv_receive (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_msg_ctx *in_msg_ctx, void *callback_recv_param)
AXIS2_EXTERN axis2_status_t | axis2_msg_recv_invoke_business_logic (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_msg_ctx *in_msg_ctx, struct axis2_msg_ctx *out_msg_ctx)
AXIS2_EXTERN axis2_svc_skeleton_t * | axis2_msg_recv_make_new_svc_obj (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_msg_ctx *msg_ctx)
AXIS2_EXTERN axis2_svc_skeleton_t * | axis2_msg_recv_get_impl_obj (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_msg_ctx *msg_ctx)
AXIS2_EXTERN axis2_status_t | axis2_msg_recv_set_scope (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, const axis2_char_t *scope)
AXIS2_EXTERN axis2_char_t * | axis2_msg_recv_get_scope (axis2_msg_recv_t *msg_recv, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t | axis2_msg_recv_delete_svc_obj (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXPORT axis2_status_t | axis2_msg_recv_set_invoke_business_logic (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, AXIS2_MSG_RECV_INVOKE_BUSINESS_LOGIC func)
AXIS2_EXPORT axis2_status_t | axis2_msg_recv_set_derived (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, void *derived)
AXIS2_EXPORT void * | axis2_msg_recv_get_derived (const axis2_msg_recv_t *msg_recv, const axutil_env_t *env)
AXIS2_EXPORT axis2_status_t | axis2_msg_recv_set_receive (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, AXIS2_MSG_RECV_RECEIVE func)
AXIS2_EXPORT axis2_status_t | axis2_msg_recv_set_load_and_init_svc (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, AXIS2_MSG_RECV_LOAD_AND_INIT_SVC func)
AXIS2_EXPORT axis2_status_t | axis2_msg_recv_load_and_init_svc (axis2_msg_recv_t *msg_recv, const axutil_env_t *env, struct axis2_svc *svc)
AXIS2_EXTERN axis2_msg_recv_t * | axis2_msg_recv_create (const axutil_env_t *env)

## Detailed Description

Description.

## Typedef Documentation

typedef struct axis2_msg_recv axis2_msg_recv_t

Type name for struct axis2_msg_recv

## Function Documentation

AXIS2_EXTERN axis2_msg_recv_t* axis2_msg_recv_create | ( | const axutil_env_t * | env | ) |

Create new message receiver object. usually this will be called from the extended message receiver object.

See also:
  create method of raw_xml_in_out_msg_recv

Parameters:

  | env | pointer to environment struct

Returns:
  newly created message receiver object

AXIS2_EXTERN axis2_status_t axis2_msg_recv_delete_svc_obj | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

Delete the service skeleton object created by make_new_svc_obj

Parameters:

  | msg_recv | pointer to message receiver pointer to environment struct
  | msg_ctx | pointer to message context

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN void axis2_msg_recv_free | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env |
| ) |  |  |

Deallocate memory

Parameters:

  | msg_recv | pinter to message receiver
  | env | pointer to environment struct

Returns:
  void

AXIS2_EXTERN axis2_svc_skeleton_t* axis2_msg_recv_get_impl_obj | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env,
|  | struct axis2_msg_ctx * | msg_ctx |
| ) |  |  |

This will return the service skeleton object

Parameters:

  | msg_recv | pointer to message receiver
  | env | pointer to environment struct
  | msg_ctx | pointer to message context

Returns:
  service skeleton object

AXIS2_EXTERN axis2_char_t* axis2_msg_recv_get_scope | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env |
| ) |  |  |

Get the application scope

Parameters:

  | msg_recv | pointer to message receiver pointer to environment struct

Returns:
  scope

AXIS2_EXTERN axis2_status_t axis2_msg_recv_invoke_business_logic | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env,
|  | struct axis2_msg_ctx * | in_msg_ctx,
|  | struct axis2_msg_ctx * | out_msg_ctx |
| ) |  |  |

This contain in out synchronous business invoke logic

Parameters:

  | msg_recv | pointer to message receiver
  | env | pointer to environment struct
  | in_msg_ctx | pointer to in message context
  | out_msg_ctx | pointer to out message context

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_svc_skeleton_t* axis2_msg_recv_make_new_svc_obj | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env,
|  | struct axis2_msg_ctx * | msg_ctx |
| ) |  |  |

this will create a new service skeleton object

Parameters:

  | msg_recv | pointer to message receiver
  | env | pointer to environment struct
  | msg_ctx | pointer to message context

Returns:
  service skeleton object

AXIS2_EXTERN axis2_status_t axis2_msg_recv_receive | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env,
|  | struct axis2_msg_ctx * | in_msg_ctx,
|  | void * | callback_recv_param |
| ) |  |  |

This method is called from axis2_engine_receive method. This method's actual implementation is decided from the create method of the extended message receiver object. There depending on the synchronous or asynchronous type, receive method is assigned with the synchronous or asynchronous implementation of receive.

See also:
  raw_xml_in_out_msg_recv_create method where receive is assigned to receive_sync

Parameters:

  | msg_recv | pointer to message receiver
  | env | pointer to environment struct
  | in_msg_ctx | pointer to in message context

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_msg_recv_set_scope | ( | axis2_msg_recv_t * | msg_recv,
|  | const axutil_env_t * | env,
|  | const axis2_char_t * | scope |
| ) |  |  |

Set the application scope

Parameters:

  | msg_recv | pointer to message receiver
  | env | pointer to environment struct
  | scope | pointer to scope

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE