public void NotifyServer(EventDataType eventData)
        {
            lock (locker)
            {
                if ((build && eventData.EventMessage != ActionType.Cancel.ToString()) || (!build && eventData.EventMessage == ActionType.Cancel.ToString()))
                    return;

                if (eventData.EventMessage == ActionType.Triggered.ToString())
                {
                    build = true;
                    eventData.Minutes = time * interval / 1000;
                    Timer = new Timer(interval);
                    Timer.Elapsed += (sender, e) => Timer_Elapsed(sender, e, eventData.ClientName);
                    Timer.Enabled = true;
                    Timer.Start();
                }
                else//cancel
                {
                    time = timeInit;
                    build = false;
                    Timer.Stop();
                }

                SendNotification(eventData);
            }
        }
Пример #2
0
        public void NotifyServer(EventDataType eventData)
        {
            lock (locker)
            {
                var inactiveClients = new List<string>();
                foreach (var client in clients)
                {
                    if (client.Key != eventData.ClientName)
                    {
                        try
                        {
                            client.Value.BroadcastToClient(eventData);
                        }
                        catch (Exception ex)
                        {
                            inactiveClients.Add(client.Key);
                        }
                    }
                }

                if (inactiveClients.Count > 0)
                {
                    foreach (var client in inactiveClients)
                    {
                        clients.Remove(client);
                    }
                }
            }
        }
        private static void SendNotification(EventDataType eventData)
        {
            var inactiveClients = new List<string>();

            foreach (var client in clients)
            {
                //if (client.Key != eventData.ClientName)
                {
                    try
                    {
                        client.Value.BroadcastToClient(eventData);
                    }
                    catch (Exception ex)
                    {
                        inactiveClients.Add(client.Key);
                    }
                }
            }

            if (inactiveClients.Count > 0)
            {
                foreach (var client in inactiveClients)
                {
                    clients.Remove(client);
                }
            }
        }
        void Timer_Elapsed(object sender, ElapsedEventArgs e, string name)
        {
            time--;

            var eventData = new EventDataType
            {
                ClientName = name,
                EventMessage = time > 0 ? ActionType.Triggered.ToString() : ActionType.Build.ToString(),
                Minutes = time * interval / 1000
            };

            if (time == 0)
            {
                time = timeInit;
                build = false;
                Timer.Stop();
                //force build
                ForceBuild("172.21.2.66", "Vacation Scheduler");
            }
            
            SendNotification(eventData);
            
        }