public void TestOnDataAvailable() { // Prepare status mask: // If a ParticipantListener has both on_data_on_readers() and on_data_available() callbacks enabled // (by turning on both status bits), only on_data_on_readers() is called. ReturnCode result = _participant.SetListener(_listener, StatusKind.DataAvailableStatus); Assert.AreEqual(ReturnCode.Ok, result); // Attach to the event int count = 0; DataReader reader = null; _listener.DataAvailable += (r) => { reader = r; count++; }; // Enable entities result = _writer.Enable(); Assert.AreEqual(ReturnCode.Ok, result); result = _reader.Enable(); Assert.AreEqual(ReturnCode.Ok, result); // Wait for discovery bool found = _writer.WaitForSubscriptions(1, 1000); Assert.IsTrue(found); // Write some instances int total = 5; for (int i = 1; i <= total; i++) { result = _dataWriter.Write(new TestStruct { Id = i, }); Assert.AreEqual(ReturnCode.Ok, result); result = _dataWriter.WaitForAcknowledgments(new Duration { Seconds = 5 }); Assert.AreEqual(ReturnCode.Ok, result); } Thread.Sleep(100); Assert.AreEqual(total, count); Assert.IsNotNull(reader); Assert.AreEqual(_reader, reader); }