def _GetNextFormattedLine()

in AdvLoggerPkg/Application/DecodeUefiLog/DecodeUefiLog.py [0:0]


    def _GetNextFormattedLine(self, AccessMessageLineEntry, LoggerInfo):
        AccessMessageBlock = {}
        AccessMessageBlock["TimeStamp"] = 0
        AccessMessageBlock["DebugLevel"] = 0

        if AccessMessageLineEntry is None:
            AccessMessageLineEntry = {}
            AccessMessageLineEntry["Message"] = 0
            AccessMessageLineEntry["ResidualLen"] = 0
            AccessMessageLineEntry["TimeStamp"] = 0

        AccessMessageLineEntry["Message"] = 0
        Status = self.SUCCESS
        while (Status == self.SUCCESS):
            TargetLen = 0

            if AccessMessageLineEntry["ResidualLen"] > 0:
                LastChar = 0
                while (AccessMessageLineEntry["ResidualLen"] > 0 and
                       (LastChar != '\n') and
                       (TargetLen < (self.MAX_MESSAGE_SIZE - 2))):
                    TargetLen = TargetLen + 1
                    LastChar = AccessMessageLineEntry["ResidualChar"][0]
                    if AccessMessageLineEntry["ResidualLen"] > 0:
                        AccessMessageLineEntry["ResidualChar"] = AccessMessageLineEntry["ResidualChar"][1:]
                        AccessMessageLineEntry["ResidualLen"] -= 1

                    if AccessMessageLineEntry["Message"] == 0:
                        AccessMessageLineEntry["Message"] = LastChar
                    else:
                        AccessMessageLineEntry["Message"] += LastChar

                    AccessMessageLineEntry["MessageLen"] = len(AccessMessageLineEntry["Message"])

                if LastChar == '\n':
                    break

                if TargetLen >= (self.MAX_MESSAGE_SIZE - 2):
                    AccessMessageLineEntry["Message"] += '\n'
                    TargetLen = TargetLen + 1
                    break

                if AccessMessageLineEntry["ResidualLen"] != 0:
                    Status = self.ABORTED
                    break

            (Status, AccessMessageBlock) = self._GetNextMessageBlock(LoggerInfo)

            if Status == self.END_OF_FILE:
                if (TargetLen > 0):
                    Status = self.SUCCESS
                break

            if Status == self.SUCCESS:
                AccessMessageLineEntry["ResidualLen"] = AccessMessageBlock["MessageLen"]
                AccessMessageLineEntry["ResidualChar"] = AccessMessageBlock["Message"]
                AccessMessageLineEntry["TimeStamp"] = AccessMessageBlock["TimeStamp"]
                AccessMessageLineEntry["DebugLevel"] = AccessMessageBlock["DebugLevel"]

        return (Status, AccessMessageLineEntry)