Ejemplo n.º 1
0
        /// <summary>
        /// Return an existing Record for XML Package or a New one which can be added to db.
        /// </summary>
        /// <param name="records">Database Collection of Objects</param>
        /// <param name="relativeID">Relative Path Used as File Name ID</param>
        /// <param name="hash">SHA256 Hash to check for updates</param>
        /// <returns></returns>
        private AutoXMLUpdateRecord GetAutoXMLUpdateRecordFromCollection(IEnumerable <AutoXMLUpdateRecord> records, string relativeID, string hash)
        {
            AutoXMLUpdateRecord previous = records.Where(r => r.FilePackage.Equals(relativeID)).FirstOrDefault();

            if (previous == null)
            {
                previous             = new AutoXMLUpdateRecord();
                previous.FilePackage = relativeID;
                previous.AllowAdd    = true;
            }

            return(previous);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Apply All Change For Directory According to Database existing update records
        /// </summary>
        /// <param name="records">All Database Object for XML Updates</param>
        /// <param name="directory">Directory to read from</param>
        /// <param name="replace">Replace mode if True</param>
        private void ApplyXMLChangeForDirectory(IEnumerable <AutoXMLUpdateRecord> records, string directory, bool replace)
        {
            IDictionary <FileInfo, string> inserts = GetXMLPackagesForUpdate(directory);

            // List all file,
            foreach (var entry in inserts)
            {
                string relativeID = GetRelativePath(entry.Key.FullName, new DirectoryInfo(directory).Parent.FullName);

                AutoXMLUpdateRecord rec = GetAutoXMLUpdateRecordFromCollection(records, relativeID, entry.Value);
                bool wasNull            = rec.FileHash == null;

                // New or Outdated File - need to be applied !
                if (wasNull || !rec.FileHash.Equals(entry.Value))
                {
                    if (CheckXMLPackageAndApply(entry.Key, replace))
                    {
                        rec.LoadResult = "SUCCESS";
                    }
                    else
                    {
                        rec.LoadResult = "FAILURE";
                    }

                    rec.FileHash = entry.Value;
                    if (wasNull)
                    {
                        GameServer.Database.AddObject(rec);
                    }
                    else
                    {
                        GameServer.Database.SaveObject(rec);
                    }
                }
            }
        }
Ejemplo n.º 3
0
		/// <summary>
		/// Return an existing Record for XML Package or a New one which can be added to db.
		/// </summary>
		/// <param name="records">Database Collection of Objects</param>
		/// <param name="relativeID">Relative Path Used as File Name ID</param>
		/// <param name="hash">SHA256 Hash to check for updates</param>
		/// <returns></returns>
		private AutoXMLUpdateRecord GetAutoXMLUpdateRecordFromCollection(IEnumerable<AutoXMLUpdateRecord> records, string relativeID, string hash)
		{
			var previous = records.FirstOrDefault(r => r.FilePackage.Equals(relativeID));
			
			if (previous == null)
			{
				previous = new AutoXMLUpdateRecord();
				previous.FilePackage = relativeID;
				previous.AllowAdd = true;
			}
			
			return previous;
		}