Exemple #1
0
        /// <summary>
        /// Saves reference to message envelope as array of bytes.
        /// </summary>
        /// <param name="reference">The reference to to message envelope.</param>
        /// <returns>byte array that could be used to rebuild reference</returns>

        public static byte[] SaveEnvelopeReference(EnvelopeReference reference)
        {
            // important to use \r\n
            var builder = new StringBuilder();

            builder
            .Append("[cqrs-ref-r1]\r\n")
            .Append(reference.StorageContainer).Append("\r\n")
            .Append(reference.StorageReference);

            return(Encoding.Unicode.GetBytes(builder.ToString()));
        }
Exemple #2
0
 public static bool TryReadAsEnvelopeReference(byte[] buffer, out EnvelopeReference reference)
 {
     if (BytesStart(buffer, Reference))
     {
         var text = Encoding.Unicode.GetString(buffer);
         var args = text.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
         reference = new EnvelopeReference(args[1], args[2]);
         return(true);
     }
     reference = null;
     return(false);
 }
 CloudQueueMessage PrepareCloudMessage(ImmutableEnvelope builder)
 {
     var buffer = _streamer.SaveEnvelopeData(builder);
     if (buffer.Length < CloudQueueLimit)
     {
         // write message to queue
         return new CloudQueueMessage(buffer);
     }
     // ok, we didn't fit, so create reference message
     var referenceId = DateTimeOffset.UtcNow.ToString(DateFormatInBlobName) + "-" + builder.EnvelopeId;
     _cloudBlob.GetBlobReference(referenceId).UploadByteArray(buffer);
     var reference = new EnvelopeReference(builder.EnvelopeId, _cloudBlob.Uri.ToString(), referenceId);
     var blob = _streamer.SaveEnvelopeReference(reference);
     return new CloudQueueMessage(blob);
 }
        private CloudQueueMessage PrepareCloudMessage(byte[] buffer)
        {
            if (buffer.Length < AzureMessageOverflows.CloudQueueLimit)
            {
                // write queue to queue
                return(new CloudQueueMessage(buffer));
            }
            // ok, we didn't fit, so create reference queue
            var referenceId = DateTimeOffset.UtcNow.ToString(DateFormatInBlobName) + "-" + Guid.NewGuid().ToString().ToLowerInvariant();

            this._cloudBlob.GetBlockBlobReference(referenceId).UploadFromByteArray(buffer, 0, buffer.Length);
            var reference = new EnvelopeReference(this._cloudBlob.Uri.ToString(), referenceId);
            var blob      = AzureMessageOverflows.SaveEnvelopeReference(reference);

            return(new CloudQueueMessage(blob));
        }
        CloudQueueMessage PrepareCloudMessage(ImmutableEnvelope builder)
        {
            var buffer = _streamer.SaveEnvelopeData(builder);

            if (buffer.Length < CloudQueueLimit)
            {
                // write message to queue
                return(new CloudQueueMessage(buffer));
            }
            // ok, we didn't fit, so create reference message
            var referenceId = DateTimeOffset.UtcNow.ToString(DateFormatInBlobName) + "-" + builder.EnvelopeId;

            _cloudBlob.GetBlobReference(referenceId).UploadByteArray(buffer);
            var reference = new EnvelopeReference(builder.EnvelopeId, _cloudBlob.Uri.ToString(), referenceId);
            var blob      = _streamer.SaveEnvelopeReference(reference);

            return(new CloudQueueMessage(blob));
        }
 public bool TryReadAsEnvelopeReference(byte[] buffer, out EnvelopeReference reference)
 {
     if (BytesStart(buffer, Reference))
     {
         var text = Encoding.Unicode.GetString(buffer);
         var args = text.Split(new[] {"\r\n"}, StringSplitOptions.RemoveEmptyEntries);
         reference = new EnvelopeReference(args[1], args[2], args[3]);
         return true;
     }
     reference = null;
     return false;
 }
        public byte[] SaveEnvelopeReference(EnvelopeReference reference)
        {
            // important to use \r\n
            var builder = new StringBuilder();
            builder
                .Append("[cqrs-ref-r1]\r\n")
                .Append(reference.EnvelopeId).Append("\r\n")
                .Append(reference.StorageContainer).Append("\r\n")
                .Append(reference.StorageReference);

            return Encoding.Unicode.GetBytes(builder.ToString());
        }