public void TestAssertLiveliness() { // Initialize entities DataWriterQos qos = new DataWriterQos(); qos.Liveliness.Kind = LivelinessQosPolicyKind.ManualByTopicLivelinessQos; qos.Liveliness.LeaseDuration = new Duration { Seconds = 1, }; DataWriter writer = _publisher.CreateDataWriter(_topic, qos); Assert.IsNotNull(writer); // Manually assert liveliness for (int i = 0; i < 5; i++) { ReturnCode assertResult = writer.AssertLiveliness(); Assert.AreEqual(ReturnCode.Ok, assertResult); System.Threading.Thread.Sleep(500); } //// Check that no liveliness has been lost LivelinessLostStatus status = default; ReturnCode result = writer.GetLivelinessLostStatus(ref status); Assert.AreEqual(ReturnCode.Ok, result); Assert.AreEqual(0, status.TotalCount); Assert.AreEqual(0, status.TotalCountChange); }
public void TestGetLivelinessLostStatus() { // Initialize entities DataWriterQos dwQos = new DataWriterQos(); dwQos.Liveliness.Kind = LivelinessQosPolicyKind.ManualByTopicLivelinessQos; dwQos.Liveliness.LeaseDuration = new Duration { Seconds = 1, }; DataWriter writer = _publisher.CreateDataWriter(_topic, dwQos); Assert.IsNotNull(writer); TestStructDataWriter dataWriter = new TestStructDataWriter(writer); Assert.IsNotNull(dataWriter); // After half second liveliness should not be lost yet System.Threading.Thread.Sleep(500); LivelinessLostStatus status = default; ReturnCode result = writer.GetLivelinessLostStatus(ref status); Assert.AreEqual(ReturnCode.Ok, result); Assert.AreEqual(0, status.TotalCount); Assert.AreEqual(0, status.TotalCountChange); // After one second and a half one liveliness should be lost System.Threading.Thread.Sleep(1000); result = writer.GetLivelinessLostStatus(ref status); Assert.AreEqual(ReturnCode.Ok, result); Assert.AreEqual(1, status.TotalCount); Assert.AreEqual(1, status.TotalCountChange); }
public ReturnCode GetLivelinessLostStatus( ref LivelinessLostStatus status) { ReturnCode result; ReportStack.Start(); if (this.rlReq_isAlive) { if (status == null) { status = new LivelinessLostStatus(); } GCHandle statusGCHandle = GCHandle.Alloc(status, GCHandleType.Normal); result = uResultToReturnCode( User.Writer.GetLivelinessLostStatus( rlReq_UserPeer, 1, LivelinessLostStatusMarshaler.CopyOut, GCHandle.ToIntPtr(statusGCHandle))); status = statusGCHandle.Target as LivelinessLostStatus; statusGCHandle.Free(); } else { result = DDS.ReturnCode.AlreadyDeleted; } ReportStack.Flush(this, result != ReturnCode.Ok); return(result); }
private void PrivateLivelinessLost(IntPtr entityData, IntPtr writerPtr, LivelinessLostStatus status) { if (listener != null) { IDataWriter dataWriter = (IDataWriter)OpenSplice.SacsSuperClass.fromUserData(writerPtr); listener.OnLivelinessLost(dataWriter, status); } }
public ReturnCode GetLivelinessLostStatus( ref LivelinessLostStatus status) { if (status == null) { status = new LivelinessLostStatus(); } return(Gapi.DataWriter.get_liveliness_lost_status(GapiPeer, status)); }
internal static V_RESULT CopyOut(IntPtr fromPtr, IntPtr toPtr) { v_livelinessLostInfo from = (v_livelinessLostInfo)Marshal.PtrToStructure(fromPtr, type); GCHandle toGCHandle = GCHandle.FromIntPtr(toPtr); LivelinessLostStatus to = toGCHandle.Target as LivelinessLostStatus; V_RESULT result = CopyOut(ref from, to); toGCHandle.Target = to; return(result); }
public override void OnLivelinessLost(DataWriter writer, LivelinessLostStatus status) { LivelinessLost?.Invoke(writer, status); }
/*! This event is raised when the DataWriter failed to signal its liveliness * within the time specified by the LivelinessQosPolicy */ public void OnLivelinessLostHendler(DataWriter dataWriter, LivelinessLostStatus status) { Console.WriteLine("Liveliness Lost on DataWriter: " + dataWriter.Name); }
public static extern ReturnCode get_liveliness_lost_status( IntPtr _this, LivelinessLostStatus status );
internal static V_RESULT CopyOut(ref v_livelinessLostInfo from, LivelinessLostStatus to) { to.TotalCount = from.totalCount; to.TotalCountChange = from.totalChanged; return(V_RESULT.OK); }