1 //
2 // Copyright (c) 2010-2025 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 using AntShell.Commands;
8 using Antmicro.Renode.Logging;
9 using Antmicro.Renode.Utilities;
10 using Antmicro.Renode.UserInterface.Tokenizer;
11 
12 namespace Antmicro.Renode.UserInterface.Commands
13 {
14     public class NetworkLoggerCommand : AutoLoadCommand
15     {
PrintHelp(ICommandInteraction writer)16         public override void PrintHelp(ICommandInteraction writer)
17         {
18             base.PrintHelp(writer);
19             writer.WriteLine();
20             writer.WriteLine("Usages:");
21             writer.WriteLine($" {FullCommand} PORT [PLAIN_MODE]");
22             writer.WriteError("\nYou must specify the port number for the logger's socket.");
23         }
24 
25         [Runnable]
Run(DecimalIntegerToken port, BooleanToken plainMode)26         public void Run(DecimalIntegerToken port, BooleanToken plainMode)
27         {
28             Run((int)port.Value, plainMode.Value);
29         }
30 
31         [Runnable]
Run(DecimalIntegerToken port)32         public void Run(DecimalIntegerToken port)
33         {
34             Run((int)port.Value);
35         }
36 
NetworkLoggerCommand(Monitor monitor)37         public NetworkLoggerCommand(Monitor monitor) : base(monitor, FullCommand, "sets the output port for logger.", "logN")
38         {
39         }
40 
Run(int port, bool plainMode = true)41         private void Run(int port, bool plainMode = true)
42         {
43             Logger.AddBackend(new NetworkBackend(port, plainMode), BackendName, overwrite: true);
44         }
45 
46         private readonly string BackendName = "network";
47         private const string FullCommand = "logNetwork";
48     }
49 }
50 
51