⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hvdemo.c

📁 PB 熟悉的哥们希望大家可以互相学习一下
💻 C
字号:
/****************************************************************
 *                                                              *
 * Copyright (c) 2001-2007 McObject LLC. All Right Reserved.    *
 *                                                              *
 ****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <platform.h>

#include "hvddb.h"

#include <mcohv.h>

#include <mco.h>


#define DB_MEMORY_SIZE  4 * 1024 * 1024
#ifndef MCO_PLATFORM_X64
    #define PAGESIZE        96
#else 
    #define PAGESIZE        192
#endif 

const int MAP_ADDRESS = 0x20000000;
mco_db_h db;

static void errhandler(int n)
{
    printf("\neXtremeDB fatal error: %d", n);
    getchar();
    exit( - 1);
}

int LoadData(mco_db_h db);

int mcohv_int_fill_trans_obj(uint2 class_no, char* ckey, mco_trans_h t, MCO_Hf* ph);


int main(void)
{

    char* start_mem = 0;
    mco_runtime_info_t info;
    char* dbName = "hvddb";
    mcohv_p hv = 0;

    mco_get_runtime_info(&info);
    if (info.mco_shm_supported)
    {
        start_mem = (char*)MAP_ADDRESS;
    }
    else
    {
        start_mem = (char*)malloc(DB_MEMORY_SIZE);
        if (!start_mem)
        {
            printf("Couldn't allocated memory\n");
            exit(1);
        }
    };

    /* set fatal error handler */
    mco_error_set_handler(&errhandler);

    /* start db engine */
    if (mco_runtime_start() != MCO_S_OK)
    {
        printf("\nUnable to start database engine\n");
        if (!info.mco_shm_supported)
        {
            free(start_mem);
        }
        exit( - 1);
    };

    /* initialize MCOHV */
    mcohv_initialize();

    /* create and connect the database */
    mco_db_open(dbName, hvddb_get_dictionary(), start_mem, DB_MEMORY_SIZE, (uint2)PAGESIZE);
    mco_db_connect(dbName, &db);

    /* load data to the database */
    LoadData(db);

    /* start the HTTP server */
    printf("mcohv_start(...)==%d\n", mcohv_start(&hv, db, 0, 0));

    /* simulate the progrm's event- or data-loop */
    printf("Hit ENTER to continue...");
    fflush(stdout);
    {
        char buf[100];
        while (!fgets(buf, sizeof(buf), stdin))
        {
            Sleep(100);
        }
    };

    /* stop the server */
    printf("mcohv_stop(...)==");
    fflush(stdout);
    printf("%d\n", mcohv_stop(hv));

    /* disconnect from the database, db is no longer valid */
    if (mco_db_disconnect(db) != MCO_S_OK)
    {
        printf("mco_db_disconnect(...) failed\n");
    };

    /* destroys the memory manager */
    if (mco_db_close(dbName) != MCO_S_OK)
    {
        printf("mco_db_close(...) failed\n");
    };

    /* free the memory */
    if (!info.mco_shm_supported)
    {
        free(start_mem);
    }

    /* final cleanup */
    printf("mcohv_shutdown(...)==");
    fflush(stdout);
    printf("%d\n", mcohv_shutdown());

    /* shutdown database engine */
    mco_runtime_stop();

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -