Ejemplo n.º 1
0
 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]);
         }
     }
 }
Ejemplo n.º 2
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);
        }