Esempio n. 1
0
int kr_traversal_fields(T_DatasrcCur *ptDatasrcCur, 
        DatasrcFieldPreFunc pre_func, 
        DatasrcFieldFunc func, 
        DatasrcFieldPostFunc post_func)
{
    int iResult = 0, iFlag = 0, iCnt = 0;
    T_DatasrcFieldCur stDatasrcFieldCur = {0};
    
    stDatasrcFieldCur.lInDatasrcId = ptDatasrcCur->lOutDatasrcId;
    iResult = dbsDatasrcFieldCur(dbsenv, KR_DBCUROPEN, &stDatasrcFieldCur);
    if (iResult != KR_DBOK) {
        fprintf(stderr, "dbsDatasrcFieldCur Open %ld Error!", \
                ptDatasrcCur->lOutDatasrcId);
        return -1;
    }
    
    /* run datasrc_field_pre_func */
    void *data = NULL;
    if (pre_func) {
        data = pre_func(ptDatasrcCur);
    }

    while(1)
    {
        iResult=dbsDatasrcFieldCur(dbsenv, KR_DBCURFETCH, &stDatasrcFieldCur);
        if (iResult != KR_DBNOTFOUND && iResult != KR_DBOK) {
            fprintf(stderr, "dbsDatasrcFieldCur Fetch Error[%d]![%s]:[%s]", 
                    iResult, dbsenv->sqlstate, dbsenv->sqlerrmsg);
            iFlag = -1;
            break;
        } else if (iResult == KR_DBNOTFOUND) {
            fprintf(stdout, "Load [%d]Fields Of Table[%ld] Totally!\n", \
                    iCnt, stDatasrcFieldCur.lInDatasrcId);
            break;
        }
        kr_string_rtrim(stDatasrcFieldCur.caOutFieldName);

        /* run datasrc_field_func */
        if (func) {
            iFlag = func(&stDatasrcFieldCur, data);
            if (iFlag != 0) {
                fprintf(stderr, "run [%ld] datasrc_field_func failed!\n", 
                        stDatasrcFieldCur.lInDatasrcId);
                break;
            }
        }

        iCnt++;
    }

    /* run datasrc_field_post_func */
    if (post_func) {
        post_func(data, iFlag);
    }

    iResult = dbsDatasrcFieldCur(dbsenv, KR_DBCURCLOSE, &stDatasrcFieldCur);
    if (iResult != KR_DBOK) {
        fprintf(stderr, "dbsDatasrcFieldCur Close Error!");
        return -1;
    }

    return iFlag;
}
Esempio n. 2
0
int LoadShmSDI(T_DbsEnv *dbsenv, T_KRShmSDI *ptShmSDI)
{
    int nRet = 0;
    int iResult = 0;
    int iCnt = 0;    
    T_SdiCur stSdiCur = {0};
    T_KRShmSDIDef *ptShmSDIDef = &ptShmSDI->stShmSDIDef[0];
    
    iResult = dbsSdiCur(dbsenv, KR_DBCUROPEN, &stSdiCur);
    if (iResult != KR_DBOK) {
        KR_LOG(KR_LOGERROR, "dbsSdiCur Open Error!");
        return -1;
    }
    
    while(1)
    {
        iResult=dbsSdiCur(dbsenv, KR_DBCURFETCH, &stSdiCur);
        if (iResult != KR_DBNOTFOUND && iResult != KR_DBOK) {
            KR_LOG(KR_LOGERROR, "dbsSdiCur Fetch Error!");
            nRet = -1;
            break;
        } else if (iResult == KR_DBNOTFOUND) {
            KR_LOG(KR_LOGDEBUG, "Load [%d] SDIs Totally!", iCnt);
            break;
        }
        
        if (iCnt >= N_MAX_SDI_NUM) {
            KR_LOG(KR_LOGERROR, "Only [%d] SDIs Allowed!", N_MAX_SDI_NUM);
            nRet = -1;
            break;
        }
        
        memset(ptShmSDIDef, 0x00, sizeof(T_KRShmSDIDef));
        ptShmSDIDef->lSdiId = stSdiCur.lOutSdiId;
        strncpy(ptShmSDIDef->caSdiName, \
                kr_string_rtrim(stSdiCur.caOutSdiName), \
                sizeof(ptShmSDIDef->caSdiName));
        strncpy(ptShmSDIDef->caSdiDesc, \
                kr_string_rtrim(stSdiCur.caOutSdiDesc), \
                sizeof(ptShmSDIDef->caSdiDesc));
        strncpy(ptShmSDIDef->caSdiType, \
                kr_string_rtrim(stSdiCur.caOutSdiType), \
                sizeof(ptShmSDIDef->caSdiType));
        strncpy(ptShmSDIDef->caSdiValueType, \
                kr_string_rtrim(stSdiCur.caOutSdiValueType), \
                sizeof(ptShmSDIDef->caSdiValueType));
        strncpy(ptShmSDIDef->caSdiAggrFunc, \
                kr_string_rtrim(stSdiCur.caOutSdiAggrFunc), \
                sizeof(ptShmSDIDef->caSdiAggrFunc));
        strncpy(ptShmSDIDef->caSdiFreeFunc, \
                kr_string_rtrim(stSdiCur.caOutSdiFreeFunc), \
                sizeof(ptShmSDIDef->caSdiFreeFunc));
        ptShmSDIDef->lStatisticsDatasrc = stSdiCur.lOutStatisticsDatasrc;
        ptShmSDIDef->lStatisticsIndex = stSdiCur.lOutStatisticsIndex;
        ptShmSDIDef->lStatisticsField = stSdiCur.lOutStatisticsField;
        ptShmSDIDef->lStatisticsLocation = stSdiCur.lOutStatisticsLocation;
        strncpy(ptShmSDIDef->caLocationProperty, \
                kr_string_rtrim(stSdiCur.caOutLocationProperty), \
                sizeof(ptShmSDIDef->caLocationProperty));
        strncpy(ptShmSDIDef->caSdiFilterFormat, \
                kr_string_rtrim(stSdiCur.caOutSdiFilterFormat), \
                sizeof(ptShmSDIDef->caSdiFilterFormat));
        strncpy(ptShmSDIDef->caSdiFilterString, \
                kr_string_rtrim(stSdiCur.caOutSdiFilterString), \
                sizeof(ptShmSDIDef->caSdiFilterString));

        ptShmSDI->lSDIDefCnt++;
        ptShmSDIDef++;
        iCnt++;
    }
    ptShmSDI->tLastLoadTime = time(NULL);

    iResult = dbsSdiCur(dbsenv, KR_DBCURCLOSE, &stSdiCur);
    if (iResult != KR_DBOK) {
        KR_LOG(KR_LOGERROR, "dbsSdiCur Close Error!");
        return -1;
    }
    
    return nRet;
}
Esempio n. 3
0
static int kr_traversal_datasrc(char *file_code)
{
    int iResult = 0, iFlag = 0, iCnt = 0;
    T_DatasrcCur stDatasrcCur = {0};

    iResult = dbsDatasrcCur(dbsenv, KR_DBCUROPEN, &stDatasrcCur);
    if (iResult != KR_DBOK) {
        fprintf(stderr, "dbsDatasrcCur Open Error[%d]!", iResult);
        return -1;
    }

    while(1)
    {
        iResult=dbsDatasrcCur(dbsenv, KR_DBCURFETCH, &stDatasrcCur);
        if (iResult != KR_DBNOTFOUND && iResult != KR_DBOK) {
            fprintf(stderr, "dbsDatasrcCur Fetch Error[%d]![%s]:[%s]",
                    iResult, dbsenv->sqlstate, dbsenv->sqlerrmsg);
            iFlag = -1; 
            break;
        } else if (iResult == KR_DBNOTFOUND) {
            fprintf(stdout, "Generated [%d] Tables Totally!\n", iCnt);
            break;
        }
        kr_string_rtrim(stDatasrcCur.caOutDatasrcName);
        kr_string_rtrim(stDatasrcCur.caOutDatasrcDesc);
        kr_string_rtrim(stDatasrcCur.caOutDatasrcFormat);

        /* Judge If datasrc matched */
        if (gstArgs.datasrc_id != 0 && 
            gstArgs.datasrc_id != stDatasrcCur.lOutDatasrcId) {
            continue;
        }

        for (int i=0; i<sizeof(gptIfaceFormat)/sizeof(T_KRIfaceFormat); ++i) {
            T_KRIfaceFormat *iface_format = &gptIfaceFormat[i];
            /* Judge If file code matched */
            if (strcasecmp(file_code, iface_format->file_code) != 0) {
                continue;
            }

            /* Judge If format name matched */
            if (gstArgs.format_name[0] != '\0' &&
                strcasecmp(gstArgs.format_name, iface_format->format_name)) {
                continue;
            }

            /* Traversal Fields */
            iFlag = kr_traversal_fields(&stDatasrcCur, 
                    iface_format->datasrc_field_pre_func,
                    iface_format->datasrc_field_func,
                    iface_format->datasrc_field_post_func);
            if (iFlag != 0) {
                fprintf(stderr, "kr_traversal_fields [%ld] failed!\n", \
                        stDatasrcCur.lOutDatasrcId);
                break;
            }
        }

        iCnt++;
    }

    iResult = dbsDatasrcCur(dbsenv, KR_DBCURCLOSE, &stDatasrcCur);
    if (iResult != KR_DBOK) {
        fprintf(stderr, "dbsDatasrcCur Close Error!");
        return -1;
    }

    return iFlag;
}
Esempio n. 4
0
int LoadShmSet(T_DbsEnv *dbsenv, T_KRShmSet *ptShmSet)
{
    int nRet = 0;
    int iResult = 0;
    int iCnt = 0;    
    T_SetDefCur stSetDefCur = {0};
    T_KRShmSetDef *ptShmSetDef = &ptShmSet->stShmSetDef[0];
    
    iResult = dbsSetDefCur(dbsenv, KR_DBCUROPEN, &stSetDefCur);
    if (iResult != KR_DBOK) {
        KR_LOG(KR_LOGERROR, "dbsSetDefCur Open Error!");
        return -1;
    }
    
    while(1)
    {
        iResult=dbsSetDefCur(dbsenv, KR_DBCURFETCH, &stSetDefCur);
        if (iResult != KR_DBNOTFOUND && iResult != KR_DBOK) {
            KR_LOG(KR_LOGERROR, "dbsSetDefCur Fetch Error!");
            nRet = -1;
            break;
        } else if (iResult == KR_DBNOTFOUND) {
            KR_LOG(KR_LOGDEBUG, "Load [%d] Sets Totally!", iCnt);
            break;
        }
        
        if (iCnt >= N_MAX_SET_NUM) {
            KR_LOG(KR_LOGERROR, "Only [%d] Sets Allowed!", N_MAX_SET_NUM);
            nRet = -1;
            break;
        }
        
        memset(ptShmSetDef, 0x00, sizeof(T_KRShmSetDef));
        ptShmSetDef->lSetId = stSetDefCur.lOutSetId;
        strncpy(ptShmSetDef->caSetName, \
                kr_string_rtrim(stSetDefCur.caOutSetName), \
                sizeof(ptShmSetDef->caSetName));
        strncpy(ptShmSetDef->caSetDesc, \
                kr_string_rtrim(stSetDefCur.caOutSetDesc), \
                sizeof(ptShmSetDef->caSetDesc));
        strncpy(ptShmSetDef->caSetUsage, \
                kr_string_rtrim(stSetDefCur.caOutSetUsage), \
                sizeof(ptShmSetDef->caSetUsage));
        strncpy(ptShmSetDef->caSetType, \
                kr_string_rtrim(stSetDefCur.caOutSetType), \
                sizeof(ptShmSetDef->caSetType));
        strncpy(ptShmSetDef->caElementType, \
                kr_string_rtrim(stSetDefCur.caOutElementType), \
                sizeof(ptShmSetDef->caElementType));
        ptShmSetDef->lElementLength = stSetDefCur.lOutElementLength;

        ptShmSet->lSetDefCnt++;
        ptShmSetDef++;
        iCnt++;
    }
    ptShmSet->tLastLoadTime = time(NULL);

    iResult = dbsSetDefCur(dbsenv, KR_DBCURCLOSE, &stSetDefCur);
    if (iResult != KR_DBOK) {
        KR_LOG(KR_LOGERROR, "dbsSetDefCur Close Error!");
        return -1;
    }
    
    return nRet;
}