A Retransmit Client is the central point where missing updates are downloaded.
Note: Retransmit Client Sample is provided as well in the Data Manager Connect Distributions for Java and .NET. Available online for the closed user group at https://www.vwd.com/ .
using System;
using System.Collections.Generic;
using System.IO;
{
class SampleRetransmitClient : RetransmitClient
{
private readonly string _logConfigFilePath = Path.Combine(Environment.CurrentDirectory, "Configuration");
protected ConfigurationHelper configHelper;
private MessageSerializer m_messageSerializer;
long countUpdates;
public SampleRetransmitClient(string name) : base(name)
{
m_messageSerializer = new MessageSerializer();
}
public override void ProcessUpdates(List<UpdateMessage> updates)
{
foreach (UpdateMessage update in updates)
{
switch (update.MessageType)
{
case BaseBinaryMessage.MessageType.Proto:
StringField sf = (StringField)update.GetField(1);
if (sf.Value.Equals(MessageIdentifier.RetransmitStatusMessage))
{
RetransmitStatusMessage statusMessage = ProtobufMessageHelper.DeserializeMessage<RetransmitStatusMessage>(update, ref m_messageSerializer);
if (statusMessage != null)
{
switch (statusMessage.Status)
{
case RetransmitStatusType.RST_COMPLETED:
Console.WriteLine("Retransmit completed");
break;
case RetransmitStatusType.RST_ERROR:
Console.WriteLine("Retransmit Errror");
Console.WriteLine(statusMessage.StatusMessage);
break;
case RetransmitStatusType.RST_OK:
Console.WriteLine("Retransmit accepted");
break;
case RetransmitStatusType.RST_INPROGRESS:
Console.WriteLine("Retransmit in progress");
break;
case RetransmitStatusType.RST_PARAMSERROR:
Console.WriteLine(statusMessage.StatusMessage);
break;
}
}
}
break;
case BaseBinaryMessage.MessageType.PartialRecap:
case BaseBinaryMessage.MessageType.Recap:
case BaseBinaryMessage.MessageType.Update:
break;
default:
break;
}
Console.WriteLine(update.toMachineReadableOutput());
countUpdates++;
if (countUpdates == 1) Console.WriteLine("Retransmit: updates coming in...");
if (countUpdates % 1000 == 0) Console.WriteLine("Retransmit counter: " + countUpdates);
}
}
public void Dispose()
{
throw new NotImplementedException();
}
}
}