diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs index 6515249..c1829c4 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs @@ -16,6 +16,7 @@ using VRH.Common; using System.Xml.Linq; using System.Text.RegularExpressions; using System.ComponentModel; +using System.IO; namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS { @@ -728,28 +729,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS using (var msmq = new MessageQueue(msmqFullname)) { if (Count(msmq) == 0) { return null; } - - //frmA = new System.Messaging.ActiveXMessageFormatter(); - //frmA = new System.Messaging.BinaryMessageFormatter(); - //frmA = new System.Messaging.XmlMessageFormatter(); msmq.Formatter = messageformatter; - - Message m = msmq.Receive(new TimeSpan(0)); - label = m.Label; - //m.BodyStream.Position = 0; - //var sr = new System.IO.StreamReader(m.BodyStream, encoding); - //body = sr.ReadToEnd().Replace(((char)0).ToString(), ""); - // encoding = System.Text.Encoding.UTF8; - // encoding = System.Text.Encoding.UTF7; - // encoding = System.Text.Encoding.UTF32; - // encoding = System.Text.Encoding.Unicode; - // encoding = System.Text.Encoding.BigEndianUnicode; - // encoding = System.Text.Encoding.ASCII; - // encoding = System.Text.Encoding.Default; - body = encoding.GetString((byte[])m.Body); - return m; + Message msg = msmq.Receive(new TimeSpan(0)); + label = msg.Label; + body = GetBody(msg, encoding); + return msg; } } + + public static Message ReadLast(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label) { body = ""; @@ -758,28 +746,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS { if (Count(msmq) == 0) { return null; } - //frmA = new System.Messaging.ActiveXMessageFormatter(); - //frmA = new System.Messaging.BinaryMessageFormatter(); - //frmA = new System.Messaging.XmlMessageFormatter(); msmq.Formatter = messageformatter; - //Message m = msmq.Receive(new TimeSpan(0)); - var m = msmq.ReceiveByLookupId(MessageLookupAction.Last, 0, null); - label = m.Label; - body = encoding.GetString((byte[])m.Body); - - - //m.BodyStream.Position = 0; - - //// encoding = System.Text.Encoding.UTF8; - //// encoding = System.Text.Encoding.UTF7; - //// encoding = System.Text.Encoding.UTF32; - //// encoding = System.Text.Encoding.Unicode; - //// encoding = System.Text.Encoding.BigEndianUnicode; - //// encoding = System.Text.Encoding.ASCII; - //// encoding = System.Text.Encoding.Default; - //var sr = new System.IO.StreamReader(m.BodyStream, encoding); - //body = sr.ReadToEnd().Replace(((char)0).ToString(), ""); - return m; + var msg = msmq.ReceiveByLookupId(MessageLookupAction.Last, 0, null); + label = msg.Label; + body = GetBody(msg, encoding); + return msg; } } public static Message ReadById(string msmqFullname, long msgid, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label) @@ -791,23 +762,58 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS if (Count(msmq) == 0) { return null; } msmq.Formatter = messageformatter; - var m = msmq.ReceiveByLookupId(msgid); - label = m.Label; - body = encoding.GetString((byte[])m.Body); - return m; + var msg = msmq.ReceiveByLookupId(msgid); + label = msg.Label; + body = GetBody(msg, encoding); + return msg; } } + private static string GetBody(Message msg, Encoding encoding) + { + ////////////////////////////////////////////// + StreamReader reader; + string body; + if (msg.Formatter is XmlMessageFormatter) + { + ((XmlMessageFormatter)msg.Formatter).TargetTypes = new Type[] { typeof(string), }; + body = (string)msg.Body; + } + else + { + if (encoding == null) { body = (string)msg.Body; } + else { reader = new StreamReader(msg.BodyStream, encoding); body = reader.ReadToEnd(); } + } + ////////////////////////////////////////////// + //body = encoding.GetString((byte[])msg.Body); + ////////////////////////////////////////////////// + return body; + } public static void Send(string msmqFullname, string messagetosend, string messagelabel, IMessageFormatter messageformatter, Encoding encoding) { using (var msmq = new MessageQueue(msmqFullname)) { - ///frmA = new System.Messaging.ActiveXMessageFormatter(); - //enc = System.Text.Encoding.UTF8; msmq.Formatter = messageformatter; - byte[] encodedmessage = encoding.GetBytes(messagetosend); - - msmq.Send(encodedmessage, messagelabel); + Message msg = new System.Messaging.Message(); + SetBody(msg, messagetosend, messageformatter, encoding); + msg.Label = messagelabel; + msmq.Send(msg); + } + } + private static Message SetBody(Message msg, string messagetosend, IMessageFormatter messageformatter, Encoding encoding) + { + ////////////////////////////////////////////////////////////////////////// + msg.Formatter = messageformatter; + if (msg.Formatter is XmlMessageFormatter) { msg.Body = messagetosend; } + else + { + if (encoding == null) { msg.Body = messagetosend; } + else { msg.BodyStream = new MemoryStream(encoding.GetBytes(messagetosend)); } } + ////////////////////////////////////////////////////////////////////////// + //byte[] encodedmessage = encoding.GetBytes(messagetosend); + //msmq.Send(encodedmessage, messagelabel); + ////////////////////////////////////////////////////////////////////////// + return msg; } public static long Count(MessageQueue messageQueue) { diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs index d68dd5e..3425195 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.21.0.0")] -[assembly: AssemblyFileVersion("1.21.0.0")] +[assembly: AssemblyVersion("1.22.0.0")] +[assembly: AssemblyFileVersion("1.22.0.0")] -- libgit2 0.21.2