# engine

## Modules
| configuration
| dispatcher
| phases
| phase meta data
## Files
file | axis2_engine.h
## Typedefs
typedef struct axis2_engine | axis2_engine_t
## Functions
AXIS2_EXTERN axis2_status_t | axis2_engine_send (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t | axis2_engine_receive (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t | axis2_engine_send_fault (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t | axis2_engine_receive_fault (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_msg_ctx_t * | axis2_engine_create_fault_msg_ctx (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *processing_context, const axis2_char_t *code_value, const axis2_char_t *reason_text)
AXIS2_EXTERN axis2_status_t | axis2_engine_invoke_phases (axis2_engine_t *engine, const axutil_env_t *env, axutil_array_list_t *phases, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t | axis2_engine_resume_invocation_phases (axis2_engine_t *engine, const axutil_env_t *env, axutil_array_list_t *phases, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN const axis2_char_t * | axis2_engine_get_sender_fault_code (const axis2_engine_t *engine, const axutil_env_t *env, const axis2_char_t *soap_namespace)
AXIS2_EXTERN const axis2_char_t * | axis2_engine_get_receiver_fault_code (const axis2_engine_t *engine, const axutil_env_t *env, const axis2_char_t *soap_namespace)
AXIS2_EXTERN void | axis2_engine_free (axis2_engine_t *engine, const axutil_env_t *env)
AXIS2_EXTERN axis2_status_t | axis2_engine_resume_receive (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_status_t | axis2_engine_resume_send (axis2_engine_t *engine, const axutil_env_t *env, axis2_msg_ctx_t *msg_ctx)
AXIS2_EXTERN axis2_engine_t * | axis2_engine_create (const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx)

## Detailed Description

engine has the send and receive functions that is the heart when providing and consuming services. In Axis2 SOAP engine architecture, all the others parts are build around the concept of the engine. There is only one engine for both the server side and the client side, and the engine is not aware of if it is invoked as an client or a service. engine supports both synchronous and asynchronous messaging modes based on send and receive functions.

## Typedef Documentation

typedef struct axis2_engine axis2_engine_t

Type name for struct axis2_engine

## Function Documentation

AXIS2_EXTERN axis2_engine_t* axis2_engine_create | ( | const axutil_env_t * | env,
|  | axis2_conf_ctx_t * | conf_ctx |
| ) |  |  |

Creates en engine struct instance.

Parameters:

  | env | pointer to environment struct
  | conf_ctx | pointer to configuration context struct

Returns:
  pointer to newly created engine struct

AXIS2_EXTERN axis2_msg_ctx_t* axis2_engine_create_fault_msg_ctx | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | processing_context,
|  | const axis2_char_t * | code_value,
|  | const axis2_char_t * | reason_text |
| ) |  |  |

Creates a message context that represents the fault state based on current processing state.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | processing_context | pointer to message context representing current processing context
  | code_value | pointer to a string containing fault code
  | reason_text | pointer to a string containing reason of the fault

Returns:
  pointer to message context representing the fault state

AXIS2_EXTERN void axis2_engine_free | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env |
| ) |  |  |

Frees engine struct.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN const axis2_char_t* axis2_engine_get_receiver_fault_code | ( | const axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | const axis2_char_t * | soap_namespace |
| ) |  |  |

Gets receiver's SOAP fault code.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | soap_namespace | pointer to soap namespace

AXIS2_EXTERN const axis2_char_t* axis2_engine_get_sender_fault_code | ( | const axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | const axis2_char_t * | soap_namespace |
| ) |  |  |

Gets sender's SOAP fault code.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | soap_namespace | pointer to SOAP namespace

Returns:
  pointer to SOAP fault code string

AXIS2_EXTERN axis2_status_t axis2_engine_invoke_phases | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axutil_array_list_t * | phases,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

Invokes the phases in the given array list of phases. The list of phases could be representing one of the flows. The two possible flows are in flow and out flow. Both of those flows can also have fault related representations, in fault flow and out fault flow. Invoking a phase triggers the invocation of handlers the phase contain.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | phases | pointer to phases
  | msg_ctx | pointer to message context containing current state

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_receive | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

This methods represents the in flow of the Axis engine, both at the server side as well as the client side. In this function, the execution chain is created using the phases of the in flow. All handlers at each in flow phase, which are ordered in the deployment time are invoked in sequence here.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | msg_ctx | pointer to message context representing current state that is used in receiving message

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_receive_fault | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

This is invoked when a SOAP fault is received.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | msg_ctx | pointer to message context representing that contains the details of receive state

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_resume_invocation_phases | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axutil_array_list_t * | phases,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

Resumes phase invocation. While invoking the phases, one of the handlers in any phase could determine to pause the invocation. Often pausing happens to wait till some state is reached or some task is complete. Once paused, the invocation has to be resumed using this function, which will resume the invocation from the paused handler in the paused phase and will continue till it is paused again or it completes invoking all the remaining handlers in the remaining phases.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | phases | pointer to phases
  | msg_ctx | pointer to message context containing current paused state

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_resume_receive | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

Resumes receive operation. It could be the case that receive was paused by one of the in flow handlers. In such a situation, this method could be used to resume the receive operation.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | msg_ctx | pointer to message context

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_resume_send | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

Resumes send operation. It could be the case that send was paused by one of the out flow handlers. In such a situation, this method could be used to resume the send operation.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | msg_ctx | pointer to message context

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_send | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

This methods represents the out flow of the Axis engine both at the server side as well as the client side. In this function, the execution chain is created using the phases of the out flow. All handlers at each out flow phase, which are ordered in the deployment time are invoked in sequence here.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | msg_ctx | pointer to message context representing current state that is used when sending message

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE

AXIS2_EXTERN axis2_status_t axis2_engine_send_fault | ( | axis2_engine_t * | engine,
|  | const axutil_env_t * | env,
|  | axis2_msg_ctx_t * | msg_ctx |
| ) |  |  |

Sends a SOAP fault.

Parameters:

  | engine | pointer to engine
  | env | pointer to environment struct
  | msg_ctx | pointer to message context that contains details of fault state

Returns:
  AXIS2_SUCCESS on success, else AXIS2_FAILURE