Ejemplo n.º 1
0
            public void Run()
            {
                uint lastResponseCheckTime = Primitives.GetBabelMilliTicker();

                for (; ;)
                {
                    if (!Master.Started)
                    {
                        break;
                    }
                    try {
                        uint curTime = Primitives.GetBabelMilliTicker();
                        if (LnkPrt.HasTasks && (LnkPrt.NumTasks > 0))
                        {
                            LnkPrt.ServiceTasks(curTime, LinkTaskKind.Service);
                        }
                        if (LnkPrt.DoesIO)
                        {
                            if ((curTime - lastResponseCheckTime) > LnkPrt.ResponseInterval)
                            {
                                lastResponseCheckTime = curTime;
                                if (LnkPrt.HasRead)
                                {
                                    LnkPrt.HasRead = false;
                                    if (LnkPrt.IoNetIfDevice.GetComponentState() == ComponentState.Unresponsive)
                                    {
                                        LnkPrt.IoNetIfDevice.NotifyStateChange(ComponentState.Working);
                                    }
                                }
                                else if (LnkPrt.IoNetIfDevice.GetComponentState() == ComponentState.Working)
                                {
                                    LnkPrt.IoNetIfDevice.NotifyStateChange(ComponentState.Unresponsive);
                                }
                            }
                            if (LnkPrt.IoNetIfDevice.HasHeartBeat())
                            {
                                if (LnkPrt.GetWriteQueueSize() == 0)
                                {
                                    LnkPrt.LinkPing();
                                }
                            }
                            if (LnkPrt.LinkMissingQueue.Size() != 0)
                            {
                                LnkPrt.Monitor.LinkProtocol();
                            }
                        }
                        Thread.Sleep(LnkPrt.SchedulerInterval);
                    } catch (ThreadInterruptedException) {
                        break;
                    } catch (Exception) {
                    }
                }
            }
Ejemplo n.º 2
0
 public void PingLink()
 {
     IoNetIf.LinkPing();
 }