コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        bool IsValid(SactaMsg msg)
        {
            Settings stts = Settings.Default;

            return((msg.DomainOrg == stts.ScvDomain) && (msg.DomainDst == stts.SactaDomain) &&
                   (msg.CenterOrg == stts.ScvCenter) && (msg.CenterDst == stts.SactaCenter) &&
                   (msg.UserDst == stts.SactaGroupUser) && stts.ScvUsers.Contains(msg.UserOrg.ToString()));
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="dg"></param>
        void OnNewData(object sender, DataGram dg)
        {
            try
            {
                MemoryStream          ms = new MemoryStream(dg.Data);
                CustomBinaryFormatter bf = new CustomBinaryFormatter();
                SactaMsg msg             = bf.Deserialize <SactaMsg>(ms);

                if (IsValid(msg))
                {
                    int net = (sender == _Comm[0] ? 0 : 1);
                    _LastScvReceived[net] = DateTime.Now;

                    switch (msg.Type)
                    {
                    case SactaMsg.MsgType.Presence:
                        _ActivityTimeOut = (uint)(((SactaMsg.PresenceInfo)(msg.Info)).ActivityTimeOutSg * 1000);
                        if (_ActivityTimeOut < 5)
                        {
                            _ActivityTimeOut = Settings.Default.ActivityTimeOut;
                        }
                        break;

                    case SactaMsg.MsgType.SectAsk:
                        SendSectorization(net, _SectorUcs, msg.UserOrg);
                        MainForm.LogMethod("INFO", net == 0 ? "SACTA1" : "SACTA2", "Recibida Peticion de Sectorizacion");
                        break;

                    case SactaMsg.MsgType.SectAnwer:
                        SactaMsg.SectAnswerInfo info = (SactaMsg.SectAnswerInfo)(msg.Info);
                        MainForm.LogMethod("INFO", net == 0 ? "SACTA1" : "SACTA2", String.Format("Sectorizacion V-{0}: {1}", info.Version, (info.Result == 1 ? "Implantada" : "Rechazada")));
                        break;

                    case SactaMsg.MsgType.Init:
                        MainForm.LogMethod("INFO", net == 0 ? "SACTA1" : "SACTA2", "Recibido MSG INIT");
                        _SeqNum = 0;
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                if (!_Disposed)
                {
                    MainForm.LogMethod("ERROR", "OnNewData", String.Format("Excepción al Procesar Datos Recibidos: {0}", ex.Message));
                }
            }
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sactanet"></param>
        /// <param name="sectorUcs"></param>
        /// <param name="ask"></param>
        void SendSectorization(int sactanet, string[] sectorUcs, ushort UserOrg)
        {
            Debug.Assert(sactanet == 0 || sactanet == 1);

            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();
            SactaMsg msg             = new SactaMsg(SactaMsg.MsgType.Sectorization, _SeqNum, _SectVersion, sectorUcs);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            byte[] user = BitConverter.GetBytes(UserOrg);
            Array.Reverse(user);
            Array.Copy(user, 0, data, 6, 2);

            _Comm[sactanet].Send(_EndPoint[sactanet], data);
            MainForm.LogMethod("INFO", sactanet == 0 ? "SACTA1" : "SACTA2", String.Format("Enviando Sectorizacion V-{2} a SCV {0} ({1})", UserOrg, strSect(sectorUcs), _SectVersion));
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        void SendPresence()
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();

            MemoryStream ms  = new MemoryStream();
            SactaMsg     msg = new SactaMsg(SactaMsg.MsgType.Presence, _SeqNum++);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            foreach (string sUser in Settings.Default.ScvUsers)
            {
                byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[0].Send(_EndPoint[0], data);
                _Comm[1].Send(_EndPoint[1], data);
            }

            _LastPresenceSended = DateTime.Now;
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        void SendInit()
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();
            SactaMsg msg             = new SactaMsg(SactaMsg.MsgType.Init, SactaMsg.InitId);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            foreach (string sUser in Settings.Default.ScvUsers)
            {
                MainForm.LogMethod("INFO", String.Format("Enviado MSG Init a SCV {0}", sUser));

                byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[0].Send(_EndPoint[0], data);
                _Comm[1].Send(_EndPoint[1], data);
            }

            _SeqNum = 0;
        }
コード例 #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sectorUcs"></param>
        /// <param name="ask"></param>
        void SendSectorization(string[] sectorUcs, SactaMsg ask)
        {
            CustomBinaryFormatter bf = new CustomBinaryFormatter();

            MemoryStream ms  = new MemoryStream();
            SactaMsg     msg = new SactaMsg(SactaMsg.MsgType.Sectorization, _SeqNum++, _SectVersion++, sectorUcs);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            if (ask != null)
            {
                MainForm.LogMethod("INFO", String.Format("Enviando Sectorizacion a SCV {0} ({1})", ask.UserOrg, strSect(sectorUcs)));

                byte[] user = BitConverter.GetBytes(ask.UserOrg);
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[0].Send(_EndPoint[0], data);
                _Comm[1].Send(_EndPoint[1], data);
            }
            else
            {
                foreach (string sUser in Settings.Default.ScvUsers)
                {
                    MainForm.LogMethod("INFO", String.Format("Enviando Sectorizacion V-{0} a SCV {1} ({2})", ((SactaMsg.SectInfo)(msg.Info)).Version, sUser, strSect(sectorUcs)));

                    byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                    Array.Reverse(user);
                    Array.Copy(user, 0, data, 6, 2);

                    _Comm[0].Send(_EndPoint[0], data);
                    _Comm[1].Send(_EndPoint[1], data);
                }
            }
        }
コード例 #7
0
        /// <summary>
        ///
        /// </summary>
        void SendInit(int sactanet)
        {
            Debug.Assert(sactanet == 0 || sactanet == 1);

            CustomBinaryFormatter bf = new CustomBinaryFormatter();
            MemoryStream          ms = new MemoryStream();
            SactaMsg msg             = new SactaMsg(SactaMsg.MsgType.Init, SactaMsg.InitId);

            bf.Serialize(ms, msg);
            byte[] data = ms.ToArray();

            foreach (string sUser in Settings.Default.ScvUsers)
            {
                byte[] user = BitConverter.GetBytes(UInt16.Parse(sUser));
                Array.Reverse(user);
                Array.Copy(user, 0, data, 6, 2);

                _Comm[sactanet].Send(_EndPoint[sactanet], data);
                MainForm.LogMethod("INFO", sactanet == 0 ? "SACTA1" : "SACTA2", String.Format("Enviado MSG Init a SCV {0}", sUser));

                //_Comm[1].Send(_EndPoint[1], data);
                //MainForm.LogMethod("INFO", "SACTA2", String.Format("Enviado MSG Init a SCV {0}", sUser));
            }
        }