public void EnsureReliability(OutboundDisruptorEntry disruptorEntry, IMessage message, IEnumerable<MessageSubscription> concernedSubscriptions, MessageWireData messageData)
{
var messageOptions = _messageOptions[message.GetType().FullName];
if (messageOptions.ReliabilityLevel != ReliabilityLevel.FireAndForget)
foreach (var wireMessage in disruptorEntry.NetworkSenderData.WireMessages)
{
int seqNum;
if (!_endpointToSequenceNumber.TryGetValue(wireMessage.Endpoint, out seqNum))
{
_endpointToSequenceNumber.Add(wireMessage.Endpoint, 0);
seqNum = 0;
}
wireMessage.MessageData.SequenceNumber = seqNum;
_endpointToSequenceNumber[wireMessage.Endpoint] = seqNum + 1;
}
if (disruptorEntry.MessageTargetHandlerData.IsAcknowledgement)
{
SendAcknowledgementShadowMessages(message, concernedSubscriptions, disruptorEntry, messageData);
}
else
{
if (messageOptions.ReliabilityLevel == ReliabilityLevel.Persisted)
{
SendShadowMessages(concernedSubscriptions, messageData, disruptorEntry);
}
}
}