Exemplo n.º 1
0
        /// <summary>
        /// Interface method used by clients
        /// </summary>
        /// <param name="clientId">Calling clients' ID</param>
        public void Heartbeat(Guid clientId)
        {
            if (clientId == Guid.Empty)
            {
                return;
            }

            Debug.WriteLine("Received heartbeat from {0}", clientId);

            if (HeartbeatMonitorList.Contains(clientId))
            {
                HeartbeatMonitorList.Remove(clientId);
            }
            Storage.SubscriberSeen(clientId);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Send heartbeat messages to clients we haven't seen in a while
        /// </summary>
        void SendHeartBeat()
        {
            lock (lockHandle)
            {
                foreach (Subscriber sub in Storage.GetUnseenSubscribersSince(DateTime.Now - CheckHeartbeatAfter))
                {
                    if (HeartbeatMonitorList.Contains(sub.SubscriberId))
                    {
                        SubscriberTimedOut(sub);
                    }

                    else
                    {
                        SendHeartBeat(sub);
                    }
                }
            }
        }