public Sender(Log log, Statistics statistics, ProgramConfiguration programConfiguration)
: base(log, programConfiguration)
{
var destinationEndPoint =
new IPEndPoint(_programConfiguration.DestinationIpAddress, programConfiguration.DestinationPort);
_networkProtocol =
new UdpNetworkProtocol(
log, statistics, destinationEndPoint, UdpNetworkProtocolType.Udp, _programConfiguration.PacketSize,
_programConfiguration.VerifyOrder);
_sendDataTask =
new HighResolutionTimer
{
Mode = TimerMode.Periodic,
Period = 1000,
Resolution = 0,
IsAsync = true
};
_sendDataTask.Tick += (sender, args) => SendData();
var bindedIp =
MachineAddress.FirstOrDefault(i => i.Equals(_programConfiguration.SourceIpAddress)) ?? IPAddress.Any;
var bindedPort = programConfiguration.SourcePort ?? 0;
_networkProtocol.Bind(new IPEndPoint(bindedIp, bindedPort));
if (programConfiguration.NetworkBufferSize.HasValue)
_networkProtocol.SetSendBufferSize(programConfiguration.NetworkBufferSize.Value);
}