示例#1
0
 /// <summary>
 /// Initializes a sender link.
 /// </summary>
 /// <param name="session">The session within which to create the link.</param>
 /// <param name="name">The link name.</param>
 /// <param name="attach">The attach frame to send for this link.</param>
 /// <param name="onAttached">The callback to invoke when an attach is received from peer.</param>
 public SenderLink(Session session, string name, Attach attach, OnAttached onAttached)
     : base(session, name, onAttached)
 {
     this.settleMode = attach.SndSettleMode;
     this.outgoingList = new LinkedList();
     this.SendAttach(false, this.deliveryCount, attach);
 }
 /// <summary>
 /// Initializes a sender link.
 /// </summary>
 /// <param name="session">The session within which to create the link.</param>
 /// <param name="name">The link name.</param>
 /// <param name="attach">The attach frame to send for this link.</param>
 /// <param name="onAttached">The callback to invoke when an attach is received from peer.</param>
 public SenderLink(Session session, string name, Attach attach, OnAttached onAttached)
     : base(session, name, onAttached)
 {
     this.settleMode   = attach.SndSettleMode;
     this.outgoingList = new LinkedList();
     this.SendAttach(false, this.deliveryCount, attach);
 }
示例#3
0
        public static SettleMode SettleType(this Attach attach)
        {
            SenderSettleMode   value;
            ReceiverSettleMode receiverSettleMode;

            if (attach.SndSettleMode.HasValue)
            {
                value = (SenderSettleMode)attach.SndSettleMode.Value;
            }
            else
            {
                value = SenderSettleMode.Mixed;
            }
            SenderSettleMode senderSettleMode = value;

            if (attach.RcvSettleMode.HasValue)
            {
                receiverSettleMode = (ReceiverSettleMode)attach.RcvSettleMode.Value;
            }
            else
            {
                receiverSettleMode = ReceiverSettleMode.First;
            }
            ReceiverSettleMode receiverSettleMode1 = receiverSettleMode;

            if (senderSettleMode == SenderSettleMode.Settled)
            {
                return(SettleMode.SettleOnSend);
            }
            if (receiverSettleMode1 == ReceiverSettleMode.First)
            {
                return(SettleMode.SettleOnReceive);
            }
            return(SettleMode.SettleOnDispose);
        }
示例#4
0
        internal SenderSettleMode GetField(int index, SenderSettleMode field, SenderSettleMode defaultValue = default(SenderSettleMode))
        {
            if ((this.fields & (1 << index)) == 0)
            {
                return(defaultValue);
            }

            return(field);
        }
示例#5
0
        public static SettleMode SettleType(this Attach attach)
        {
            SenderSettleMode   ssm = attach.SndSettleMode.HasValue ? (SenderSettleMode)attach.SndSettleMode.Value : SenderSettleMode.Mixed;
            ReceiverSettleMode rsm = attach.RcvSettleMode.HasValue ? (ReceiverSettleMode)attach.RcvSettleMode.Value : ReceiverSettleMode.First;

            if (ssm == SenderSettleMode.Settled)
            {
                return(SettleMode.SettleOnSend);
            }
            else
            {
                if (rsm == ReceiverSettleMode.First)
                {
                    return(SettleMode.SettleOnReceive);
                }
                else
                {
                    return(SettleMode.SettleOnDispose);
                }
            }
        }
示例#6
0
 internal void SetField(int index, ref SenderSettleMode field, SenderSettleMode value)
 {
     this.fields |= (1 << index);
     field        = value;
 }
示例#7
0
        internal override void ReadField(ByteBuffer buffer, int index, byte formatCode)
        {
            switch (index)
            {
            case 0:
                this.linkName = Encoder.ReadString(buffer, formatCode);
                break;

            case 1:
                this.handle = Encoder.ReadUInt(buffer, formatCode);
                break;

            case 2:
                this.role = Encoder.ReadBoolean(buffer, formatCode);
                break;

            case 3:
                this.sndSettleMode = (SenderSettleMode)Encoder.ReadUByte(buffer, formatCode);
                break;

            case 4:
                this.rcvSettleMode = (ReceiverSettleMode)Encoder.ReadUByte(buffer, formatCode);
                break;

            case 5:
                this.source = Encoder.ReadObject(buffer, formatCode);
                break;

            case 6:
                this.target = Encoder.ReadObject(buffer, formatCode);
                break;

            case 7:
                this.unsettled = Encoder.ReadMap(buffer, formatCode);
                break;

            case 8:
                this.incompleteUnsettled = Encoder.ReadBoolean(buffer, formatCode);
                break;

            case 9:
                this.initialDeliveryCount = Encoder.ReadUInt(buffer, formatCode);
                break;

            case 10:
                this.maxMessageSize = Encoder.ReadULong(buffer, formatCode);
                break;

            case 11:
                this.offeredCapabilities = Encoder.ReadObject(buffer, formatCode);
                break;

            case 12:
                this.desiredCapabilities = Encoder.ReadObject(buffer, formatCode);
                break;

            case 13:
                this.properties = Encoder.ReadFields(buffer, formatCode);
                break;

            default:
                Fx.Assert(false, "Invalid field index");
                break;
            }
        }