コード例 #1
0
const ConfigurationChoice *
SimulationConfiguration::Implementation::getStateManagerPeriodChoice() const {
	const ConfigurationChoice *retval = 0;
	if (getStateManagerScope() != 0) {
		retval = getStateManagerScope()->findChoice(getPeriodName());
	}
	return retval;
}
コード例 #2
0
ファイル: commands.c プロジェクト: damolp/mysql-governor
void account_restrict(Account * ac, stats_limit_cfg * limit) {
	char buffer[_DBGOVERNOR_BUFFER_2048];
	int i;
	User_stats *us;
	//Command cmd;
    struct governor_config data_cfg;
    
    get_config_data( &data_cfg );
    if( data_cfg.is_gpl ) return;
    if( data_cfg.all_lve || !data_cfg.use_lve ) return; //lve use=all or off
    
	for (i = 0; i < ac->users->len; i++) {
		us = g_ptr_array_index (ac->users, i);
		Command *cmd = g_malloc(sizeof(Command));
		if (cmd) {
			if (command_list) {
				strlcpy(cmd->username, us->id, USERNAMEMAXLEN);
				cmd->command = FREEZE;
				pthread_mutex_lock(&mtx_commands);
				command_list = g_list_append(command_list, cmd);
				pthread_mutex_unlock(&mtx_commands);
				if( data_cfg.logqueries_use == 2 ) log_user_queries( cmd->username, data_cfg.log_mode );
			}
		}
	}
	if (data_cfg.exec_script) {
		pid_t trigger_pid;
		/*Готовим список передаваемых скрипту параметров */
		char period_name[_DBGOVERNOR_BUFFER_128];
		char varName[_DBGOVERNOR_BUFFER_128];
		char varValue[_DBGOVERNOR_BUFFER_128];
		char limValue[_DBGOVERNOR_BUFFER_128];
		char penValue[_DBGOVERNOR_BUFFER_128];
		char loadAvg[GETSYSINFO_MAXFILECONTENT];
		char vmStat[GETSYSINFO_MAXFILECONTENT];
		char dump[_DBGOVERNOR_BUFFER_8192];
		getPeriodName(period_name, ac);
		getParamName(varName, ac);
		snprintf(varValue, _DBGOVERNOR_BUFFER_128, "%ld", getRestrictValue(ac));
		snprintf(limValue, _DBGOVERNOR_BUFFER_128, "%ld", getLimitValue(ac,
				limit));
		snprintf(penValue, _DBGOVERNOR_BUFFER_128, "%ld", ac->restricted + 1);
		getloadavggov(loadAvg);
		getvmstat(vmStat);
		print_stats_to_buffer(dump, getRestrictDump(ac),
				_DBGOVERNOR_BUFFER_8192);
		trigger_pid = fork();
		if (trigger_pid < 0) {
			WRITE_LOG(NULL, 0, buffer, _DBGOVERNOR_BUFFER_2048, "(%d)Fork error (trigger). Path %s",
					data_cfg.log_mode, errno, data_cfg.exec_script);
		} else {
			if (!trigger_pid) {
				execl(data_cfg.exec_script, data_cfg.exec_script,
						ac->id, period_name, varName, varValue, limValue,
						penValue, loadAvg, vmStat, dump, NULL);
				WRITE_LOG(NULL, 0, buffer, _DBGOVERNOR_BUFFER_2048, "(%d)Exec error (trigger). Path %s",
						data_cfg.log_mode, errno, data_cfg.exec_script);
				exit(0);
			}
		}
	}
}