Inheritance: Apache.NMS.MSMQ.BaseMessage, IMapMessage
Beispiel #1
0
        /// <summary>
        /// Converts an MSMQ message body to the equivalent NMS map message
        /// body.
        /// </summary>
        /// <param name="message">Source MSMQ message.</param>
        /// <param name="answer">Target NMS map message.</param>
        public virtual void ConvertMapMessageBodyToNMS(Message message,
                                                       MapMessage answer)
        {
            byte[] buf = null;

            if (message.BodyStream != null && message.BodyStream.Length > 0)
            {
                buf = new byte[message.BodyStream.Length];
                message.BodyStream.Read(buf, 0, buf.Length);
            }

            answer.Body = PrimitiveMap.Unmarshal(buf);
        }
Beispiel #2
0
 /// <summary>
 /// Converts an NMS message body to the equivalent MSMQ message body.
 /// </summary>
 /// <param name="message">Source NMS message.</param>
 /// <param name="answer">Target MSMQ message.</param>
 protected virtual void ConvertMessageBodyToMSMQ(IMessage message, Message answer)
 {
     if (message is TextMessage)
     {
         TextMessage textMessage = message as TextMessage;
         byte[]      buf         = Encoding.UTF32.GetBytes(textMessage.Text);
         answer.BodyStream.Write(buf, 0, buf.Length);
         answer.AppSpecific = (int)NMSMessageType.TextMessage;
     }
     else if (message is BytesMessage)
     {
         BytesMessage bytesMessage = message as BytesMessage;
         bytesMessage.Reset();
         answer.BodyStream.Write(bytesMessage.Content, 0, bytesMessage.Content.Length);
         answer.AppSpecific = (int)NMSMessageType.BytesMessage;
     }
     else if (message is ObjectMessage)
     {
         ObjectMessage objectMessage = message as ObjectMessage;
         answer.Body        = objectMessage.Body;
         answer.AppSpecific = (int)NMSMessageType.ObjectMessage;
     }
     else if (message is MapMessage)
     {
         MapMessage   mapMessage = message as MapMessage;
         PrimitiveMap mapBody    = mapMessage.Body as PrimitiveMap;
         byte[]       buf        = mapBody.Marshal();
         answer.BodyStream.Write(buf, 0, buf.Length);
         answer.AppSpecific = (int)NMSMessageType.MapMessage;
     }
     else if (message is StreamMessage)
     {
         StreamMessage streamMessage = message as StreamMessage;
         answer.AppSpecific = (int)NMSMessageType.StreamMessage;
         // TODO: Implement
     }
     else if (message is BaseMessage)
     {
         answer.AppSpecific = (int)NMSMessageType.BaseMessage;
     }
     else
     {
         throw new Exception("unhandled message type");
     }
 }
Beispiel #3
0
        /// <summary>
        /// Creates an NMS message of appropriate type for the specified MSMQ
        /// message, and convert the message body if specified.
        /// </summary>
        /// <param name="message">MSMQ message.</param>
        /// <param name="convertBody">true if the message body must be
        /// converted.</param>
        /// <result>NMS message created for retrieving the MSMQ message.</result>
        protected virtual BaseMessage CreateNmsMessage(Message message,
                                                       bool convertBody)
        {
            BaseMessage result = null;

            if ((int)NMSMessageType.TextMessage == message.AppSpecific)
            {
                TextMessage textMessage = new TextMessage();

                if (convertBody)
                {
                    ConvertTextMessageBodyToNMS(message, textMessage);
                }

                result = textMessage;
            }
            else if ((int)NMSMessageType.BytesMessage == message.AppSpecific)
            {
                BytesMessage bytesMessage = new BytesMessage();

                if (convertBody)
                {
                    ConvertBytesMessageBodyToNMS(message, bytesMessage);
                }

                result = bytesMessage;
            }
            else if ((int)NMSMessageType.ObjectMessage == message.AppSpecific)
            {
                ObjectMessage objectMessage = new ObjectMessage();

                if (convertBody)
                {
                    ConvertObjectMessageBodyToNMS(message, objectMessage);
                }

                result = objectMessage;
            }
            else if ((int)NMSMessageType.MapMessage == message.AppSpecific)
            {
                MapMessage mapMessage = new MapMessage();

                if (convertBody)
                {
                    ConvertMapMessageBodyToNMS(message, mapMessage);
                }

                result = mapMessage;
            }
            else if ((int)NMSMessageType.StreamMessage == message.AppSpecific)
            {
                StreamMessage streamMessage = new StreamMessage();

                if (convertBody)
                {
                    ConvertStreamMessageBodyToNMS(message, streamMessage);
                }

                result = streamMessage;
            }
            else
            {
                BaseMessage baseMessage = new BaseMessage();
                result = baseMessage;
            }

            result.ReadOnlyBody = true;

            return(result);
        }
Beispiel #4
0
        protected virtual BaseMessage CreateNmsMessage(Message message)
        {
            BaseMessage result = null;

            if ((int)NMSMessageType.TextMessage == message.AppSpecific)
            {
                TextMessage textMessage = new TextMessage();
                string      content     = String.Empty;

                if (message.BodyStream != null && message.BodyStream.Length > 0)
                {
                    byte[] buf = null;
                    buf = new byte[message.BodyStream.Length];
                    message.BodyStream.Read(buf, 0, buf.Length);
                    content = Encoding.UTF32.GetString(buf);
                }

                textMessage.Text = content;
                result           = textMessage;
            }
            else if ((int)NMSMessageType.BytesMessage == message.AppSpecific)
            {
                byte[] buf = null;

                if (message.BodyStream != null && message.BodyStream.Length > 0)
                {
                    buf = new byte[message.BodyStream.Length];
                    message.BodyStream.Read(buf, 0, buf.Length);
                }

                BytesMessage bytesMessage = new BytesMessage();
                bytesMessage.Content = buf;
                result = bytesMessage;
            }
            else if ((int)NMSMessageType.ObjectMessage == message.AppSpecific)
            {
                ObjectMessage objectMessage = new ObjectMessage();

                objectMessage.Body = message.Body;
                result             = objectMessage;
            }
            else if ((int)NMSMessageType.MapMessage == message.AppSpecific)
            {
                byte[] buf = null;

                if (message.BodyStream != null && message.BodyStream.Length > 0)
                {
                    buf = new byte[message.BodyStream.Length];
                    message.BodyStream.Read(buf, 0, buf.Length);
                }

                MapMessage mapMessage = new MapMessage();
                mapMessage.Body = PrimitiveMap.Unmarshal(buf);
                result          = mapMessage;
            }
            else if ((int)NMSMessageType.StreamMessage == message.AppSpecific)
            {
                StreamMessage streamMessage = new StreamMessage();

                // TODO: Implement
                result = streamMessage;
            }
            else
            {
                BaseMessage baseMessage = new BaseMessage();

                result = baseMessage;
            }

            return(result);
        }