NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

stepLogger.py (3636B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\charactercreator\client\logging\stepLogger.py
      2 from collections import defaultdict
      3 
      4 class TimeStepInformation:
      5 
      6     def __init__(self):
      7         self.timePerStep = defaultdict(long)
      8         self.totalTime = 0
      9         self.entryCountPerStep = defaultdict(int)
     10         self.nextTriesPerStep = defaultdict(int)
     11 
     12 
     13 class FinalStepResult(object):
     14 
     15     def __init__(self):
     16         self.schoolChoiceChanged = -1
     17         self.nameValidatationTries = -1
     18         self.didFinish = False
     19         self.finalizeTryCount = 0
     20 
     21 
     22 class FinalStepLogger(object):
     23 
     24     def __init__(self):
     25         self.triedNames = []
     26         self.startingSchool = -1
     27         self.chosenSchool = -1
     28         self.schoolChanged = -1
     29         self.didFinish = None
     30         self.storedSteps = []
     31         self.finalizeCount = 0
     32 
     33     def Start(self):
     34         pass
     35 
     36     def SetSchool(self, school):
     37         if school != self.chosenSchool:
     38             self.schoolChanged += 1
     39             self.chosenSchool = school
     40 
     41     def AddTriedName(self, name):
     42         self.triedNames.append(name)
     43 
     44     def End(self):
     45         self.didFinish = True
     46 
     47     def Cancel(self):
     48         self.didFinish = False
     49 
     50     def Finalize(self):
     51         self.finalizeCount += 1
     52 
     53     def GetFinalStepResult(self):
     54         result = FinalStepResult()
     55         result.nameValidatationTries = len(self.triedNames)
     56         result.didFinish = self.didFinish
     57         result.schoolChoiceChanged = self.schoolChanged
     58         result.finalizeTryCount = self.finalizeCount
     59         return result
     60 
     61 
     62 class StepLogger(object):
     63 
     64     def __init__(self, timeProvider):
     65         self.startTime = None
     66         self.stopTime = None
     67         self.nowTimeProvider = timeProvider
     68         self.stepOrder = []
     69         self.timeStartOrder = []
     70         self.timeEndOrder = []
     71         self.currentStepID = None
     72         self.stepTimeSpent = defaultdict(long)
     73         self.stepEntryCount = defaultdict(int)
     74         self.nextTryCount = defaultdict(int)
     75 
     76     def IncrementNextTryCount(self):
     77         if self.currentStepID is not None:
     78             self.nextTryCount[self.currentStepID] += 1
     79 
     80     def Start(self):
     81         self.startTime = self._getTime()
     82 
     83     def SetStep(self, stepID):
     84         self._endCurrentStep()
     85         self.timeStartOrder.append(self._getTime())
     86         self.currentStepID = stepID
     87         self.stepEntryCount[stepID] += 1
     88         self.stepOrder.append(stepID)
     89 
     90     def _endCurrentStep(self):
     91         if self.currentStepID:
     92             self.timeEndOrder.append(self._getTime())
     93 
     94     def _getTime(self):
     95         return self.nowTimeProvider()
     96 
     97     def Stop(self):
     98         self._endCurrentStep()
     99         self.stopTime = self._getTime()
    100 
    101     def GetStepOrder(self):
    102         return self.stepOrder
    103 
    104     def GetTimeObject(self):
    105         finalTimes = defaultdict(long)
    106         timeObject = TimeStepInformation()
    107         for index in range(len(self.stepOrder)):
    108             entry = self.stepOrder[index]
    109             startTime = self.timeStartOrder[index]
    110             endTime = self.timeEndOrder[index]
    111             finalTimes[entry] += endTime - startTime
    112 
    113         timeObject.timePerStep = finalTimes
    114         timeObject.nextTriesPerStep = self.nextTryCount.copy()
    115         timeObject.entryCountPerStep = self.stepEntryCount.copy()
    116         timeObject.totalTime = self.stopTime - self.startTime
    117         return timeObject
    118 
    119 
    120 class StepInfo(object):
    121 
    122     def __init__(self, stepID, nextTryCount, totalTime, entryCount):
    123         self.stepID = stepID
    124         self.nextTryCount = nextTryCount
    125         self.totalCount = totalTime
    126         self.entryCount = entryCount