/// <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); }
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); }
internal SenderSettleMode GetField(int index, SenderSettleMode field, SenderSettleMode defaultValue = default(SenderSettleMode)) { if ((this.fields & (1 << index)) == 0) { return(defaultValue); } return(field); }
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); } } }
internal void SetField(int index, ref SenderSettleMode field, SenderSettleMode value) { this.fields |= (1 << index); field = value; }
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; } }