Пример #1
0
        public ReturnCode GetOfferedDeadlineMissedStatus(
            ref OfferedDeadlineMissedStatus status)
        {
            ReturnCode result;

            ReportStack.Start();
            if (this.rlReq_isAlive)
            {
                if (status == null)
                {
                    status = new OfferedDeadlineMissedStatus();
                }
                GCHandle statusGCHandle = GCHandle.Alloc(status, GCHandleType.Normal);
                result = uResultToReturnCode(
                    User.Writer.GetDeadlineMissedStatus(
                        rlReq_UserPeer, 1, OfferedDeadlineMissedStatusMarshaler.CopyOut, GCHandle.ToIntPtr(statusGCHandle)));
                status = statusGCHandle.Target as OfferedDeadlineMissedStatus;
                statusGCHandle.Free();
            }
            else
            {
                result = DDS.ReturnCode.AlreadyDeleted;
            }
            ReportStack.Flush(this, result != ReturnCode.Ok);
            return(result);
        }
 private void PrivateOfferedDeadlineMissed(IntPtr entityData, IntPtr writerPtr, OfferedDeadlineMissedStatus status)
 {
     if (listener != null)
     {
         IDataWriter dataWriter = (IDataWriter)OpenSplice.SacsSuperClass.fromUserData(writerPtr);
         listener.OnOfferedDeadlineMissed(dataWriter, status);
     }
 }
Пример #3
0
 public ReturnCode GetOfferedDeadlineMissedStatus(
     ref OfferedDeadlineMissedStatus status)
 {
     if (status == null)
     {
         status = new OfferedDeadlineMissedStatus();
     }
     return(Gapi.DataWriter.get_offered_deadline_missed_status(GapiPeer, status));
 }
Пример #4
0
 // IDataWriterListener
 private void PrivateOfferedDeadlineMissed(
     IntPtr entityData,
     IntPtr writerPtr,
     OfferedDeadlineMissedStatus status)
 {
     if (listener != null)
     {
         IDataWriter dataWriter = (IDataWriter)OpenSplice.SacsSuperClass.fromUserData(writerPtr);
         listener.OnOfferedDeadlineMissed(dataWriter, status);
     }
 }
Пример #5
0
        internal static V_RESULT CopyOut(IntPtr fromPtr, IntPtr toPtr)
        {
            v_deadlineMissedInfo from = (v_deadlineMissedInfo)Marshal.PtrToStructure(fromPtr, type);

            GCHandle toGCHandle            = GCHandle.FromIntPtr(toPtr);
            OfferedDeadlineMissedStatus to = toGCHandle.Target as OfferedDeadlineMissedStatus;

            V_RESULT result = CopyOut(ref from, to);

            toGCHandle.Target = to;
            return(result);
        }
Пример #6
0
        public void TestGetOfferedDeadlineMissedStatus()
        {
            // Initialize entities
            DataWriterQos qos = new DataWriterQos();

            qos.Deadline.Period = new Duration
            {
                Seconds = 1,
            };
            DataWriter writer = _publisher.CreateDataWriter(_topic, qos);

            Assert.IsNotNull(writer);
            TestStructDataWriter dataWriter = new TestStructDataWriter(writer);

            Subscriber subscriber = _participant.CreateSubscriber();

            Assert.IsNotNull(subscriber);

            DataReader reader = subscriber.CreateDataReader(_topic);

            Assert.IsNotNull(reader);

            // Wait for discovery and write an instance
            bool found = writer.WaitForSubscriptions(1, 1000);

            Assert.IsTrue(found);

            dataWriter.Write(new TestStruct
            {
                Id = 1,
            });

            // After half second deadline should not be lost yet
            System.Threading.Thread.Sleep(500);

            OfferedDeadlineMissedStatus status = default;
            ReturnCode result = writer.GetOfferedDeadlineMissedStatus(ref status);

            Assert.AreEqual(ReturnCode.Ok, result);
            Assert.AreEqual(0, status.TotalCount);
            Assert.AreEqual(0, status.TotalCountChange);
            Assert.AreEqual(InstanceHandle.HandleNil, status.LastInstanceHandle);

            // After one second and a half one deadline should be lost
            System.Threading.Thread.Sleep(1000);

            result = writer.GetOfferedDeadlineMissedStatus(ref status);
            Assert.AreEqual(ReturnCode.Ok, result);
            Assert.AreEqual(1, status.TotalCount);
            Assert.AreEqual(1, status.TotalCountChange);
            Assert.AreNotEqual(InstanceHandle.HandleNil, status.LastInstanceHandle);
        }
Пример #7
0
 public override void OnOfferedDeadlineMissed(DataWriter writer, OfferedDeadlineMissedStatus status)
 {
     OfferedDeadlineMissed?.Invoke(writer, status);
 }
Пример #8
0
 /*! This event is raised when the DataWriter failed to write data
  * within the time period set in its DeadlineQosPolicy */
 public void OnOfferedDeadlineMissedHendler(DataWriter dataWriter, OfferedDeadlineMissedStatus status)
 {
     Console.WriteLine("In DataWriter " + dataWriter.Name +
                       " missed its offered deadline " + status.TotalCountChanged + " times.");
 }
Пример #9
0
 public static extern ReturnCode get_offered_deadline_missed_status(
     IntPtr _this,
     OfferedDeadlineMissedStatus status
     );
Пример #10
0
 public static extern ReturnCode get_offered_deadline_missed_status(
     IntPtr _this,
     OfferedDeadlineMissedStatus status
     );
Пример #11
0
 internal static V_RESULT CopyOut(ref v_deadlineMissedInfo from, OfferedDeadlineMissedStatus to)
 {
     to.TotalCount       = from.totalCount;
     to.TotalCountChange = from.totalChanged;
     return(v_handleToInstanceHandleMarshaler.CopyOut(ref from.instanceHandle, ref to.LastInstanceHandle));
 }