Exemple #1
0
        private void Callback_FleetStateUpdate(FleetStateDto fleetState)
        {
            FleetState = fleetState;

            lock (kingpinStateMailboxes)
            {
                foreach (IKingpinState kingpinState in fleetState.KingpinStates)
                {
                    KingpinStateMailbox mailbox = kingpinStateMailboxes.FirstOrDefault(e => e.Key.Equals(kingpinState.IPAddress));

                    if (mailbox != null)
                    {
                        mailbox.Update(kingpinState);
                    }
                    else
                    {
                        KingpinStateMailbox mailBox = new KingpinStateMailbox(kingpinState.IPAddress, kingpinState);

                        kingpinStateMailboxes.Add(mailBox);
                        OnAdded(mailBox);
                    }
                }

                IEnumerable <IPAddress> activeIP = fleetState.KingpinStates.Select(e => e.IPAddress);
                IEnumerable <IPAddress> deadIP   = kingpinStateMailboxes.Select(e => e.Key).Except(activeIP).ToList();

                foreach (IPAddress ipAddress in deadIP)
                {
                    KingpinStateMailbox deadMailBox = kingpinStateMailboxes.First(e => e.Key == ipAddress);
                    kingpinStateMailboxes.Remove(deadMailBox);

                    OnRemoved(deadMailBox);
                }
            }
        }
Exemple #2
0
        public void OnCallback(FleetStateDto fleetState)
        {
            Action <FleetStateDto> handlers = FleetStateUpdate;

            if (handlers != null)
            {
                foreach (Action <FleetStateDto> handler in handlers.GetInvocationList())
                {
                    handler.BeginInvoke(fleetState, null, null);
                }
            }
        }
Exemple #3
0
        private static void FleetManagerClient_FleetStateUpdated(FleetStateDto fleetState)
        {
            if (fleetState == null)
            {
                throw new ArgumentNullException("fleetState");
            }

            Console.SetCursorPosition(0, 5);

            for (int i = 0; i < 5; i++) // Clears five lines of the console
            {
                Console.Write(new String(' ', Console.BufferWidth));
            }

            Console.SetCursorPosition(0, 5);

            Console.WriteLine($"Fleet size: {fleetState.KingpinStates.Count()}");

            foreach (IKingpinState kingpinState in fleetState.KingpinStates)
            {
                Console.WriteLine($"IP Address:{kingpinState.IPAddress} Tick:{kingpinState.Tick}, X:{kingpinState.X}, Y:{kingpinState.Y},  Heading:{kingpinState.Heading}");
            }
        }