public IBaseMessage ExecuteForwardOnly(IPipelineContext pc, IBaseMessage inmsg)
        {
            TraceStream traceStream = new TraceStream(inmsg.BodyPart.GetOriginalDataStream(), true);

            Microsoft.BizTalk.Streaming.CForwardOnlyEventingReadStream eventStream =
                new Microsoft.BizTalk.Streaming.CForwardOnlyEventingReadStream(traceStream);

            eventStream.BeforeFirstReadEvent += new Microsoft.BizTalk.Streaming.BeforeFirstReadEventHandler(eventStream_BeforeFirstReadEvent);
            eventStream.ReadEvent            += new Microsoft.BizTalk.Streaming.ReadEventHandler(eventStream_ReadEvent);
            eventStream.AfterLastReadEvent   += new Microsoft.BizTalk.Streaming.AfterLastReadEventHandler(eventStream_AfterLastReadEvent);

            inmsg.BodyPart.Data = eventStream;

            return(inmsg);
        }
        public IBaseMessage ExecuteNotForwardOnly(IPipelineContext pc, IBaseMessage inmsg)
        {
            TraceStream traceStream = new TraceStream(inmsg.BodyPart.GetOriginalDataStream(), false);

            string     archivePath = Path.Combine(ArchiveTo, Guid.NewGuid().ToString() + ".txt");
            FileStream fileStream  = new FileStream(archivePath, FileMode.Create, FileAccess.Write);

            int length = 4096;

            Byte[] buffer   = new Byte[length];
            int    byteRead = traceStream.Read(buffer, 0, length);

            while (byteRead > 0)
            {
                fileStream.Write(buffer, 0, byteRead);
                byteRead = traceStream.Read(buffer, 0, length);
            }
            traceStream.Position = 0;
            inmsg.BodyPart.Data  = traceStream;
            fileStream.Close();

            return(inmsg);
        }