/*

*LicensedtotheApacheSoftwareFoundation(ASF)underoneormore

*contributorlicenseagreements.SeetheNOTICEfiledistributedwith

*thisworkforadditionalinformationregardingcopyrightownership.

*TheASFlicensesthisfiletoYouundertheApacheLicense,Version2.0

*(the"License");youmaynotusethisfileexceptincompliancewith

*theLicense.YoumayobtainacopyoftheLicenseat

*

*http://www.apache.org/licenses/LICENSE-2.0

*

*Unlessrequiredbyapplicablelaworagreedtoinwriting,software

*distributedundertheLicenseisdistributedonan"ASIS"BASIS,

*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.

*SeetheLicenseforthespecificlanguagegoverningpermissionsand

*limitationsundertheLicense.

*/


#include<axis2_module.h>

#include<axis2_conf_ctx.h>



#include"mod_log.h"



axis2_status_tAXIS2_CALL

axis2_mod_log_shutdown(axis2_module_t*module,

constaxutil_env_t*env);



axis2_status_tAXIS2_CALL

axis2_mod_log_init(

axis2_module_t*module,

constaxutil_env_t*env,

axis2_conf_ctx_t*conf_ctx,

axis2_module_desc_t*module_desc);



axis2_status_tAXIS2_CALL

axis2_mod_log_fill_handler_create_func_map(axis2_module_t*module,

constaxutil_env_t*env);



/**

*Moduleoperationsstructvariablewithfunctionsassignedtomembers

*/


staticconstaxis2_module_ops_tlog_module_ops_var={

axis2_mod_log_init,

axis2_mod_log_shutdown,

axis2_mod_log_fill_handler_create_func_map

};



axis2_module_t*

axis2_mod_log_create(constaxutil_env_t*env)

{

axis2_module_t*module=NULL;

module=AXIS2_MALLOC(env->allocator,

sizeof(axis2_module_t));



/*initializeoperations*/

module->ops=&log_module_ops_var;



returnmodule;

}



axis2_status_tAXIS2_CALL

axis2_mod_log_init(

axis2_module_t*module,

constaxutil_env_t*env,

axis2_conf_ctx_t*conf_ctx,

axis2_module_desc_t*module_desc)

{

/*Anyinitializationstuffrelatedtothismodulecanbehere*/

returnAXIS2_SUCCESS;

}



axis2_status_tAXIS2_CALL

axis2_mod_log_shutdown(axis2_module_t*module,

constaxutil_env_t*env)

{

if(module->handler_create_func_map)

{

axutil_hash_free(module->handler_create_func_map,env);

}



if(module)

{

AXIS2_FREE(env->allocator,module);

}

returnAXIS2_SUCCESS;

}



axis2_status_tAXIS2_CALL

axis2_mod_log_fill_handler_create_func_map(axis2_module_t*module,

constaxutil_env_t*env)

{

AXIS2_ENV_CHECK(env,AXIS2_FAILURE);



module->handler_create_func_map=axutil_hash_make(env);

if(!module->handler_create_func_map)

{

AXIS2_ERROR_SET(env->error,AXIS2_ERROR_NO_MEMORY,

AXIS2_FAILURE);

returnAXIS2_FAILURE;

}



/*addinhandler*/

axutil_hash_set(module->handler_create_func_map,"LoggingInHandler",

AXIS2_HASH_KEY_STRING,axutil_log_in_handler_create);



/*addouthandler*/

axutil_hash_set(module->handler_create_func_map,"LoggingOutHandler",

AXIS2_HASH_KEY_STRING,axutil_log_out_handler_create);



returnAXIS2_SUCCESS;

}



/**

*Followingfunctionsareexpectedtobethereinthemodulelib

*thathelpstocreateandremovemoduleinstances

*/




AXIS2_EXPORTint

axis2_get_instance(axis2_module_t**inst,

constaxutil_env_t*env)

{

*inst=axis2_mod_log_create(env);

if(!(*inst))

{

returnAXIS2_FAILURE;

}



returnAXIS2_SUCCESS;

}



AXIS2_EXPORTint

axis2_remove_instance(axis2_module_t*inst,

constaxutil_env_t*env)

{

axis2_status_tstatus=AXIS2_FAILURE;

if(inst)

{

status=axis2_mod_log_shutdown(inst,env);

}

returnstatus;

}