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

📄 mal_scenario.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
#line 353 "/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->optimizer && strcmp(scen->optimizer,nme) == 0){	Client c1;	scen->optimizerCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( OPTIMIZE && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ OPTIMIZE]= fcn;	else    if( OPTIMIZE && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ OPTIMIZE]= fcn;}#line 354 "/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->tactics && strcmp(scen->tactics,nme) == 0){	Client c1;	scen->tacticsCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( SCHEDULER && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ SCHEDULER]= fcn;	else    if( SCHEDULER && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ SCHEDULER]= fcn;}#line 355 "/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->engine && strcmp(scen->engine,nme) == 0){	Client c1;	scen->engineCmd = fcn;    for(c1 = mal_clients; c1 < mal_clients+MAL_MAXCLIENTS; c1++)     if( ENGINE && c1->scenario && strcmp(c1->scenario,scen->name)==0) 		c1->phase[ ENGINE]= fcn;	else    if( ENGINE && c1->oldscenario && strcmp(c1->oldscenario,scen->name)==0) 		c1->oldphase[ ENGINE]= fcn;}#line 356 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	}}voidshowScenarioByName(stream *f, str nme){	Scenario scen = findScenario(nme);	if (scen)		showScenario(f, scen);}voidshowAllScenarios(stream *f){	int i;	Scenario scen = scenarioRec;	for (i = 0; i < MAXSCEN && scen->name; i++, scen++)		showScenario(f, scen);}str getScenarioLanguage(Client c){	Scenario scen= findScenario(c->scenario);	if( scen) return scen->language;	return "mal";}#line 399 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"strfillScenario(Client c, Scenario scen){	c->scenario = scen->name;	c->phase[READER] = scen->readerCmd;	c->phase[PARSER] = scen->parserCmd;	c->phase[OPTIMIZE] = scen->optimizerCmd;	c->phase[SCHEDULER] = scen->tacticsCmd;	c->phase[ENGINE] = scen->engineCmd;	c->phase[INITCLIENT] = scen->initClientCmd;	c->phase[EXITCLIENT] = scen->exitClientCmd;	c->state[READER] = 0;	c->state[PARSER] = 0;	c->state[OPTIMIZE] = 0;	c->state[SCHEDULER] = 0;	c->state[ENGINE] = 0;	c->state[INITCLIENT] = 0;	c->state[EXITCLIENT] = 0;	if (scen->initClientCmd)		return((*scen->initClientCmd) (c));	return(MAL_SUCCEED);}voidclrScenario(Client c){	if (c->scenario == 0)		return;	c->scenario = 0;	c->phase[READER] = 0;	c->phase[PARSER] = 0;	c->phase[OPTIMIZE] = 0;	c->phase[SCHEDULER] = 0;	c->phase[ENGINE] = 0;	c->phase[INITCLIENT] = 0;	c->phase[EXITCLIENT] = 0;	c->state[READER] = 0;	c->state[PARSER] = 0;	c->state[OPTIMIZE] = 0;	c->state[SCHEDULER] = 0;	c->state[ENGINE] = 0;	c->state[INITCLIENT] = 0;	c->state[EXITCLIENT] = 0;}#line 450 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"strsetScenario(Client c, str nme){	int i;	str msg;	Scenario scen = scenarioRec;	scen = findScenario(nme);	if (scen == NULL)		throw(MAL, "setScenario", "Scenario '%s' not initialized", nme);	if (c->scenario) {		c->oldscenario = c->scenario;		for (i = 0; i < 7; i++) {			c->oldstate[i] = c->state[i];			c->oldphase[i] = c->phase[i];		}	}	for (i = 0; i < 7; i++)		c->state[i] = 0;	msg = initScenario(c, scen);	if (msg)		return msg;	return MAL_SUCCEED;}#line 482 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"strgetCurrentScenario(Client c){	return c->scenario;}voidresetScenario(Client c){	int i;	Scenario scen = scenarioRec;	if (c->scenario == 0)		return;	scen = findScenario(c->scenario);	if (scen != NULL && scen->exitClientCmd)		(*scen->exitClientCmd) (c);	c->scenario = c->oldscenario;	for (i = 0; i < 7; i++) {		c->state[i] = c->oldstate[i];		c->phase[i] = c->oldphase[i];	}	c->oldscenario = 0;}voidexitScenario(Client c){	Scenario scen = scenarioRec;	if (c->scenario == 0)		return;	scen = findScenario(c->scenario);	if (scen->exitSystemCmd)		(*scen->exitSystemCmd) (c);}#line 522 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"#line 570 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"strrunScenarioBody(Client c){	str msg= MAL_SUCCEED;/* postponed	if( !isServerOwner(c) ){		c->mode = FINISHING;	}*/	while (c->mode > FINISHING) {		msg = MAL_SUCCEED;		#line 552 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	if(msg== MAL_SUCCEED && c->phase[READER] && ((msg= (str) (*c->phase[READER])(c)) ||  c->mode <= FINISHING)){		/* error occurred */#ifdef MAL_SCENARIO_DEBUG		stream_printf(GDKstdout,"Error in READER phase\n");		if( /*c->mode > FINISHING &&*/ msg )			stream_printf(GDKstdout,"%s",msg);#endif		if (msg) {			/* FIXME: why is the error not handed back to the user here? */			GDKfree(msg); 			msg=0;		}		continue;	}#line 582 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 552 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	if(msg== MAL_SUCCEED && c->phase[PARSER] && ((msg= (str) (*c->phase[PARSER])(c)) ||  c->mode <= FINISHING)){		/* error occurred */#ifdef MAL_SCENARIO_DEBUG		stream_printf(GDKstdout,"Error in PARSER phase\n");		if( /*c->mode > FINISHING &&*/ msg )			stream_printf(GDKstdout,"%s",msg);#endif		if (msg) {			/* FIXME: why is the error not handed back to the user here? */			GDKfree(msg); 			msg=0;		}		continue;	}#line 583 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 552 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	if(msg== MAL_SUCCEED && c->phase[OPTIMIZE] && ((msg= (str) (*c->phase[OPTIMIZE])(c)) ||  c->mode <= FINISHING)){		/* error occurred */#ifdef MAL_SCENARIO_DEBUG		stream_printf(GDKstdout,"Error in OPTIMIZE phase\n");		if( /*c->mode > FINISHING &&*/ msg )			stream_printf(GDKstdout,"%s",msg);#endif		if (msg) {			/* FIXME: why is the error not handed back to the user here? */			GDKfree(msg); 			msg=0;		}		continue;	}#line 584 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 552 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	if(msg== MAL_SUCCEED && c->phase[SCHEDULER] && ((msg= (str) (*c->phase[SCHEDULER])(c)) ||  c->mode <= FINISHING)){		/* error occurred */#ifdef MAL_SCENARIO_DEBUG		stream_printf(GDKstdout,"Error in SCHEDULER phase\n");		if( /*c->mode > FINISHING &&*/ msg )			stream_printf(GDKstdout,"%s",msg);#endif		if (msg) {			/* FIXME: why is the error not handed back to the user here? */			GDKfree(msg); 			msg=0;		}		continue;	}#line 585 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"		#line 552 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	if(msg== MAL_SUCCEED && c->phase[ENGINE] && ((msg= (str) (*c->phase[ENGINE])(c)) ||  c->mode <= FINISHING)){		/* error occurred */#ifdef MAL_SCENARIO_DEBUG		stream_printf(GDKstdout,"Error in ENGINE phase\n");		if( /*c->mode > FINISHING &&*/ msg )			stream_printf(GDKstdout,"%s",msg);#endif		if (msg) {			/* FIXME: why is the error not handed back to the user here? */			GDKfree(msg); 			msg=0;		}		continue;	}#line 586 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	}	return msg;}strrunScenario(Client c){	int cnt = 0;	str msg = MAL_SUCCEED;	Client c1;	if( c== 0 || c->phase[READER] == 0) return msg;	msg= runScenarioBody(c);	if( msg != MAL_SUCCEED)		stream_printf(c->fdout,"!%s\n",msg);#ifdef MAL_SCENARIO_DEBUG	printf("About to terminate scenario %s\n", c->scenario);#endif#line 609 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/mal/mal_scenario.mx"	if( c->scenario)		for (c1 = mal_clients; c1 < mal_clients + MAL_MAXCLIENTS; c1++)			if (c1->scenario && strcmp(c->scenario, c1->scenario) == 0)				cnt++;	if (c->phase[EXITCLIENT]) {#ifdef MAL_SCENARIO_DEBUG		printf("Calling client exit function \n");#endif		(*c->phase[EXITCLIENT]) (c);	}#ifdef MAL_SCENARIO_DEBUG		printf("scenario client cnt %d\n",cnt);#endif	if (cnt == 1) {		exitScenario(c);	}	return msg;}

⌨️ 快捷键说明

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