MapApiServce.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using EVCB_OCPP.WSServer.Service.WsService;
  2. using Microsoft.AspNetCore.Builder;
  3. using NLog;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace EVCB_OCPP.WSServer.Service;
  10. public static class MapApiServceExtention
  11. {
  12. public static void MapApiServce(this WebApplication webApplication)
  13. {
  14. var helpFunc = () => {
  15. return string.Join("\r\n", new[] {
  16. "Command help!!",
  17. "lcn : List Customer Name",
  18. "gc : GC Collect",
  19. "lc : List Clients",
  20. "silent : silent",
  21. "show : show log"
  22. });
  23. };
  24. webApplication.MapGet("/", helpFunc);
  25. webApplication.MapGet("/help", helpFunc);
  26. webApplication.MapPost("/stop", (ProtalServer server) => {
  27. server.Stop();
  28. return "Command stop";
  29. });
  30. webApplication.MapPost("/gc", () => {
  31. GC.Collect();
  32. return "Command GC";
  33. });
  34. webApplication.MapPost("/lc", (ProtalServer server) => {
  35. List<string> toReturn = new List<string>() { "Command List Clients" };
  36. Dictionary<string, WsClientData> clientDic = server.GetClientDic();
  37. var list = clientDic.Select(c => c.Value).ToList();
  38. int i = 1;
  39. foreach (var c in list)
  40. {
  41. toReturn.Add(i + ":" + c.ChargeBoxId + " " + c.SessionID);
  42. i++;
  43. }
  44. return string.Join("\r\n", toReturn);
  45. });
  46. webApplication.MapPost("/lcn", (ProtalServer server) => {
  47. List<string> toReturn = new List<string> { "Command List Customer Name" };
  48. Dictionary<string, WsClientData> clientDic = server.GetClientDic();
  49. var lcn = clientDic.Select(c => c.Value.CustomerName).Distinct().ToList();
  50. int iLcn = 1;
  51. foreach (var c in lcn)
  52. {
  53. toReturn.Add(iLcn + ":" + c + ":" + clientDic.Where(z => z.Value.CustomerName == c).Count().ToString());
  54. iLcn++;
  55. }
  56. return string.Join("\r\n", toReturn);
  57. });
  58. webApplication.MapPost("/silent", () => {
  59. foreach (var rule in LogManager.Configuration.LoggingRules)
  60. {
  61. if (rule.RuleName != "ConsoleLog")
  62. {
  63. continue;
  64. }
  65. var isTargetRule = rule.Targets.Any(x => x.Name.ToLower() == "console");
  66. if (isTargetRule)
  67. {
  68. rule.SetLoggingLevels(NLog.LogLevel.Warn, NLog.LogLevel.Off);
  69. }
  70. }
  71. return "Command silent";
  72. });
  73. webApplication.MapPost("/show", () => {
  74. foreach (var rule in LogManager.Configuration.LoggingRules)
  75. {
  76. if (rule.RuleName != "ConsoleLog")
  77. {
  78. continue;
  79. }
  80. var isTargetRule = rule.Targets.Any(x => x.Name.ToLower() == "console");
  81. if (isTargetRule)
  82. {
  83. rule.SetLoggingLevels(NLog.LogLevel.Trace, NLog.LogLevel.Off);
  84. }
  85. }
  86. return "Command show";
  87. });
  88. webApplication.MapGet("/threads", () => {
  89. ThreadPool.GetMaxThreads(out var maxWorkerThread, out var maxCompletionPortThreads);
  90. ThreadPool.GetAvailableThreads(out var avaliableWorkerThread, out var avaliableCompletionPortThreads);
  91. return $"WorkerThread:{avaliableWorkerThread}/{maxWorkerThread} CompletionPortThreads{avaliableCompletionPortThreads}/{maxCompletionPortThreads}";
  92. });
  93. webApplication.MapPost("/threads", (int min, int max) => {
  94. ThreadPool.GetMaxThreads(out var maxWorkerThread, out var maxCompletionPortThreads);
  95. ThreadPool.GetAvailableThreads(out var avaliableWorkerThread, out var avaliableCompletionPortThreads);
  96. ThreadPool.SetMinThreads(min, 0);
  97. ThreadPool.SetMaxThreads(max, maxCompletionPortThreads);
  98. return $"WorkerThread:{avaliableWorkerThread}/{maxWorkerThread} CompletionPortThreads{avaliableCompletionPortThreads}/{maxCompletionPortThreads}";
  99. });
  100. }
  101. }