コード例 #1
0
        private void ProcessCache(MemoryStream stream, int userID)
        {
            Logger.WriteLine("New cache of size " + stream.Length + " received!");
            stream.Position = 0;
            using (var bin = new BinaryReader(stream))
            {
                var xfthMagic = 'X' << 0 | 'F' << 8 | 'T' << 16 | 'H' << 24;

                if (bin.ReadUInt32() != xfthMagic)
                {
                    Logger.WriteLine("Invalid cache header!");
                    return;
                }

                var version = bin.ReadUInt32();
                if (version != 7 && version != 8)
                {
                    Logger.WriteLine("Unsupported DBCache version: " + version);
                    return;
                }

                var build = bin.ReadUInt32();
                Logger.WriteLine("Cache is for build " + build);

                // TODO: Check SHA to prevent malformed data being used
                var sha = bin.ReadBytes(32);

                stream.Position = 0;
                HotfixManager.AddCache(stream, build, userID);
            }

            dbcManager.ClearHotfixCache();
        }
コード例 #2
0
        public string Get()
        {
            int count = dbdProvider.LoadDefinitions();

            dbcManager.ClearCache();
            dbcManager.ClearHotfixCache();
            return("Reloaded " + count + " definitions and cleared DBC cache!");
        }