Exemplo n.º 1
0
        /// <summary>
        /// データ変換処理の定義通り、データソースを変換する
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="dttSource"></param>
        /// <param name="isExpectData"></param>
        private void ChangeDataByCheckPattern(string tableName, DataTable dttSource, bool isExpectData)
        {
            string srcTableName = tableName.ToUpper();

            foreach (CheckInfoSet.CheckParttenRow partten in Config.CheckPartten)
            {
                DataProcessType changeType = (DataProcessType)Enum.Parse(typeof(DataProcessType), partten.ProcessType, true);
                ProcessTarget   target     = (ProcessTarget)Enum.Parse(typeof(ProcessTarget), partten.ProcessTarget, true);
                if (target != ProcessTarget.Both &&
                    ((target == ProcessTarget.ExpectData && isExpectData == false) || (target == ProcessTarget.ResultData && isExpectData)))
                {
                    continue;
                }
                if (!string.IsNullOrEmpty(partten.TableName) && partten.TableName.ToUpper().Equals(srcTableName))
                {
                    //対象テーブルの場合、データ変換処理
                    ChangeDatas(dttSource, partten.ColumnName, changeType);
                }
                else if (!string.IsNullOrWhiteSpace(partten.ColumnName) && dttSource.Columns.Contains(partten.ColumnName))
                {
                    //対象列が存在する場合、データ変換処理
                    ChangeDatas(dttSource, partten.ColumnName, changeType);
                }
            }
        }
Exemplo n.º 2
0
        void Worker(object cState)
        {
            (new helpers.Logger()).WriteWarning("сервер инициации запущен");
            string sProcesses = "целевые процессы:";

            _aProcesses = new ProcessTarget[Preferences.aProcesses.Length];
            for (int nIndx = 0; Preferences.aProcesses.Length > nIndx; nIndx++)
            {
                _aProcesses[nIndx] = new ProcessTarget(Preferences.aProcesses[nIndx]);
                sProcesses        += "<br>\t\t" + _aProcesses[nIndx].ToString();
            }
            (new helpers.Logger()).WriteNotice(sProcesses);
            try
            {
                System.Diagnostics.Process cProcess = null;
                while (!bAbort)
                {
                    foreach (ProcessTarget cProcessTarget in _aProcesses)
                    {
                        try
                        {
                            if (0 < cProcessTarget.nID)
                            {
                                try
                                {
                                    cProcess = System.Diagnostics.Process.GetProcessById(cProcessTarget.nID);
                                    if (cProcess.PriorityClass != cProcessTarget.enPriority)
                                    {
                                        cProcess.PriorityClass = cProcessTarget.enPriority;
                                        (new helpers.Logger()).WriteNotice("приоритет целевого процесса изменен:" + cProcessTarget.ToString());
                                    }
                                    if (cProcessTarget.bFail)
                                    {
                                        cProcessTarget.bFail = false;
                                        (new helpers.Logger()).WriteNotice("целевой процесс запущен " + cProcessTarget.ToString());
                                    }
                                }
                                catch
                                {
                                    cProcessTarget.nMessageLastAge = DateTime.Now.Subtract(cProcessTarget.dtMessageLast).TotalMinutes;
                                    if (5 < cProcessTarget.nMessageLastAge)
                                    {
                                        if (!cProcessTarget.bFail)
                                        {
                                            (new helpers.Logger()).WriteError(new Exception("не найден целевой процесс " + cProcessTarget.ToString()));
                                            cProcessTarget.bFail = true;
                                        }
                                        else
                                        {
                                            (new helpers.Logger()).WriteError(new Exception("ошибка запуска целевого процесса " + cProcessTarget.ToString()));
                                            cProcessTarget.dtMessageLast = DateTime.Now;
                                        }
                                    }
                                    cProcessTarget.Start();
                                }
                            }
                            else
                            {
                                cProcessTarget.Start();
                            }
                        }
                        catch (Exception ex)
                        {
                            (new helpers.Logger()).WriteError(ex);
                        }
                    }
                    if (!Preferences.sRestartFile.IsNullOrEmpty())
                    {
                        string sRestartFNWE      = sio.Path.GetFileNameWithoutExtension(Preferences.sRestartFile);
                        string sFirstRestartFN   = sio.Directory.GetFiles(sio.Path.GetDirectoryName(Preferences.sRestartFile)).FirstOrDefault(o => sio.Path.GetFileName(o).StartsWith(sRestartFNWE) && !o.EndsWith("!"));
                        string sFirstRestartName = sio.Path.GetFileName(sFirstRestartFN);
                        if (System.IO.File.Exists(sFirstRestartFN))
                        {
                            (new Logger()).WriteNotice("try to restart something - see answer file in [" + System.IO.Path.GetDirectoryName(sFirstRestartFN) + "]");
                            string sAnswer = "processes detected:\n";
                            foreach (ProcessTarget cP in _aProcesses)
                            {
                                sAnswer += "[arg=" + cP.sArguments + "][name=" + cP.sName + "]\n";
                            }
                            Exception cCurrentException = null;
                            try
                            {
                                string[] aLines = System.IO.File.ReadLines(sFirstRestartFN).ToArray();
                                foreach (string sRestart in aLines)
                                {
                                    if (sRestart.IsNullOrEmpty() || sRestart.StartsWith("#"))
                                    {
                                        continue;
                                    }
                                    sAnswer += "read lines: [" + sRestart + "]\n";
                                    if (sRestart.ToLower() == "iis")
                                    {
                                        RestartIIS();
                                        sAnswer += "restarted IIS\n";
                                        continue;
                                    }
                                    ProcessTarget cPT = _aProcesses.FirstOrDefault(o => o.sArguments == sRestart);
                                    if (null != cPT)
                                    {
                                        (new helpers.Logger()).WriteDebug("try_to_stop_process = [" + cPT.sArguments + "]");
                                        cPT.Stop();
                                        sAnswer += "restarted " + sRestart + "\n";
                                    }
                                }
                                //System.Diagnostics.Process.Start(@"c:\Program Files\replica\ingenie\server\restart\ingenie.restart.exe");
                            }
                            catch (Exception ex)
                            {
                                cCurrentException = ex;
                                (new helpers.Logger()).WriteError(ex);
                            }
                            string sFileAnswer = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Preferences.sRestartFile), "answer_" + sFirstRestartName);

                            if (cCurrentException == null)
                            {
                                sAnswer += "done successfully\n";
                            }
                            else
                            {
                                sAnswer += "ERRORS! \n" + cCurrentException.Message + "\n" + (null == cCurrentException.InnerException ? "" : cCurrentException.InnerException.Message);
                            }
                            System.IO.File.WriteAllText(sFileAnswer, sAnswer);

                            System.IO.File.Move(sFirstRestartFN, sFirstRestartFN + "!");
                        }
                    }
                    System.Threading.Thread.Sleep(1000);
                }
            }
            catch (Exception ex)
            {
                (new helpers.Logger()).WriteError(ex);
            }
            finally
            {
                (new helpers.Logger()).WriteNotice("сервер инициации остановлен");
            }
        }
Exemplo n.º 3
0
		void Worker(object cState)
		{
			(new helpers.Logger()).WriteNotice("сервер инициации запущен");
			string sProcesses = "целевые процессы:";
			_aProcesses = new ProcessTarget[Preferences.aProcesses.Length];
			for (int nIndx = 0; Preferences.aProcesses.Length > nIndx; nIndx++)
			{
				_aProcesses[nIndx] = new ProcessTarget(Preferences.aProcesses[nIndx]);
				sProcesses += "<br>" + _aProcesses[nIndx].ToString();

			}
			(new helpers.Logger()).WriteNotice(sProcesses);
			try
			{
				System.Diagnostics.Process cProcess = null;
				while (true)
				{
					foreach (ProcessTarget cProcessTarget in _aProcesses)
					{
						try
						{
							if (0 < cProcessTarget.nID)
							{
								try
								{
									cProcess = System.Diagnostics.Process.GetProcessById(cProcessTarget.nID);
									if (cProcessTarget.bFail)
									{
										(new helpers.Logger()).WriteNotice("целевой процесс запущен " + cProcessTarget.ToString());
										cProcessTarget.bFail = false;
									}
								}
								catch
								{
									cProcessTarget.nMessageLastAge = DateTime.Now.Subtract(cProcessTarget.dtMessageLast).TotalMinutes;
									if (5 < cProcessTarget.nMessageLastAge)
									{
										if (!cProcessTarget.bFail)
										{
											(new helpers.Logger()).WriteError(new Exception("не найден целевой процесс " + cProcessTarget.ToString()));
											cProcessTarget.bFail = true;
										}
										else
										{
											(new helpers.Logger()).WriteError(new Exception("ошибка запуска целевого процесса " + cProcessTarget.ToString()));
											cProcessTarget.dtMessageLast = DateTime.Now;
										}
									}
									cProcessTarget.Start();
								}
							}
							else
								cProcessTarget.Start();
						}
						catch (Exception ex)
						{
							(new helpers.Logger()).WriteError(ex);
						}
					}
					if (null != Preferences.sRestartFile && System.IO.File.Exists(Preferences.sRestartFile)) //EMERGENCY:l это зачем такое?
					{
						try
						{
							System.IO.File.Delete(Preferences.sRestartFile);
							System.Diagnostics.Process.Start(@"c:\Program Files\replica\ingenie\server\restart\ingenie.restart.exe");
						}
						catch (Exception ex)
						{
							(new helpers.Logger()).WriteError(ex);
						}

					}
					System.Threading.Thread.Sleep(3000);
				}
			}
			catch (Exception ex)
			{
				(new helpers.Logger()).WriteError(ex);
			}
			(new helpers.Logger()).WriteNotice("сервер инициации остановлен");
		}
Exemplo n.º 4
0
 public void SetTarget(int processId, bool matchHostXArg)
 {
     Target = new ProcessTarget(processId, matchHostXArg);
 }
Exemplo n.º 5
0
 public void SetTarget(string processName, bool matchHostXArg)
 {
     Target = new ProcessTarget(processName, matchHostXArg);
 }