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

📄 db.c

📁 extremeDB s sample code,useful for you
💻 C
字号:
/*************************************************************** *                                                             * * Copyright (c) 2001-2006 McObject LLC. All Right Reserved.   * *                                                             * ***************************************************************//*  * This sample shows how to use mco_db_save() and mco_db_load() APIs. These APIs are * used to save and load in-memory database to and from any stream device, such as * a file or socket. * The application presented here was used as actual test to verify the "correctness" * of the save and load operations. The schema file dbtest.mco describes declares classes * with various data types and various layouts. * * The project consists of several C files: * * dbinit.c - functions to initialize the database with the test data. * db.c - main driver. * dbtest.c - generated interface implemetation file * strm.c - FILE stream implemetaion * verify.c - functions that read the database back after it has been loaded with mco_db_load *            and validates the results. */#include "platform.h"#include "load.h"const int MAP_ADDRESS =  0x20000000;static void _SH_(void) {	char text[] = {		"\nThis sample shows how to use mco_db_save() and mco_db_load() APIs.\n"		"These APIs are used to save and load in-memory database to and from\n"		"any stream device, such as a file or a socket.\n"		"The application presented here was used as an actual test to verify the\n"		"\"correctness\" of the save and load operations. It populates a database\n"		"that contains classes with the \"fixed\", and \"dynamaic\" fields, a class\n"		"with blobs, a class with declared with \"autoid\" and \"histoty\", etc.\n"		"The applicataion then saves the database to the file, closes the connection,\n"		"re-opens the database and loads the saved image into the memory. It then\n"		"performs sanity check on the loaded data and prints out the results\n"	};	char text1[] = {		"Copyright (c) 2001-2006 McObject LLC. All Right Reserved.\n\n"	};	printf("%s\neXtremeDB runtime version %d.%d, build %d\n%s\n\nPress Enter to start",		text, MCO_COMP_VER_MAJOR, MCO_COMP_VER_MINOR, MCO_COMP_BUILD_NUM,text1);	getchar();}static void errhandler( int n ) {	printf( "\neXtremeDB runtime fatal error: %d", n );	getchar();	exit( -1 );}mco_runtime_info_t info;int main( void ) {	MCO_RET     rc;	mco_db_h    db = 0;	FILE * f;	void *start_mem;	_SH_();	mco_get_runtime_info( &info);	if (!info.mco_save_load_supported) {		printf("This sample requires SAVE/LOAD runtime support\n");		exit(0);	}	if ( info.mco_shm_supported ) {		start_mem = (char*)MAP_ADDRESS;	}	else {		start_mem = (char*)malloc(DBSIZE);		if (!start_mem) {			printf("Couldn't allocated memory\n");			exit (1);		}	};	mco_error_set_handler( &errhandler );	mco_runtime_start();	/* Create a database - allocate 2M starting from mem. */	rc = mco_db_open( "dbtest", dbtest_get_dictionary(), start_mem, DBSIZE, (uint2) PAGESIZE );	if ( rc ) {		printf( "\nerror creating database" );		if ( !info.mco_shm_supported )			free( start_mem );		exit( 1 );	}	/* connect to the database, obtain a database handle */	mco_db_connect( "dbtest", &db );	printf ("Initializing database...");	rc = init_database(db);	if (rc) {		printf("\tfailed, rc=%d\n\n", rc);                mco_db_disconnect(db);  		goto end;	}	printf ("\tsuccess\n");	printf ("Saving database to %s...",fname);	f = fopen(fname,"wb");	rc = mco_db_save(f, file_writer, db);	if(rc) {		fclose(f);		printf("\tfailed, %d\n", rc);		goto end;	}	printf ("\tsuccess\n\n");	fclose(f);	/* disconnect from the database, db is no longer valid */	mco_db_disconnect( db );	mco_db_close( "dbtest" );	printf ("Loading data from %s...",fname);         f = fopen(fname,"rb");	rc = mco_db_load(f,file_reader,"dbtest", dbtest_get_dictionary(),		start_mem,DBSIZE);	fclose(f);	if(rc) {		printf("\tfailed, rc=%d\n\n", rc);		goto end;	} else		printf("\tsuccess\n");	mco_db_connect("dbtest", &db);	printf ("Verifying data pointers ...");	rc= verify_db(db);	if (rc)		printf("\tfailed\n\n");	else		printf ("\tsuccess\n\n");	printf ("Verifying object counters...\n\n");	printf ("\tWritten\t%d objects to class \"Dynamic\"\n", nd);	printf ("\tWritten\t%d objects to class \"Fixed\"\n", nf);	printf ("\tWritten\t%d objects to class \"Blobs\"\n", nb);	printf ("\tWritten\t%d versions for class \"Blobs\"\n", nh);	printf ("\tWritten\t%d vector elements to class \"Idxs\"\n\n", ni);	printf ("\tRead\t%d objects from class \"Dynamic\"\n", dv);	printf ("\tRead\t%d objects from class \"Fixed\"\n", fv);	printf ("\tRead\t%d objects from class \"Blobs\"\n", bv);	printf ("\tRead\t%d version from class \"Blobs\"\n", bh);	printf ("\tRead\t%d vector elements from class \"Idxs\"\n\n", iv);	mco_db_disconnect( db );end:	mco_db_close( "dbtest" );	mco_runtime_stop();	if ( !info.mco_shm_supported )		free( start_mem );	printf( "Press Enter to finish\n" );	getchar();  PROG_EXIT(0);}

⌨️ 快捷键说明

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