#include <std/base/klstd.h>
#include <std/init/init_std.h>
#include <transport/init/init_tr.h>
#include <kca/init/init_kca.h>
#include <std/tmstg/timeoutstore.h>
#include <transport/tr/transport.h>

DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLPRCI)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLPRCP)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLPRTS)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLPRTS2)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLPRES)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLJRNL)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLSSS)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLPRSS)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, CONTIE)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLFT)
DECLARE_MODULE_INIT_DEINIT2(KLCSKCA_DECL, KLAUD)

IMPLEMENT_MODULE_INIT_DEINIT(KLCSKCA)

IMPLEMENT_MODULE_INIT_BEGIN2(KLCSKCA_DECL, KLCSKCA)
        KLCSSTD_Initialize();
        KLCSTR_Initialize();
		CALL_MODULE_INIT(KLAUD);
		CALL_MODULE_INIT(KLPRSS);
        CALL_MODULE_INIT(KLSSS);
		CALL_MODULE_INIT(KLPRTS);
        CALL_MODULE_INIT(KLPRTS2);
        CALL_MODULE_INIT(KLJRNL);
		CALL_MODULE_INIT(KLPRES);
        CALL_MODULE_INIT(KLPRCP);
        CALL_MODULE_INIT(KLPRCI);
        CALL_MODULE_INIT(CONTIE);
        CALL_MODULE_INIT(KLFT);
IMPLEMENT_MODULE_INIT_END()

IMPLEMENT_MODULE_DEINIT_BEGIN2(KLCSKCA_DECL, KLCSKCA)
        KLTMSG_CleanCommonTimeoutStore();
        CALL_MODULE_DEINIT(KLFT);
        CALL_MODULE_DEINIT(CONTIE);
        CALL_MODULE_DEINIT(KLPRCI);
        CALL_MODULE_DEINIT(KLPRCP);
        CALL_MODULE_DEINIT(KLPRES);
        CALL_MODULE_DEINIT(KLJRNL);
        CALL_MODULE_DEINIT(KLPRTS2);
		CALL_MODULE_DEINIT(KLPRTS);        
        CALL_MODULE_DEINIT(KLSSS);
        CALL_MODULE_DEINIT(KLPRSS);
		CALL_MODULE_DEINIT(KLAUD);
        KLCSTR_Deinitialize();
        KLCSSTD_Deinitialize();
IMPLEMENT_MODULE_DEINIT_END()

IMPLEMENT_MODULE_INIT_DEINIT(KLCSC)

IMPLEMENT_MODULE_INIT_BEGIN2(KLCSKCA_DECL, KLCSC)
		CALL_MODULE_INIT(KLCSKCA);
        KLTR_GetTransport()->SetTimeouts(INT_MAX, INT_MAX, 10000);
IMPLEMENT_MODULE_INIT_END()

IMPLEMENT_MODULE_DEINIT_BEGIN2(KLCSKCA_DECL, KLCSC)
		CALL_MODULE_DEINIT(KLCSKCA);
IMPLEMENT_MODULE_DEINIT_END()
