private static void ProcessMessage(object rawMessage, object tag) { if (rawMessage is FunctionReplyMessage) { FunctionReplyMessage functionReplyMessage = rawMessage as FunctionReplyMessage; Base.ControlServer.SendToUser(functionReplyMessage.ClientID, new Packet(functionReplyMessage.Packet)); return; } if (rawMessage is ChildProcessLogReplyMessage) { return; } if (rawMessage is ChildProcessLogMessage) { if (Base.ClientServer.OnChildProcessLogAdded != null) { RCClient sender = tag as RCClient; Base.ClientServer.OnChildProcessLogAdded(sender, new EventArgs <ChildProcessLogMessage>(rawMessage as ChildProcessLogMessage)); return; } } else if (rawMessage is CheckPatchProcessResultMessage) { CheckPatchProcessResultMessage checkPatchProcessResultMessage = rawMessage as CheckPatchProcessResultMessage; foreach (string message in checkPatchProcessResultMessage.CheckPatchLog) { Base.ControlServer.NotifyMessage(MessageType.Message, message, new object[0]); } } }
private void ClientCheckPatch(RCClient sender, List <RCProcess> processList) { Hashtable hashtable = new Hashtable(); List <string> checkPatchLog = new List <string>(); foreach (RCProcess process in processList) { if (!hashtable.ContainsKey(process.UpdateExecuteName + process.UpdateExecuteArgs)) { string key = process.UpdateExecuteName + process.UpdateExecuteArgs; hashtable.Add(key, null); string path = string.Format("{0}{1}", BaseConfiguration.WorkingDirectory, process.UpdateExecuteName + ".config"); if (File.Exists(path)) { XmlTextReader reader = null; try { try { reader = new XmlTextReader(path) { WhitespaceHandling = WhitespaceHandling.None }; string[] strArray = process.UpdateExecuteArgs.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); string str3 = null; string str4 = "PatchTime.config"; reader.ReadToFollowing("Address"); str3 = @"\\" + reader.ReadString() + @"\"; reader.ReadToFollowing("RootDirectory"); str3 = str3 + reader.ReadString() + @"\"; while (reader.ReadToFollowing("ServerGroup")) { if (reader.GetAttribute("name") == strArray[1]) { str3 = str3 + reader.GetAttribute("path") + @"\"; break; } } while (reader.ReadToFollowing("ServiceType")) { if (reader.GetAttribute("argument") == strArray[0]) { str3 = str3 + reader.GetAttribute("path") + @"\"; break; } } string str5 = str3 + str4; string str6 = BaseConfiguration.WorkingDirectory + process.WorkingDirectory + @"\" + str4; bool flag = true; if (!File.Exists(str5)) { checkPatchLog.Add(string.Format("\"{0}\" is not exist. Please Packaging.", str5)); flag = false; } if (!File.Exists(str6)) { checkPatchLog.Add(string.Format("\"{0}\" is not exist. Please Packaging.", str6)); flag = false; } if (flag && !(File.GetLastWriteTime(str5) == File.GetLastWriteTime(str6))) { checkPatchLog.Add(string.Format("\"{0}\" Process is not updated. Please Update.", process.Name)); } } catch (Exception exception) { checkPatchLog.Add(exception.ToString()); } continue; } finally { if (reader != null) { reader.Close(); } } } checkPatchLog.Add(string.Format("{0} file is not exist!", path)); } } if (checkPatchLog.Count == 0) { checkPatchLog.Add("All Services are last version."); } CheckPatchProcessResultMessage message = new CheckPatchProcessResultMessage(checkPatchLog); this.Send <CheckPatchProcessResultMessage>(message); }