コード例 #1
0
        async Task FindLatestDumpForServerGroup(ServerGroup serverGroup)
        {
            var beginDate = Time.Get.LocalNowOffset;

            var maxBackDate = Time.Get.LocalNow - MaxDaysBack;

            SkillDumpInfo[] dumps = new SkillDumpInfo[0];
            if (skillDumpsDirectory.Exists)
            {
                dumps = skillDumpsDirectory.GetFiles().Select(ConvertFileInfoToSkillDumpInfo)
                        .Where(info => info != null && info.Stamp > maxBackDate)
                        .OrderByDescending(info => info.Stamp)
                        .ToArray();
            }

            SkillDump foundDump = null;

            foreach (var dumpInfo in dumps)
            {
                var server = await character.TryGetHistoricServerAtLogStampAsync(dumpInfo.Stamp).ConfigureAwait(false);

                if (server != null)
                {
                    if (server.ServerGroup == serverGroup)
                    {
                        foundDump = new RealSkillDump(serverGroup, dumpInfo, logger);
                        break;
                    }
                }
                else
                {
                    logger.Log(LogLevel.Info,
                               "Could not identify server for skill dump: " + dumpInfo.FileInfo.FullName,
                               this,
                               null);
                }
            }

            if (foundDump != null)
            {
                latestSkillDumps[serverGroup] = foundDump;
            }
            else
            {
                // if nothing found, place a stub to prevent another file search
                latestSkillDumps[serverGroup] = new StubSkillDump(serverGroup);
            }

            lastRebuild = beginDate;
        }
コード例 #2
0
 public RealSkillDump(ServerGroup serverGroup, [NotNull] SkillDumpInfo dumpInfo,
                      [NotNull] IWurmApiLogger logger)
     : base(serverGroup)
 {
     if (dumpInfo == null)
     {
         throw new ArgumentNullException(nameof(dumpInfo));
     }
     if (logger == null)
     {
         throw new ArgumentNullException(nameof(logger));
     }
     this.dumpInfo = dumpInfo;
     this.logger   = logger;
     skillLevels   = ParseDump();
 }