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

📄 mal_scenario.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
#line 179 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"#include "mal_config.h"#include "mal_scenario.h"#include "mal_linker.h"		/* for getAddress() */#include "mal_client.h"#include "mal_authorize.h"#include "mal_exception.h"struct SCENARIO scenarioRec[MAXSCEN] = {	{"mal", "mal",	 0, 0,			/* hardwired MALinit*/	 0, 0,			/* implicit */	 0, 0,			/* no initClient */	 "MALexitClient", (MALfcn) &MALexitClient,	 "MALreader", (MALfcn) &MALreader, 0,	 "MALparser", (MALfcn) &MALparser, 0,	 "MALoptimizer", 0, 0,				 0, 0, 0,	 "MALengine", (MALfcn) &MALengine, 0, 0},	{0,0,			/* name */	 0, 0,			/* init */	 0, 0,			/* exit */	 0, 0,			/* initClient */	 0, 0,			/* exitClient */	 0, 0, 0,		/* reader */	 0, 0, 0,		/* parser */	 0, 0, 0,		/* optimizer */	 0, 0, 0,		/* scheduler */	 0, 0, 0, 0		/* engine */	 }};#line 214 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"ScenariogetFreeScenario(){	int i;	Scenario scen = NULL;	mal_set_lock(mal_contextLock, "Scenario");	for (i = 0; i < MAXSCEN && scenarioRec[i].name; i++)		;	if (i == MAXSCEN) {		showException(MAL,"freeScenario", "no scenario space left (%d); adjust MAXSCEN and recompile", MAXSCEN);	} else {		scen = scenarioRec + i;	}	mal_unset_lock(mal_contextLock, "Scenario");	return scen;}#line 248 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"strinitScenario(Client c, Scenario s){	str msg = MAL_SUCCEED;	if (s->initSystemCmd)		return(fillScenario(c, s));	/* prepare for conclicts */	mal_set_lock(mal_contextLock, "Scenario");	if (s->initSystem && s->initSystemCmd == 0) {		s->initSystemCmd = (MALfcn) getAddress(s->language, s->language, s->initSystem,1);		if (s->initSystemCmd) {			msg = (*s->initSystemCmd) (c);		} else {			char buf[BUFSIZ];			snprintf(buf,BUFSIZ,"%s.init",s->language);			msg = createException(MAL, buf, "Scenario not initialized"); 		}	}	/* does the return below unset the lock? */	if (msg)		return msg;	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> exitSystem){	if( s-> exitSystemCmd == 0) s-> exitSystemCmd = (MALfcn)getAddress(s->language,s->language,s-> exitSystem,1);}#line 270 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> initClient){	if( s-> initClientCmd == 0) s-> initClientCmd = (MALfcn)getAddress(s->language,s->language,s-> initClient,1);}#line 271 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> exitClient){	if( s-> exitClientCmd == 0) s-> exitClientCmd = (MALfcn)getAddress(s->language,s->language,s-> exitClient,1);}#line 272 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> reader){	if( s-> readerCmd == 0) s-> readerCmd = (MALfcn)getAddress(s->language,s->language,s-> reader,1);}#line 273 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> parser){	if( s-> parserCmd == 0) s-> parserCmd = (MALfcn)getAddress(s->language,s->language,s-> parser,1);}#line 274 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> optimizer){	if( s-> optimizerCmd == 0) s-> optimizerCmd = (MALfcn)getAddress(s->language,s->language,s-> optimizer,1);}#line 275 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> tactics){	if( s-> tacticsCmd == 0) s-> tacticsCmd = (MALfcn)getAddress(s->language,s->language,s-> tactics,1);}#line 276 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 236 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( s-> engine){	if( s-> engineCmd == 0) s-> engineCmd = (MALfcn)getAddress(s->language,s->language,s-> engine,1);}#line 277 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	mal_unset_lock(mal_contextLock, "Scenario");	return(fillScenario(c, s));}strdefaultScenario(Client c){	return initScenario(c, scenarioRec);}#line 296 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"voidshowScenario(stream *f, Scenario scen){	stream_printf(f, "[ \"%s\",", scen->name);	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->initSystem) stream_printf(f," \"%s%s\",",scen->initSystem,        (scen->initSystemCmd?"":"?"));    else stream_printf(f," nil,");#line 300 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->exitSystem) stream_printf(f," \"%s%s\",",scen->exitSystem,        (scen->exitSystemCmd?"":"?"));    else stream_printf(f," nil,");#line 301 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->initClient) stream_printf(f," \"%s%s\",",scen->initClient,        (scen->initClientCmd?"":"?"));    else stream_printf(f," nil,");#line 302 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->exitClient) stream_printf(f," \"%s%s\",",scen->exitClient,        (scen->exitClientCmd?"":"?"));    else stream_printf(f," nil,");#line 303 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->parser) stream_printf(f," \"%s%s\",",scen->parser,        (scen->parserCmd?"":"?"));    else stream_printf(f," nil,");#line 304 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->optimizer) stream_printf(f," \"%s%s\",",scen->optimizer,        (scen->optimizerCmd?"":"?"));    else stream_printf(f," nil,");#line 305 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->tactics) stream_printf(f," \"%s%s\",",scen->tactics,        (scen->tacticsCmd?"":"?"));    else stream_printf(f," nil,");#line 306 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	#line 292 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"    if( scen->engine) stream_printf(f," \"%s%s\",",scen->engine,        (scen->engineCmd?"":"?"));    else stream_printf(f," nil,");#line 307 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	stream_printf(f, "]\n");}ScenariofindScenario(str nme){	int i;	Scenario scen = scenarioRec;	for (i = 0; i < MAXSCEN && scen->name; i++, scen++)		if (strcmp(scen->name, nme) == 0)			return scen;	return NULL;}#line 341 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"voidupdateScenario(str nme, MALfcn fcn){	int i;	Scenario scen = scenarioRec;	for (i = 0; i < MAXSCEN && scen->name; i++, scen++) {		#line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->initSystem && strcmp(scen->initSystem,nme) == 0){	Client c1;	scen->initSystemCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( 0 && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ 0]= fcn;	else    if( 0 && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ 0]= fcn;}#line 348 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->exitSystem && strcmp(scen->exitSystem,nme) == 0){	Client c1;	scen->exitSystemCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( 0 && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ 0]= fcn;	else    if( 0 && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ 0]= fcn;}#line 349 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->initClient && strcmp(scen->initClient,nme) == 0){	Client c1;	scen->initClientCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( INITCLIENT && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ INITCLIENT]= fcn;	else    if( INITCLIENT && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ INITCLIENT]= fcn;}#line 350 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->exitClient && strcmp(scen->exitClient,nme) == 0){	Client c1;	scen->exitClientCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( EXITCLIENT && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ EXITCLIENT]= fcn;	else    if( EXITCLIENT && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ EXITCLIENT]= fcn;}#line 351 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->reader && strcmp(scen->reader,nme) == 0){	Client c1;	scen->readerCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( READER && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ READER]= fcn;	else    if( READER && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ READER]= fcn;}#line 352 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 330 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"if( scen->parser && strcmp(scen->parser,nme) == 0){	Client c1;	scen->parserCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( PARSER && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ PARSER]= fcn;	else    if( PARSER && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ PARSER]= fcn;}

⌨️ 快捷键说明

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