sample_load_database
此函数通过创建内存设备、分配动态内存以及根据指定参数设置数据库参数来完成创建内存中或持久化数据库的工作。
如果 stream_handle
和 input_stream_reader
参数非零,则调用 mco_db_load()
函数加载先前保存的数据库映像。否则,调用 mco_db_open_dev()
函数使用初始化的 sample_memory_t
结构打开数据库。
通常,此函数是由示例应用程序间接调用的,这些应用程序会调用 sample_open_database()
函数。
MCO_RET sample_load_database(
/*IN*/ void* stream_handle,
/*IN*/ mco_stream_read input_stream_reader,
/*IN*/ const char * db_name,
/*IN*/ mco_dictionary_h dict,
/*IN*/ mco_size_t db_sz,
/*IN*/ mco_size_t cache_sz,
/*IN*/ uint2 mem_pg_sz,
/*IN*/ uint2 pstorage_pg_sz,
/*IN*/ uint2 max_conn_no,
/*IN*/ sample_memory_t * pdev
)
参数
stream_handle
void*
一个可选的数据库输入流句柄。
input_stream_reader
mco_stream_read
一个可选的数据库输入流读取器。
db_name
const char *
数据库名称。
dict
mco_dictionary_h
指向编译后的数据库字典的指针(通常是生成的函数 database_name_get_dictionary()
)。
db_sz
mco_size_t
数据库内存部分的内存段大小。
cache_sz
mco_size_t
用于持久存储的缓存段的大小。
mem_pg_sz
uint2
内存页的大小。
pstorage_pg_sz
uint2
持久存储页面的大小。
max_conn_no
uint2
最大连接数。
pdev
sample_memory_t
要初始化的指向 sample_memory_t
结构体的指针:
typedef struct tag_sample_memory {
unsigned int n_dev;
mco_device_t dev[4];
} sample_memory_t;
返回
MCO_S_OK
已成功创建数据库。
MCO_E_ILLEGAL_PARAM
指定的参数不一致或无效。
示例
#include <common.h>
#include <simpledb.h>
const char * db_name = "simpledb";
...
int main(int argc, char* argv[])
{
MCO_RET rc;
sample_memory_t dbmem;
mco_runtime_start();
rc = sample_load_database( 0, 0, db_name, simpledb_get_dictionary(), DATABASE_SIZE, CACHE_SIZE,
MEMORY_PAGE_SIZE, PSTORAGE_PAGE_SIZE, 1, &dbmem );
...
}