public void TestAcknowledgeEventData()
{
const string Text = @"hello";
var udpClient1 = new UdpClient(0);
var udpClient2 = new UdpClient(0);
var dispatcher1 = new MxDispatcher(udpClient1);
var dispatcher2 = new MxDispatcher(udpClient2);
var port1 = ((IPEndPoint)udpClient1.Client.LocalEndPoint).Port;
var port2 = ((IPEndPoint)udpClient2.Client.LocalEndPoint).Port;
try
{
string receivedText = null;
bool acknowledged = false;
dispatcher1.MessageReceived +=
(sender, args) =>
{
receivedText = Encoding.ASCII.GetString(args.Payload);
};
dispatcher2.MessageAcknowledged += (sender, args) =>
{
acknowledged = true;
};
var client = dispatcher2.Connect(new IPEndPoint(IPAddress.Loopback, port1));
var clientGroup = dispatcher2.PlaceInGroup(client, "Group2");
this.SimulateNetworkCycles(4, dispatcher1, dispatcher2);
dispatcher2.Send(clientGroup, Encoding.ASCII.GetBytes(Text));
_assert.Null(receivedText);
this.SimulateNetworkCycles(8, dispatcher1, dispatcher2);
_assert.Equal(Text, receivedText);
_assert.True(acknowledged);
}
finally
{
dispatcher1.Close();
dispatcher2.Close();
}
}