public DuplexAmqpLink(AmqpSession session, AmqpLinkSettings settings)
: base("duplex")
{
AmqpTrace.Provider.AmqpLogOperationInformational(this, TraceOperation.Create, "Create");
var senderSettings = new AmqpLinkSettings
{
Role = false,
LinkName = settings.LinkName + ":out",
SettleType = settings.SettleType,
Source = new Source(),
TotalLinkCredit = settings.TotalLinkCredit,
AutoSendFlow = settings.AutoSendFlow,
Target = settings.Target,
Properties = settings.Properties
};
this.sender = new SendingAmqpLink(session, senderSettings);
var receiverSettings = new AmqpLinkSettings
{
Role = true,
LinkName = settings.LinkName + ":in",
SettleType = settings.SettleType,
Source = settings.Source,
TotalLinkCredit = settings.TotalLinkCredit,
AutoSendFlow = settings.AutoSendFlow,
Target = new Target(),
Properties = settings.Properties
};
this.receiver = new ReceivingAmqpLink(session, receiverSettings);
this.receiver.SetTotalLinkCredit(receiverSettings.TotalLinkCredit, true); // WHY set both here AND on settings? Follow up with Xin.
this.sender.SafeAddClosed(this.OnLinkClosed);
this.receiver.SafeAddClosed(this.OnLinkClosed);
}