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

📄 embeddedclient.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
字号:
#line 74 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/tools/embeddedclient.mx"#include "embeddedclient.h"#include "Mapi.h"static voidMonet_init(opt *set, int setlen){	char *p;	opt *n = (opt *) GDKmalloc(setlen * sizeof(opt));	int i, j, nlen = 0;	char *dbname = mo_find_option(set, setlen, "gdk_dbname");	char *dbfarm = mo_find_option(set, setlen, "gdk_dbfarm");	char *alloc_map = mo_find_option(set, setlen, "gdk_alloc_map");	if (n == NULL || dbname == NULL || dbfarm == NULL || alloc_map == NULL) {		if (n != NULL)			GDKfree(n);		return;	}	dbfarm = mo_substitute(set, setlen, dbfarm);	/* determine Monet's kernel settings. */	if (!GDKinit(dbname, dbfarm, strcasecmp(alloc_map, "yes") == 0)) {		free(dbfarm);		GDKfree(n);		return;	}	free(dbfarm);	for (i = 0; i < setlen; i++) {		int done = 0;		for (j = 0; j < nlen; j++) {			if (strcmp(n[j].name, set[i].name) == 0) {				if (n[j].kind < set[i].kind)					n[j] = set[i];				done = 1;				break;			}		}		if (!done) {			n[nlen] = set[i];			nlen++;		}	}	for (i = 0; i < nlen; i++) {		char *value;		value = mo_substitute(n, nlen, n[i].value);		GDKsetenv(n[i].name, value);		free(value);	}	GDKfree(n);	if ((p = GDKgetenv("gdk_debug")) != NULL) 		GDKdebug = strtol(p, NULL, 10);	if ((p = GDKgetenv("gdk_mem_bigsize")) != NULL)		GDK_mem_bigsize = strtol(p, NULL, 10);	if ((p = GDKgetenv("gdk_vm_minsize")) != NULL)		GDK_vm_minsize = strtol(p, NULL, 10);	if (GDKgetenv_isyes("gdk_embedded")) {		GDKembedded = 1;	}	if (GDKgetenv_isyes("monet_daemon"))		monet_daemon = 1;	if (GDKgetenv_isyes("monet_embedded")) {		monet_daemon = 1;		GDKembedded = 1;	}}static opt *embedded_set = NULL;static int embedded_len = 0;static void *start_mal_server(void *arg){	static int initialized = 0;	stream *in, *out;	char buf[128];	if (!initialized) {/* 		monet_singlethreaded = 1; */		if (embedded_set == NULL) {			int len = mo_builtin_settings(&embedded_set);			len = mo_add_option(&embedded_set, len, opt_config, "prefix", MONETDBPREFIX);			len = mo_add_option(&embedded_set, len, opt_config, "config", MONETDBCONFIG);			embedded_len = mo_system_config(&embedded_set, len);		}		Monet_init(embedded_set, embedded_len);		/* you don;t need the commandline arguments anymore */		mo_free_options(embedded_set, embedded_len);		if (mal_init())			return 0;		MSinitClientPrg(mal_clients, "user","main");		initialized = 1;	}	in = ((stream **) arg)[0];	out = ((stream **) arg)[1];	free(arg);	snprintf(buf, sizeof(buf), 		"in  := \"" PTRFMT "\":stream;\n"		"out := \"" PTRFMT "\":stream;\n"		"mapi.malclient(in, out);\n", PTRFMTCAST in, PTRFMTCAST out);	callString(mal_clients, buf, 0);	return NULL;}Mapiembedded_mal(opt *set, int len){	Mapi mid;	pthread_t malthread;	stream **server;	if (set) {		embedded_set = set;		embedded_len = len;	}	server = mapi_embedded_init(&mid,"mal");	pthread_create(&malthread, NULL, start_mal_server, (void *) server);	mapi_start_talking(mid);	return mid;}

⌨️ 快捷键说明

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