#include "judger.h"
#include "tunnel_template.h"
#include "bmser_trans.h"
#include "bmser_my_log.h"
#include "bmser_db_control_db.h"

struct BMSER_TRANS_MGR g_bmser_trans_mgr;

void BMSER_TRANS_SetTransMgr(struct BMSER_TRANS_MGR mgr)
{
    g_bmser_trans_mgr = mgr;
}

enum BMSER_DEV_TYPE BMSER_TRANS_GetDevType()
{
    return g_bmser_trans_mgr.devType;
}

struct BMSER_TRANS_MGR BMSER_TRANS_GetTransMgr()
{
    return g_bmser_trans_mgr;
}
extern int heart_beat();

int main(int argc, char const *argv[])
{
    int ret;
    struct BMSER_TRANS_CFG *pCfg;

    // /* 初始化模板通道的map */
    // ret = TunnelTemplate_Init();     // 后面失败不去回收这里的资源了，懒一点，保证错误时进程退出即可
    // if (ret)
    // {
    //     BMSER_MyLogError("TunnelTemplate_Init failed");

    //     return -1;
    // }

    ret = BmserProtocol_DBInit(SLAVE_MODE);
    if (ret)
    {
        BMSER_MyLogError("DB init failed");

        return -1;
    }

    /*load cfg*/
    pCfg = ParseCfg();
    if (NULL == pCfg)
    {
        BMSER_MyLogError("parse cfg file failed");

        return -1;
    }

    ret = TunnelTemplate_Init();
    if (ret)
    {
        BMSER_MyLogError("tunnel template init failed");

        return -1;
    }

    /*init*/
    ret = Judger_Init();
    if (ret)
    {
        BMSER_MyLogError("Judger_Init failed");

        return -1;
    }

    ret = Judger_Start();
    if (ret)
    {
        BMSER_MyLogError("Judger start failed");

        return -1;
    }

    heart_beat();

    // while(1)
    // {
    //     sleep(20);
    // }

    return 0;
}
