diff options
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs')
-rw-r--r-- | Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs | 150 |
1 files changed, 75 insertions, 75 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs b/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs index 05b7238e..732ab856 100644 --- a/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs +++ b/Ryujinx.HLE/HOS/Services/Lm/LogService/ILogger.cs @@ -8,29 +8,16 @@ namespace Ryujinx.HLE.HOS.Services.Lm.LogService { public ILogger() { } - private static int ReadEncodedInt(BinaryReader reader) + [Command(0)] + // Log(buffer<unknown, 0x21>) + public ResultCode Log(ServiceCtx context) { - int result = 0; - int position = 0; - - byte encoded; - - do - { - encoded = reader.ReadByte(); - - result += (encoded & 0x7F) << (7 * position); - - position++; + Logger.Guest?.Print(LogClass.ServiceLm, LogImpl(context)); - } while ((encoded & 0x80) != 0); - - return result; + return ResultCode.Success; } - [Command(0)] - // Log(buffer<unknown, 0x21>) - public ResultCode Log(ServiceCtx context) + private string LogImpl(ServiceCtx context) { (long bufPos, long bufSize) = context.Request.GetBufferType0x21(); @@ -38,72 +25,85 @@ namespace Ryujinx.HLE.HOS.Services.Lm.LogService context.Memory.Read((ulong)bufPos, logBuffer); - using (MemoryStream ms = new MemoryStream(logBuffer)) - { - BinaryReader reader = new BinaryReader(ms); + using MemoryStream ms = new MemoryStream(logBuffer); - long pid = reader.ReadInt64(); - long threadContext = reader.ReadInt64(); - short flags = reader.ReadInt16(); - byte level = reader.ReadByte(); - byte verbosity = reader.ReadByte(); - int payloadLength = reader.ReadInt32(); + BinaryReader reader = new BinaryReader(ms); - StringBuilder sb = new StringBuilder(); + long pid = reader.ReadInt64(); + long threadContext = reader.ReadInt64(); + short flags = reader.ReadInt16(); + byte level = reader.ReadByte(); + byte verbosity = reader.ReadByte(); + int payloadLength = reader.ReadInt32(); - sb.AppendLine("Guest log:"); + StringBuilder sb = new StringBuilder(); - sb.AppendLine($" Log level: {(LmLogLevel)level}"); + sb.AppendLine($"Guest Log:\n Log level: {(LmLogLevel)level}"); - while (ms.Position < ms.Length) + while (ms.Position < ms.Length) + { + int type = ReadEncodedInt(reader); + int size = ReadEncodedInt(reader); + + LmLogField field = (LmLogField)type; + + string fieldStr = string.Empty; + + if (field == LmLogField.Start) { - int type = ReadEncodedInt(reader); - int size = ReadEncodedInt(reader); - - LmLogField field = (LmLogField)type; - - string fieldStr = string.Empty; - - if (field == LmLogField.Start) - { - reader.ReadBytes(size); - - continue; - } - else if (field == LmLogField.Stop) - { - break; - } - else if (field == LmLogField.Line) - { - fieldStr = $"{field}: {reader.ReadInt32()}"; - } - else if (field == LmLogField.DropCount) - { - fieldStr = $"{field}: {reader.ReadInt64()}"; - } - else if (field == LmLogField.Time) - { - fieldStr = $"{field}: {reader.ReadInt64()}s"; - } - else if (field < LmLogField.Count) - { - fieldStr = $"{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'"; - } - else - { - fieldStr = $"Field{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'"; - } - - sb.AppendLine(" " + fieldStr); - } + reader.ReadBytes(size); - string text = sb.ToString(); + continue; + } + else if (field == LmLogField.Stop) + { + break; + } + else if (field == LmLogField.Line) + { + fieldStr = $"{field}: {reader.ReadInt32()}"; + } + else if (field == LmLogField.DropCount) + { + fieldStr = $"{field}: {reader.ReadInt64()}"; + } + else if (field == LmLogField.Time) + { + fieldStr = $"{field}: {reader.ReadInt64()}s"; + } + else if (field < LmLogField.Count) + { + fieldStr = $"{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'"; + } + else + { + fieldStr = $"Field{field}: '{Encoding.UTF8.GetString(reader.ReadBytes(size)).TrimEnd()}'"; + } - Logger.PrintGuest(LogClass.ServiceLm, text); + sb.AppendLine($" {fieldStr}"); } - return ResultCode.Success; + return sb.ToString(); + } + + private static int ReadEncodedInt(BinaryReader reader) + { + int result = 0; + int position = 0; + + byte encoded; + + do + { + encoded = reader.ReadByte(); + + result += (encoded & 0x7F) << (7 * position); + + position++; + + } while ((encoded & 0x80) != 0); + + return result; } } }
\ No newline at end of file |