亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? PB 熟悉的哥們希望大家可以互相學習一下
?? C
?? 第 1 頁 / 共 2 頁
字號:

    rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t);
    if (MCO_S_OK != rc)
    {
        printf("\nError starting trn\n");
        return rc;
    }

    rc = Rec_new(t, &rec);
    if (rc)
    {
        goto Err;
    }

    rc = Rec_key_put(&rec, key);
    if (rc)
    {
        goto Err;
    }

    vl = rand2(1, MAX_VECT_LEN);
    if ((rc = Rec_valuev_alloc(&rec, vl)))
    {
        goto Err;
    }

    for (i = 0; i < vl; i++)
    {

        if ((rc = Rec_valuev_put(&rec, i, &sv)))
        {
            goto Err;
        }
        if ((rc = Svalue_tm_put(&sv, i + idx)))
        {
            goto Err;
        }
        if ((rc = Svalue_u4_put(&sv, i + idx)))
        {
            goto Err;
        }
        str = get_random_string();
        len = (uint2)strlen(str);
        rc = Svalue_bytes_put(&sv, str, len);
    }

    sprintf(buf, "str %d", key);
    buflen = (uint2)strlen(buf);
    Rec_str_put(&rec, buf, buflen);

    //  recsum = record_checksum(key, buf, buflen);
    recsum = record_checksum_byhandle(&rec);

    chk->checksum_before_commit = chk->checksum_after_commit ^ recsum;

    rc = mco_trans_commit(t);
    if (rc == MCO_S_OK)
    {
        chk->checksum_after_commit = chk->checksum_before_commit;
    }
    if (rc)
    {
        i++;
    }
    idx += 0x123456;
    return rc;
    Err: mco_trans_rollback(t);
    idx += 0x123456;
    return rc;
}


static MCO_RET deleteTrn(mco_db_h db)
{
    MCO_RET rc;
    mco_trans_h t;
    Rec rec;
    CheckSums* chk = (CheckSums*)CHECKSUM_ADDR;
    int recsum;
    mco_cursor_t csr;

    // Delete first record

    rc = mco_trans_start(db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t);
    if (MCO_S_OK != rc)
    {
        printf("\nError starting trn\n");
        return rc;
    }

    Rec_tkey_index_cursor(t, &csr);
    rc = mco_cursor_first(t, &csr);
    if (rc != MCO_S_OK)
    {
        // no records
        goto Err;
    }
    rc = Rec_from_cursor(t, &csr, &rec);
    if (rc)
    {
        goto Err;
    }

    recsum = record_checksum_byhandle(&rec);

    rc = Rec_delete(&rec);
    if (rc)
    {
        goto Err;
    }
    chk->checksum_before_commit = chk->checksum_after_commit ^ recsum;
    rc = mco_trans_commit(t);
    if (rc == MCO_S_OK)
    {
        chk->checksum_after_commit = chk->checksum_before_commit;
    }
    return rc;

    Err: mco_trans_rollback(t);
    return rc;
}

/****************************************************
 *          "Check Resources" thread 
 ****************************************************/

THREAD_PROC_DEFINE(CheckResources, arg)
{
    mco_db_h db = 0;
    unsigned wdt_state = 0;

    THREAD_PROC_MODE();

    printf("check time %ld\n", CheckTime);
    Sleep(CheckTime);

    for (;;)
    {

        if (stopflag)
        {
            l10: stopflag--;
            printf("CheckResources thread complete\n");
            if (db != 0)
            {
                mco_db_disconnect(db);
            }
            return ;
        }

        Sleep(CheckTime);
        if (stopflag)
        {
            goto l10;
        }

        if (!startflag)
        {
            continue;
        }

        if (!mco_db_check_resources(dbName, &db, 40000, &wdt_state))
        {
            printf("\n*** recovery was done ***\n");
        }
    }

}


/****************************************************
 *          "Working" thread 
 ****************************************************/

THREAD_PROC_DEFINE(Working, par)
{
    int creating_db = 0; //1;
    MCO_RET rc;
    int cnt = 0;

    int ndeletes = 0, nfailed_deletes = 0, ninserts = 0, nfailedinserts = 0;

    THREAD_PROC_MODE();

    startflag = 0;
    Sleep(100);

    printf("\n****** Thread started ******\n");

    startflag++;

    creating_db = starting_create_new_db(&db);

    if (creating_db)
    {
        printf("\nCreating DB for the first time\n");
    }
    else
    {
        printf("\nRecovering DB after power off\n");
    }

    Sleep(500);

    rc = connect_to_db(&db, creating_db);

    if (rc)
    {
        printf("\nDb connecting error\n");
        for (;;)
            ;
    }

    printf("\nStarting cycle of inserts and deletes\n");

    for (cnt = 0; !stopflag; cnt++)
    // just creating & deleting records, updating checksum, until interrupted
    {
        int n;

        n = nRecords(db);

        count++;

        if (n > (20+cnt % 10))
        {
            ndeletes++;
            rc = deleteTrn(db);
            if (rc)
            {
                nfailed_deletes++;
            }
        }
        else
        {
            ninserts++;
            rc = insertTrn(db);

            if (rc)
            {
                nfailedinserts++;
            }
        }

        if (cnt % LOG_PERIOD == 0)
        {
            CheckSums* chk = (CheckSums*)CHECKSUM_ADDR;
            classStat(db);
            printf("\nCurrent Checksum = %d (%d)\n", chk->checksum_after_commit, chk->checksum_before_commit);

            printf("\n ndeletes=%d, nfailed_deletes=%d, ninserts=%d, nfailedinserts=%d\n", ndeletes, nfailed_deletes,
                   ninserts, nfailedinserts);
            Sleep(100);
        }

    }
    printf("\nWorking thread complete\n");
    if (db != 0)
    {
        mco_db_disconnect(db);
    }

    stopflag--;
}


void PowerOff()
{
    int i, j;

    startflag = 0;

    THREAD_CANCEL(thWorkThread);

    Sleep(100);

    printf("\n**************** RESTART *******************\n");
    printf("\n**************** RESTART *******************\n");
    printf("\n**************** RESTART *******************\n");

    for (i = 0; i < 100; i++)
    {
        if (stopflag)
        {
            goto l10;
        }
        j = count;
        Sleep(100);
        printf("\n*** Wait stopping working thread ***\n");
        if (count == j)
        {
            break;
        }
        count = 0;
    }
    printf("\n*** Restart working thread ***\n");

    THREAD_PROC_START(Working, 0, &thWorkThread);

    l10: ;
}

/* parsing command line */

int parse_cmd(int argc, char** argv)
{
    int i;
    char* p;
    int flag = 1;

    if (argc < 2)
    {
        return 1;
    }

    for (i = 1; i < argc; i++)
    {

        p = argv[i];

        if (strstr(p, "--test"))
        {
            test_Mode = 1;
            continue;
        }
        if ((p[0] == '/') || (p[0] == '-'))
        {
            if (p[1] == 'h')
            {
                help();
                return 0;
            }
            if (p[1] == 't')
            {
                flag++;
                if ((CheckTime = atoi((const char*) &p[2])) == 0)
                {
                    CheckTime = 1000;
                }
            }
        }
    }
    return flag;
}

#ifndef WIN32_WCE
    int main(int argc, char** argv)
#else 
    int __cdecl main(int argc, char** argv)
#endif 
{
    int i;
    FILE* f = stdin;
    char s[256];

    pdb = &db;

    PROCESS_MASKS(); // for LINUX, QNX, SOLARIS

    #if defined(_LINUX) || defined(_QNX) || defined(_SOLARIS) 
        sigdelset(&set, SIGALRM);
        sigprocmask(SIG_SETMASK, &set, 0);
    #endif 

    s[0] = 0;

    {
        mco_runtime_info_t info;

        mco_get_runtime_info(&info);

        if (!info.mco_recovery_supported)
        {
            printf("\n\n Recovery support is not configured! \n");
            PROG_EXIT(0);
        }
    }

    if (parse_cmd(argc, argv) == 0)
    {
        #ifdef _WIN32_WCE
            char str[128];
            printf("\npress ENTER to exit\n");
            gets(str);
        #endif 
        PROG_EXIT(0);
    }

    _SH_();

    mco_runtime_start();

    mco_error_set_handler(&errhandler);

    mco_runtime_setoption(MCO_RT_OPTION_ZMUTEX_NR1,  // loop  waiting the resource
    long_loop  // the loop value
    );

    make_strings();

    if (CheckTime)
    {
        THREAD_PROC_START(CheckResources, 0, &thCheckRes); /* run "Check Resources" thread */
    }

    THREAD_PROC_START(Working, 0, &thWorkThread);

    Sleep(1000);

    for (;;)
    {
        #ifdef _VXWORKS
            i = 0;
            while (i == 0)
            {
                ioctl(f->_file, FIONREAD, (int) &i);
                Sleep(100);
            }
        #endif 
        if (test_Mode == 1)
        {
            Sleep(5000);
        }

        if ((fgets(s, 256, stdin)) == 0)
        {
            continue;
        }
        if (s[0] == 0)
        {
            continue;
        }
        i = atoi(s);
        if (i == 343)
        {
            EXIT(1);
        }
        if (s[0] == 'e')
        {
            stopflag = 2;
            break;
        }

        PowerOff();
    }

    Printf("\n\nApplication interrupted by keystroke\n");
    Printf("Wait for the completion of working threads\n");

    for (i = 0; i < 30; i++)
    {

        if (!stopflag)
        {
            break;
        }

        //      Printf("%d running threads lost\n", stopflag);
        Sleep(100); /* wait for terminating of working threads */
    }


    //    mco_db_disconnect(db);
    mco_db_close(dbName);

    mco_runtime_stop();

    printf("program termination\n");

    PROG_EXIT(0);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久网站| 久久精品国产77777蜜臀| 天天av天天翘天天综合网| 久久精品国产99| 欧亚一区二区三区| 中文一区一区三区高中清不卡| 亚欧色一区w666天堂| 成人精品一区二区三区四区 | 成人黄色片在线观看| 欧美精品乱码久久久久久按摩| 久久久久九九视频| 日本欧美一区二区| 欧美性淫爽ww久久久久无| 国产欧美一区二区精品性色超碰| 五月天激情综合| 色女孩综合影院| 久久精品欧美一区二区三区麻豆| 爽好多水快深点欧美视频| 91麻豆蜜桃一区二区三区| 国产欧美一区二区在线| 精品亚洲成av人在线观看| 欧美精品在线观看播放| 亚洲韩国一区二区三区| 色老综合老女人久久久| 欧美精彩视频一区二区三区| 精品无人码麻豆乱码1区2区 | 精品国产欧美一区二区| 日本不卡中文字幕| 制服丝袜av成人在线看| 亚洲午夜一二三区视频| 色先锋aa成人| 亚洲美女在线一区| 成人黄色一级视频| 国产精品视频一二三区| 国产成人丝袜美腿| 国产亚洲福利社区一区| 国产福利电影一区二区三区| 久久久国产一区二区三区四区小说 | 国产欧美日韩在线| 成人国产视频在线观看| 中文无字幕一区二区三区| 成人午夜激情影院| 中文字幕亚洲一区二区av在线| 成人免费高清在线观看| 亚洲欧美色图小说| 欧美亚洲免费在线一区| 日韩精品亚洲专区| 欧美精品一区二区三区很污很色的 | 欧美亚州韩日在线看免费版国语版| 一区2区3区在线看| 欧美亚洲国产bt| 奇米777欧美一区二区| 欧美va亚洲va| www.欧美色图| 日韩中文字幕1| 久久综合网色—综合色88| 国产成人免费网站| 亚洲男人天堂av网| 日韩一级片网址| 国产一区二区三区观看| 国产精品第13页| 欧美剧情电影在线观看完整版免费励志电影 | jizzjizzjizz欧美| 亚洲一级在线观看| 日韩欧美一级二级三级久久久| 国产一区二区久久| 一区二区三区在线观看网站| 91精品国产综合久久久久久漫画 | 欧美日本在线播放| 精品中文字幕一区二区| 欧美激情一区三区| 欧美高清www午色夜在线视频| 久久99精品久久久久| 亚洲综合在线五月| 久久影院午夜论| 色老头久久综合| 国模套图日韩精品一区二区| 亚洲精品国久久99热| 欧美成人一区二区三区| 日本道精品一区二区三区| 精品综合免费视频观看| 亚洲午夜久久久| 欧美国产亚洲另类动漫| 欧美狂野另类xxxxoooo| 色偷偷88欧美精品久久久| 美女www一区二区| 亚洲国产另类精品专区| 国产精品色哟哟| 精品国产成人在线影院| 欧美乱妇15p| 91成人看片片| 99久久精品免费| 国产麻豆成人精品| 麻豆91免费看| 午夜欧美大尺度福利影院在线看| 中文字幕一区二区三区不卡在线| 日韩午夜电影在线观看| 欧美四级电影在线观看| www.66久久| 成人的网站免费观看| 国产精品正在播放| 久久草av在线| 麻豆中文一区二区| 日韩中文字幕91| 午夜精品视频一区| 夜夜夜精品看看| 日韩久久一区二区| 一区二区中文视频| 国产精品婷婷午夜在线观看| 久久伊99综合婷婷久久伊| 日韩三级免费观看| 日韩欧美一级精品久久| 欧美一级片免费看| 欧美精品一卡两卡| 欧美一区二区在线视频| 欧美酷刑日本凌虐凌虐| 在线不卡免费av| 91精品国产丝袜白色高跟鞋| 欧美另类高清zo欧美| 日韩一区二区在线看| 欧美肥妇毛茸茸| 欧美一区二区在线看| 欧美一激情一区二区三区| 欧美一区二区三区四区视频| 欧美一区二区三区在线电影| 欧美成人福利视频| 久久综合色天天久久综合图片| 久久在线免费观看| 国产精品九色蝌蚪自拍| 亚洲精品中文在线观看| 亚洲大型综合色站| 精品一区二区三区久久| 成人免费高清在线观看| 91国偷自产一区二区三区观看 | 色婷婷综合激情| 在线成人午夜影院| 欧美tickling挠脚心丨vk| 久久精品男人的天堂| 中文字幕在线观看不卡视频| 亚洲猫色日本管| 亚洲国产美女搞黄色| 夜夜揉揉日日人人青青一国产精品| 日韩精品成人一区二区三区| 日韩av二区在线播放| 麻豆成人免费电影| 成人av电影在线| 欧美天堂亚洲电影院在线播放| 欧美乱妇20p| 亚洲精品一区二区三区影院| 亚洲欧美综合在线精品| 亚洲人成人一区二区在线观看| 亚洲乱码精品一二三四区日韩在线| 亚洲免费av高清| 一区二区三区四区蜜桃| 亚洲精品乱码久久久久久| 亚洲mv在线观看| 另类中文字幕网| 免费成人小视频| 色嗨嗨av一区二区三区| 欧美精品免费视频| 久久伊99综合婷婷久久伊| 国产精品欧美一级免费| 亚洲一级二级三级| 国产在线精品一区二区夜色 | 中文字幕一区视频| 看片的网站亚洲| 丁香婷婷深情五月亚洲| 欧美亚洲丝袜传媒另类| 精品成a人在线观看| 亚洲高清视频中文字幕| 久久99热狠狠色一区二区| fc2成人免费人成在线观看播放| 欧美性大战久久久久久久蜜臀| 日韩欧美一二区| 综合av第一页| 久久66热偷产精品| 7799精品视频| 最近日韩中文字幕| 国产最新精品精品你懂的| 色婷婷久久综合| 国产精品福利av| 久久精品国产精品亚洲红杏| 色婷婷精品大视频在线蜜桃视频| 在线成人av影院| 亚洲国产色一区| 成人激情免费视频| 日韩欧美亚洲国产精品字幕久久久| 久久蜜桃香蕉精品一区二区三区| 怡红院av一区二区三区| 国产精品一区二区三区乱码 | 国产福利一区在线| 久久综合久久99| 日韩专区在线视频| 色婷婷综合久色| 精品国产乱码久久久久久蜜臀| 亚洲国产精品一区二区久久| jlzzjlzz亚洲女人18| 久久精品视频免费观看| 国产成人精品aa毛片| 日韩精品一区二区三区老鸭窝|