Ejemplo n.º 1
0
 public override void Stop()
 {
     Logger.Info <ScvManager>($"Ending ScvManager for {Id}...");
     Dispose();
     Logger.Info <ScvManager>($"ScvManager for {Id} Ended...");
     PS.Set(ProcessStates.Stopped);
 }
Ejemplo n.º 2
0
        protected void StopManagers(bool forced = false)
        {
            Logger.Info <SactaProxy>("Deteniendo Gestores.");

            Managers.ForEach(depEntry =>
            {
                if (forced)
                {
                    if (depEntry.IsMain)
                    {
                        (depEntry.Manager as PsiManager).EventActivity    -= OnPsiEventActivity;
                        (depEntry.Manager as PsiManager).EventSectRequest -= OnPsiEventSectorizationAsk;
                    }
                    else
                    {
                        (depEntry.Manager as ScvManager).EventActivity      -= OnScvEventActivity;
                        (depEntry.Manager as ScvManager).EventSectorization -= OnScvEventSectorization;
                    }
                }
                depEntry.Manager.Stop();
            });
            if (forced)
            {
                Managers.Clear();
            }

            PS.Set(ProcessStates.Stopped);
            Logger.Info <SactaProxy>("Gestores Detenidos.");
        }
Ejemplo n.º 3
0
 public override void Stop()
 {
     Logger.Info <PsiManager>($"Ending PsiManager...");
     Dispose();
     Logger.Info <PsiManager>($"PsiManager Ended...");
     PS.Set(ProcessStates.Stopped);
 }
Ejemplo n.º 4
0
        public override void Start()
        {
            Logger.Info <PsiManager>($"Starting PsiManager...");
            try
            {
                Listener1 = new UdpSocket(Lan1Listen);
                /** Para seleccionar correctamente la Interfaz de salida de las tramas MCAST */
                //Listener1.Base.MulticastLoopback = false;
                Listener1.Base.JoinMulticastGroup(IPAddress.Parse(Cfg.Comm.If1.McastGroup),
                                                  IPAddress.Parse(Cfg.Comm.If1.Ip));
                Listener1.Base.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 16);
                Listener1.NewDataEvent += OnDataReceived;
                Listener1.BeginReceive();

                Listener2 = new UdpSocket(Lan2Listen);
                /** Para seleccionar correctamente la Interfaz de salida de las tramas MCAST */
                //Listener2.Base.MulticastLoopback = false;
                Listener2.Base.JoinMulticastGroup(IPAddress.Parse(Cfg.Comm.If2.McastGroup),
                                                  IPAddress.Parse(Cfg.Comm.If2.Ip));
                Listener2.Base.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 16);
                Listener2.NewDataEvent += OnDataReceived;
                Listener2.BeginReceive();

                TickTimer           = new Timer(TimeSpan.FromSeconds(1).TotalMilliseconds);
                TickTimer.AutoReset = false;
                TickTimer.Elapsed  += OnTick;
                TickTimer.Enabled   = true;

                SendInitMsg();
                Logger.Info <PsiManager>($"PsiManager. Waiting for SCV Activity on {Cfg.Comm.If1.Ip}:{Cfg.Comm.ListenPort} / {Cfg.Comm.If2.Ip}:{Cfg.Comm.ListenPort}");
                Logger.Info <PsiManager>($"PsiManager. Sectores {Cfg.Sectorization.Sectors} Posiciones {Cfg.Sectorization.Positions}");
                PS.Set(ProcessStates.Running);
            }
            catch (Exception x)
            {
                Logger.Exception <PsiManager>(x, $"On PSI");
                Dispose();
                PS.SignalFatal <PsiManager>($"Excepcion en el Arranque => {x}", History());
            }
        }
Ejemplo n.º 5
0
        protected void StartManagers()
        {
            /** Chequear que no haya sectores o posiciones repetidas */
            var duplicatedSec = Cfg.Psi.Sectorization.SectorsList().GroupBy(s => s)
                                .Where(g => g.Count() > 1).Select(g => g.Key.ToString()).ToList();
            var duplicatedPos = Cfg.Psi.Sectorization.PositionsList().GroupBy(s => s)
                                .Where(g => g.Count() > 1).Select(g => g.Key.ToString()).ToList();
            var duplicatedVir = Cfg.Psi.Sectorization.VirtualsList().GroupBy(s => s)
                                .Where(g => g.Count() > 1).Select(g => g.Key.ToString()).ToList();

            TestDuplicated(duplicatedPos, duplicatedSec, duplicatedVir, () =>
            {
                Logger.Info <SactaProxy>($"Arrancando Gestores. ProtocolVersion => {Cfg.ProtocolVersion}, InCluster => {Cfg.InCluster}");
                // Solo arrancan los gestores cuando no hay duplicados.
                Managers.ForEach(dependency =>
                {
                    dependency.Manager.Start();
                });
                PS.Set(ProcessStates.Running);
                Logger.Info <SactaProxy>("Gestores Arrancados.");
            });
        }
Ejemplo n.º 6
0
        public override void Start()
        {
            Logger.Info <ScvManager>($"Starting ScvManager for {Id}...");
            try
            {
                Listener1 = new UdpSocket(Lan1Listen);
                /** Para seleccionar correctamente la Interfaz de salida de las tramas MCAST */
                Listener1.Base.MulticastLoopback = false;
                Listener1.Base.JoinMulticastGroup(IPAddress.Parse(Cfg.Comm.If1.McastGroup),
                                                  IPAddress.Parse(Cfg.Comm.If1.Ip));
                /** 20180731. Para poder pasar por una red de ROUTERS */
                Listener1.Base.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 16);
                Listener1.NewDataEvent += OnDataReceived;
                if (Version == 0)
                {
                    Listener2 = new UdpSocket(Lan2Listen);
                    /** Para seleccionar correctamente la Interfaz de salida de las tramas MCAST */
                    Listener2.Base.MulticastLoopback = false;
                    Listener2.Base.JoinMulticastGroup(IPAddress.Parse(Cfg.Comm.If2.McastGroup),
                                                      IPAddress.Parse(Cfg.Comm.If2.Ip));
                    /** 20180731. Para poder pasar por una red de ROUTERS */
                    Listener2.Base.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 16);
                    Listener2.NewDataEvent += OnDataReceived;
                }
                else
                {
                    Listener2 = null;
                    Listener1.Base.JoinMulticastGroup(IPAddress.Parse(Cfg.Comm.If2.McastGroup),
                                                      IPAddress.Parse(Cfg.Comm.If1.Ip));
                }

                Listener1.BeginReceive();
                if (Version == 0)
                {
                    Listener2.BeginReceive();
                }

                TickTimer           = new Timer(TimeSpan.FromSeconds(1).TotalMilliseconds);
                TickTimer.AutoReset = false;
                TickTimer.Elapsed  += OnTick;
                TickTimer.Enabled   = true;

                GlobalState = SactaState.WaitingSactaActivity;

                if (Version == 0)
                {
                    Logger.Info <ScvManager>($"ScvManager for {Id}. Waiting for Sacta Activity on {Cfg.Comm.If1.Ip}:{Cfg.Comm.ListenPort}, {Cfg.Comm.If2.Ip}:{Cfg.Comm.ListenPort} ...");
                }
                else
                {
                    Logger.Info <ScvManager>($"ScvManager for {Id}. Waiting for Sacta Activity on {Cfg.Comm.If1.Ip}:{Cfg.Comm.ListenPort} ...");
                }
                Logger.Info <PsiManager>($"ScvManager for {Id}. Sectores {Cfg.Sectorization.Sectors} Posiciones {Cfg.Sectorization.Positions}");
                PS.Set(ProcessStates.Running);
            }
            catch (Exception x)
            {
                Logger.Exception <ScvManager>(x, $"On {Cfg.Id}");
                Dispose();
                PS.SignalFatal <ScvManager>($"Excepcion en el Arranque {x}", History());
            }
        }