void TestDuplicated(List <string> pos, List <string> sec, List <string> vir, Action continues)
 {
     if (pos.Count() > 0)
     {
         PS.SignalFatal <SactaProxy>($"Existen Id de Posiciones duplicadas => {String.Join(",", pos)}", History);
     }
     if (sec.Count() > 0)
     {
         PS.SignalFatal <SactaProxy>($"Existen Id de Sectores Reales duplicados => {String.Join(",", sec)}", History);
     }
     if (vir.Count() > 0)
     {
         PS.SignalFatal <SactaProxy>($"Existen Id de Sectores Virtuales duplicados => {String.Join(",", vir)}", History);
     }
     if (pos.Count() <= 0 && sec.Count() <= 0 && vir.Count() <= 0)
     {
         continues();
     }
 }
Beispiel #2
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());
            }
        }
Beispiel #3
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());
            }
        }