예제 #1
0
        public static Message MessageFromEnvelopes(CFXEnvelope [] envelopes, CFXCodec codec = CFXCodec.raw)
        {
            if (envelopes.Length == 1)
            {
                return(MessageFromEnvelope(envelopes.First(), codec));
            }

            List <CFXEnvelope> container = new List <CFXEnvelope>(envelopes);

            byte[] msgData = Encoding.UTF8.GetBytes(CFXJsonSerializer.SerializeObject(container));
            msgData = Encode(msgData, codec);

            Message msg = new Message(msgData);

            msg.Properties = new Amqp.Framing.Properties
            {
                MessageId    = Guid.NewGuid().ToString(),
                CreationTime = DateTime.Now,
                ContentType  = "application/json; charset=\"utf-8\""
            };

            if (codec == CFXCodec.gzip)
            {
                msg.Properties.ContentEncoding = "gzip";
            }

            msg.Header = new Amqp.Framing.Header()
            {
                Durable = AmqpCFXEndpoint.DurableMessages.Value
            };

            return(msg);
        }
예제 #2
0
        public static Message MessageFromEnvelopes(CFXEnvelope [] envelopes, bool compressed = false)
        {
            if (envelopes.Length == 1)
            {
                return(MessageFromEnvelope(envelopes.First()));
            }

            List <CFXEnvelope> container = new List <CFXEnvelope>(envelopes);

            byte[] msgData = Encoding.UTF8.GetBytes(CFXJsonSerializer.SerializeObject(container));
            if (compressed)
            {
                msgData = Compress(msgData);
            }

            Message msg = new Message(msgData);

            msg.Properties = new Amqp.Framing.Properties
            {
                MessageId    = Guid.NewGuid().ToString(),
                CreationTime = DateTime.Now
            };

            if (compressed)
            {
                msg.Properties.ContentEncoding = "CFX-COMPRESSED";
            }

            return(msg);
        }
예제 #3
0
        /// <summary>
        /// Converts multiple CFXEnvelope(s) into a single AMQP message
        /// </summary>
        /// <param name="envelopes">An array of CFX envelopes containing CFX messages</param>
        /// <param name="codec">The CODEC to be used</param>
        /// <param name="subjectFormat">The subject format to be applied.  If null, default is used.</param>
        /// <returns>An AMQP message</returns>
        public static Message MessageFromEnvelopes(CFXEnvelope [] envelopes, CFXCodec codec = CFXCodec.raw, string subjectFormat = null)
        {
            if (envelopes.Length < 1)
            {
                return(null);
            }
            else if (envelopes.Length == 1)
            {
                return(MessageFromEnvelope(envelopes.First(), codec, subjectFormat));
            }

            CFXEnvelope        env       = envelopes.First();
            List <CFXEnvelope> container = new List <CFXEnvelope>(envelopes);

            byte[] msgData = Encoding.UTF8.GetBytes(CFXJsonSerializer.SerializeObject(container));
            msgData = Encode(msgData, codec);

            Message msg = new Message();

            msg.BodySection = new Data()
            {
                Binary = msgData
            };
            SetHeaders(msg, env, codec, subjectFormat);

            return(msg);
        }
예제 #4
0
 public string ToJson(bool formatted = false)
 {
     return(CFXJsonSerializer.SerializeObject(this, formatted));
 }
예제 #5
0
 public string ToJson()
 {
     return(CFXJsonSerializer.SerializeObject(this));
 }
예제 #6
0
 public byte[] ToBytes()
 {
     return(Encoding.UTF8.GetBytes(CFXJsonSerializer.SerializeObject(this)));
 }