Commit bc12f89aad3370e6361a5c524b2d44bedfa5810c
1 parent
eeb190f8
v1.28.0.0
Showing
3 changed files
with
79 additions
and
2 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs
| @@ -276,6 +276,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS | @@ -276,6 +276,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS | ||
| 276 | public static class GetRemoteInfo { public const string KEY = "RIN"; } | 276 | public static class GetRemoteInfo { public const string KEY = "RIN"; } |
| 277 | public static class Send { public const string KEY = "SND"; } | 277 | public static class Send { public const string KEY = "SND"; } |
| 278 | public static class Peek { public const string KEY = "PEK"; } | 278 | public static class Peek { public const string KEY = "PEK"; } |
| 279 | + public static class Enumerate { public const string KEY = "ENU"; } | ||
| 279 | public static class Read{ public const string KEY = "RED"; } | 280 | public static class Read{ public const string KEY = "RED"; } |
| 280 | public static class Purge { public const string KEY = "PRG"; } | 281 | public static class Purge { public const string KEY = "PRG"; } |
| 281 | } | 282 | } |
Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs
| @@ -41,6 +41,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS | @@ -41,6 +41,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS | ||
| 41 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.SetDefaultPermissions.KEY, "Set default MSMQ permisssions", SetDefaultPermissions, ep)) | 41 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.SetDefaultPermissions.KEY, "Set default MSMQ permisssions", SetDefaultPermissions, ep)) |
| 42 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.GetLocalInfo.KEY, "Get local MSMQ information", GetLocalInfo, ep)) | 42 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.GetLocalInfo.KEY, "Get local MSMQ information", GetLocalInfo, ep)) |
| 43 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.GetRemoteInfo.KEY, "Get remote MSMQ information", GetRemoteInfo, ep)) | 43 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.GetRemoteInfo.KEY, "Get remote MSMQ information", GetRemoteInfo, ep)) |
| 44 | + .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Enumerate.KEY, "Enumerate MSMQ message", Enumerate, ep)) | ||
| 44 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Peek.KEY, "Peek MSMQ message", Peek, ep)) | 45 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Peek.KEY, "Peek MSMQ message", Peek, ep)) |
| 45 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Read.KEY, "Read MSMQ message", Read, ep)) | 46 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Read.KEY, "Read MSMQ message", Read, ep)) |
| 46 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Send.KEY, "Send MSMQ message", Send, ep)) | 47 | .AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.Function.Send.KEY, "Send MSMQ message", Send, ep)) |
| @@ -291,6 +292,81 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS | @@ -291,6 +292,81 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS | ||
| 291 | return o; | 292 | return o; |
| 292 | } | 293 | } |
| 293 | 294 | ||
| 295 | + private static object Enumerate(object parameter, object o) | ||
| 296 | + { | ||
| 297 | + var config = (parameter as Menu.ExecutorParameter).GetConfig<MSMQManagerXmlProcessor>(); | ||
| 298 | + var args = (parameter as Menu.ExecutorParameter).Args; | ||
| 299 | + | ||
| 300 | + var selectedtaskindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.ScheduledTaskManager.Function.CMD_TASKS); | ||
| 301 | + | ||
| 302 | + var menufolders = DisplayMSMQMenuFromXml(config, $"Select the MSMQ(s) to manage with function '{nameof(Enumerate)}'!", silent: true) | ||
| 303 | + .SetSelectionMode(Menu.SelectionMode.Single); | ||
| 304 | + | ||
| 305 | + Menu.Selection sr = menufolders.Select(selectedtaskindexes); | ||
| 306 | + if (sr.Result == Menu.SelectionResult.Exit) { return o; } | ||
| 307 | + else if (sr.Result == Menu.SelectionResult.None) { return o; } | ||
| 308 | + else if (sr.Result == Menu.SelectionResult.Error) { return o; } | ||
| 309 | + else if (sr.Result == Menu.SelectionResult.Ok) { } | ||
| 310 | + else { } | ||
| 311 | + foreach (var p in sr.SelectedParameterList) | ||
| 312 | + { | ||
| 313 | + MSMQ st = p.Parameters as MSMQ; | ||
| 314 | + try | ||
| 315 | + { | ||
| 316 | + var messageformatter = MSMQManagerCore.SetFormatter(st.Xml_Formatter); //new ActiveXMessageFormatter(); | ||
| 317 | + var encoding = MSMQManagerCore.SetEncoding(st.Xml_Encoding); // Encoding.UTF8; | ||
| 318 | + var fullpath = st.Xml_FullPath; | ||
| 319 | + | ||
| 320 | + using (var msmq = new MessageQueue(fullpath)) | ||
| 321 | + { | ||
| 322 | + msmq.Formatter = messageformatter; | ||
| 323 | + startenumeration: | ||
| 324 | + var enumerator = msmq.GetMessageEnumerator2(); | ||
| 325 | + int messageindex = 0; | ||
| 326 | + while (true) | ||
| 327 | + { | ||
| 328 | + try | ||
| 329 | + { | ||
| 330 | + var isnextmeessageavailable = enumerator.MoveNext(new TimeSpan(0, 0, 5)); | ||
| 331 | + if (!isnextmeessageavailable) { ColorConsole.WriteLine("No (more) message available....", ConsoleColor.White); break; } | ||
| 332 | + | ||
| 333 | + Message m = enumerator.Current; | ||
| 334 | + ColorConsole.WriteLine("Processing message....", ConsoleColor.White); | ||
| 335 | + | ||
| 336 | + string msgBody = null; | ||
| 337 | + if (m.Formatter is XmlMessageFormatter) | ||
| 338 | + { | ||
| 339 | + ((XmlMessageFormatter)m.Formatter).TargetTypes = new Type[] { typeof(string), }; | ||
| 340 | + msgBody = (string)m.Body; | ||
| 341 | + } | ||
| 342 | + else | ||
| 343 | + { | ||
| 344 | + if (encoding == null) { msgBody = (string)m.Body; } | ||
| 345 | + else { msgBody = (new StreamReader(m.BodyStream, encoding)).ReadToEnd(); } | ||
| 346 | + } | ||
| 347 | + var msglabel = m.Label; | ||
| 348 | + ColorConsole.WriteLine($"Current message in MSMQ:{st.Xml_Name}", ConsoleColor.Green); | ||
| 349 | + ColorConsole.WriteLine($" Body: {msgBody}", ConsoleColor.Yellow); | ||
| 350 | + ColorConsole.WriteLine($" Label: {msglabel}", ConsoleColor.Yellow); | ||
| 351 | + | ||
| 352 | + var nextoption = ColorConsole.ReadLine("[Enter]=Move next, RC=Remove current and move next, RCR=Remove current, reset and move next, RESET=reset and move next or EX=Exit"); | ||
| 353 | + if (nextoption.ToLower() == "ex") { return o; } | ||
| 354 | + else if (nextoption.ToLower() == "reset") { enumerator.Reset(); } | ||
| 355 | + else if (nextoption.ToLower() == "rc") { enumerator.RemoveCurrent(); } | ||
| 356 | + else if (nextoption.ToLower() == "rcr") { enumerator.RemoveCurrent(); enumerator.Reset(); } | ||
| 357 | + } | ||
| 358 | + catch (Exception ex) { ColorConsole.WriteLine("B:"+ex.MessageNested(), ConsoleColor.Red); } | ||
| 359 | + } | ||
| 360 | + var repeatoption = ColorConsole.ReadLine("[Enter]=Repeat enumeration, EX=Exit"); | ||
| 361 | + if (repeatoption.ToLower() == "ex") { return o; } | ||
| 362 | + else { goto startenumeration; } | ||
| 363 | + } | ||
| 364 | + } | ||
| 365 | + catch (Exception ex) { ColorConsole.WriteLine(ex.MessageNested(), ConsoleColor.Red); } | ||
| 366 | + } | ||
| 367 | + return o; | ||
| 368 | + } | ||
| 369 | + | ||
| 294 | private static object Peek(object parameter, object o) | 370 | private static object Peek(object parameter, object o) |
| 295 | { | 371 | { |
| 296 | var config = (parameter as Menu.ExecutorParameter).GetConfig<MSMQManagerXmlProcessor>(); | 372 | var config = (parameter as Menu.ExecutorParameter).GetConfig<MSMQManagerXmlProcessor>(); |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
| @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | ||
| 32 | // You can specify all the values or you can default the Build and Revision Numbers | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
| 33 | // by using the '*' as shown below: | 33 | // by using the '*' as shown below: |
| 34 | // [assembly: AssemblyVersion("1.0.*")] | 34 | // [assembly: AssemblyVersion("1.0.*")] |
| 35 | -[assembly: AssemblyVersion("1.27.2.0")] | ||
| 36 | -[assembly: AssemblyFileVersion("1.27.2.0")] | 35 | +[assembly: AssemblyVersion("1.28.0.0")] |
| 36 | +[assembly: AssemblyFileVersion("1.28.0.0")] |