Exemple #1
0
 internal MessageStream(string brokerName, IModel model, MessageStreamer messageWriting)
 {
     this.brokerName     = brokerName;
     this.model          = model;
     body                = new Message[0];
     this.messageWriting = messageWriting;
 }
Exemple #2
0
        private void AssertMessageStreamer(MessageStreamer streamer, SifVersion version)
        {
            long         length = streamer.Length;
            MemoryStream ms     = new MemoryStream();

            streamer.CopyTo(ms);

            // Copy to a string for debugging purposes
            Console.WriteLine("********************************************************************");
            string data = Encoding.UTF8.GetString(ms.ToArray());

            Console.WriteLine("RawLength:{0}, Text Length:{1}", ms.Length, data.Length);
            Console.WriteLine(data);

            Assert.AreEqual(length, ms.Length, "Length property and final length are not the same.");


            // Try parsing the final stream to see if it is a valid message
            SifParser parser = SifParser.NewInstance();

            ms.Seek(0, SeekOrigin.Begin);
            StreamReader reader = new StreamReader(ms);
            SifElement   o      = parser.Parse(reader, null, SifParserFlags.None, version);

            Assert.IsNotNull(o);
        }
Exemple #3
0
        private void RunLengthTest(Stream[] payloads, bool error, bool replace, SifVersion version)
        {
            // This test loosely emulates what ResponseDelivery does when it builds up the MessageStreamer class
            //  Prepare SIF_Response
            SIF_Response rsp = new SIF_Response();

            rsp.SIF_MorePackets  = "No";
            rsp.SIF_RequestMsgId = "12345123451234512345";
            rsp.SIF_PacketNumber = 1;

            rsp.SifVersion = version;

            //  Write an empty "<SIF_ObjectData> </SIFObjectData>" for the
            //  MessageStreamer to fill in. If this is an errorPacket, the empty
            //  element is required per SIF Specifications.
            SIF_ObjectData placeholder = new SIF_ObjectData();

            placeholder.TextValue = " ";
            rsp.SIF_ObjectData    = placeholder;

            if (error)
            {
                SIF_Error err = new SIF_Error();
                err.TextValue = " ";
                rsp.SIF_Error = err;
            }


            //  Assign values to message header - this is usually done by
            //  MessageDispatcher.send() but because we're preparing a SIF_Response
            //  output stream we need to do it manually
            SIF_Header hdr = rsp.Header;

            hdr.SIF_Timestamp     = DateTime.Now;
            hdr.SIF_MsgId         = SifFormatter.GuidToSifRefID(Guid.NewGuid());
            hdr.SIF_SourceId      = "UnitTest";
            hdr.SIF_DestinationId = "123451234512345";

            //  Write SIF_Response -- without its SIF_ObjectData payload -- to a buffer
            using (MemoryStream envelope = new MemoryStream())
            {
                SifWriter writer = new SifWriter(envelope);
                writer.Write(rsp);
                writer.Flush();

                envelope.Seek(0, SeekOrigin.Begin);
                StreamReader reader      = new StreamReader(envelope, Encoding.UTF8);
                String       envelopeStr = reader.ReadToEnd();
                Console.Out.WriteLine(envelopeStr);

                envelope.Seek(0, SeekOrigin.Begin);

                using (
                    MessageStreamer ms =
                        new MessageStreamer(envelope, payloads, error ? "<SIF_Error>" : "<SIF_ObjectData>", replace))
                {
                    AssertMessageStreamer(ms, version);
                }
                envelope.Close();
            }
        }