public DeliveryProperties(MessageDeliveryPriority Priority, MessageDeliveryMode DeliveryMode, long Ttl, long Timestamp, long Expiration, String Exchange, String RoutingKey, String ResumeId, long ResumeTtl, params Option[] options)
        {
            SetPriority(Priority);
            SetDeliveryMode(DeliveryMode);
            SetTtl(Ttl);
            SetTimestamp(Timestamp);
            SetExpiration(Expiration);
            SetExchange(Exchange);
            SetRoutingKey(RoutingKey);
            SetResumeId(ResumeId);
            SetResumeTtl(ResumeTtl);

            for (int i = 0; i < options.Length; i++)
            {
                switch (options[i])
                {
                case Option.DISCARD_UNROUTABLE: packing_flags |= 256; break;

                case Option.IMMEDIATE: packing_flags |= 512; break;

                case Option.REDELIVERED: packing_flags |= 1024; break;

                case Option.NONE: break;

                default: throw new Exception("invalid option: " + options[i]);
                }
            }
        }
 public DeliveryProperties SetPriority(MessageDeliveryPriority value)
 {
     _Priority      = value;
     packing_flags |= 2048;
     Dirty          = true;
     return(this);
 }
 public override void Read(IDecoder dec)
 {
     packing_flags = (int)dec.ReadUint16();
     if ((packing_flags & 2048) != 0)
     {
         _Priority = MessageDeliveryPriorityGetter.Get(dec.ReadUint8());
     }
     if ((packing_flags & 4096) != 0)
     {
         _DeliveryMode = MessageDeliveryModeGetter.Get(dec.ReadUint8());
     }
     if ((packing_flags & 8192) != 0)
     {
         _Ttl = dec.ReadUint64();
     }
     if ((packing_flags & 16384) != 0)
     {
         _Timestamp = dec.ReadDatetime();
     }
     if ((packing_flags & 32768) != 0)
     {
         _Expiration = dec.ReadDatetime();
     }
     if ((packing_flags & 1) != 0)
     {
         _Exchange = dec.ReadStr8();
     }
     if ((packing_flags & 2) != 0)
     {
         _RoutingKey = dec.ReadStr8();
     }
     if ((packing_flags & 4) != 0)
     {
         _ResumeId = dec.ReadStr16();
     }
     if ((packing_flags & 8) != 0)
     {
         _ResumeTtl = dec.ReadUint64();
     }
 }