示例#1
0
        public static byte[] SaveEnvelopeData(this IEnvelopeStreamer streamer, object message, Action <EnvelopeBuilder> build = null)
        {
            var builder = new EnvelopeBuilder(Guid.NewGuid().ToString());

            builder.AddItem(message);
            if (null != build)
            {
                build(builder);
            }
            return(streamer.SaveEnvelopeData(builder.Build()));
        }
示例#2
0
        void InnerSendBatch(Action <EnvelopeBuilder> configure, object[] messageItems)
        {
            var id = _idGenerator();

            var builder = new EnvelopeBuilder(id);

            foreach (var item in messageItems)
            {
                builder.AddItem(item);
            }

            configure(builder);
            var envelope = builder.Build();

            SendEnvelope(envelope);
        }
示例#3
0
        public static EnvelopeBuilder CloneProperties(string newId, ImmutableEnvelope envelope)
        {
            if (newId == envelope.EnvelopeId)
            {
                throw new InvalidOperationException("Envelope cloned for modification should have new identity.");
            }
            var builder = new EnvelopeBuilder(newId);

            builder.OverrideCreatedOnUtc(envelope.CreatedOnUtc);
            builder.DeliverOnUtc(envelope.DeliverOnUtc);

            foreach (var attribute in envelope.GetAllAttributes())
            {
                builder.AddString(attribute.Key, attribute.Value);
            }
            return(builder);
        }
示例#4
0
        protected override ImmutableEnvelope RoundtripViaSerializer(EnvelopeBuilder builder)
        {
            var bytes = _streamer.SaveEnvelopeData(builder.Build());

            return(_streamer.ReadAsEnvelopeData(bytes));
        }