Exemple #1
0
        /// <summary>
        /// 更新和写入服务启动信息
        /// </summary>
        /// <param name="server"></param>
        public void ExistsServerStartState(List <CENTER_STARTSTATE> list, CENTER_SERVER server)
        {
            if (server.RunState == "start")
            {
                CENTER_STARTSTATE startstate = new CENTER_STARTSTATE();
                startstate.DTime       = server.DTime;
                startstate.ProjectName = server.ProjectName;
                startstate.PublicIP    = server.PublicIP;
                startstate.RunTime     = server.RunTime;

                list.Add(startstate);

                //写入
                bool b = PublicBD.db.AddCENTER_STARTSTATE(startstate);
            }
            else
            {
                var ser = from s in list where s.ProjectName == server.ProjectName && s.PublicIP == server.PublicIP && s.DTime == server.SrartTime select s;
                lock (list)
                {
                    if (ser.Count() > 0)
                    {
                        ser.First().RunTime = server.RunTime;
                        //更新
                        bool b = PublicBD.db.UdpCENTER_STARTSTATE(ser.First(), " where ProjectName='" + server.ProjectName + "' and PublicIP='" + server.PublicIP + "' and  CONVERT(varchar(100), DTime, 120) like '%" + server.SrartTime.ToString("yyyy-MM-dd HH:mm:ss") + "%'");
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 解析符合条件的报文
        /// </summary>
        /// <param name="data">数据报</param>
        /// <returns></returns>
        public CENTER_SERVER GetServer(byte[] data)
        {
            CENTER_SERVER centerserver = null;
            string        datastr      = Encoding.GetEncoding("gb2312").GetString(data).Replace("\r", "").Replace("\n", "");

            Console.WriteLine(datastr);
            //datastr = "0d0h0m20s|0|bj|218|127.0.0.1|start";
            string[] Info = datastr.Split(new char[] { '|' });
            if (Info.Length == 6)
            {
                //dateDiff + "|" + RtuCount + "|" + project + "|" + RegistrationInfo + "|" + PublicIP + "|" +RunState;
                centerserver             = new CENTER_SERVER();
                centerserver.ProjectName = Info[2];
                centerserver.PublicIP    = Info[4];
                int RegisterTime = -1;
                int.TryParse(Info[3], out RegisterTime);
                centerserver.RegisterTime = RegisterTime;
                centerserver.RTUCount     = int.Parse(Info[1]);
                centerserver.DTime        = DateTime.Now;
                centerserver.RunTime      = Info[0];
                centerserver.RunState     = Info[5];
                centerserver.SrartTime    = centerserver.DTime;
            }

            return(centerserver);
        }
Exemple #3
0
        /// <summary>
        /// 写入RTU变化状态
        /// </summary>
        /// <param name="list">服务器信息列表</param>
        /// <param name="server">新服务器信息</param>
        private void AddRTUChange(CENTER_SERVER server)
        {
            CENTER_RTUCHANGE rtuchange = new CENTER_RTUCHANGE();

            rtuchange.DTime       = server.DTime;
            rtuchange.ProjectName = server.ProjectName;
            rtuchange.PublicIP    = server.PublicIP;
            rtuchange.RTUCount    = server.RTUCount;
            bool b = PublicBD.db.AddCENTER_RTUCHANGE(rtuchange);
        }
Exemple #4
0
        public void PacketArrived(TcpService.TcpServer TS)
        {
            //dateDiff + "|" + RtuCount + "|" + project + "|" + RegistrationInfo + "|" + PublicIP +"|" +RunState;

            string ServiceId = TS.ServiceID;
            ConcurrentQueue <TcpReceivedData> Qtrd = TS.TQ.Qtrd;
            List <TcpSocket> Ts = TS.Ts;
            ConcurrentQueue <TcpSendData> Qtsd = TS.TQ.Qtsd;


            while (Qtrd.Count > 0)
            {
                TcpReceivedData trd = null;
                Qtrd.TryDequeue(out trd);
                if (trd != null)
                {
                    CENTER_SERVER centerserver = pd.GetServer(trd.Data);
                    if (centerserver != null)
                    {
                        InsertNewSTCD(centerserver.ProjectName + centerserver.PublicIP, Service.ServiceEnum.NFOINDEX.TCP, TS);

                        //判断servers中是否存在,如存在更新信息
                        pd.ExistsServer(servers, centerserver);
                        //判断centerserver.RunState是否为start,如是写入库表CENTER_STARTSTATE
                        pd.ExistsServerStartState(StartState, centerserver);
                        //判断centerserver.RTUCount是否变化,如是写入库表CENTER_RTUCHANGE
                    }


                    //if (state == "H")
                    //{
                    //    InsertNewSTCD(STCD, Service.ServiceEnum.NFOINDEX.TCP, TS);
                    //    bool B = false;
                    //    //更新socket列表的stcd、socket
                    //    TcpBussiness.UpdSocket(TS, trd.SOCKET, STCD, out B);
                    //}
                    //else if (state == "C")
                    //{
                    //    var tcps = from t in Ts where t.STCD == STCD && t.TCPSOCKET != null select t;
                    //    List<TcpService.TcpSocket> Tcps = tcps.ToList<TcpService.TcpSocket>();
                    //    if (Tcps.Count() > 0)
                    //    {
                    //        foreach (var item in Tcps)
                    //        {
                    //            item.TCPSOCKET.Send(Encoding.ASCII.GetBytes(ask));
                    //        }
                    //    }
                    //}
                }
            }

            //throw new NotImplementedException();
        }
Exemple #5
0
        /// <summary>
        /// 比较列表中是否存在该服务器信息,并执行更新(存在)或插入(不存在)操作
        /// </summary>
        /// <param name="list">服务器信息列表</param>
        /// <param name="server">新服务器信息</param>
        public void ExistsServer(List <CENTER_SERVER> list, CENTER_SERVER server)
        {
            var ser = from s in list where s.ProjectName == server.ProjectName &&  s.PublicIP == server.PublicIP select s;

            lock (list)
            {
                if (ser.Count() > 0)
                {
                    if (ser.First().RTUCount != server.RTUCount)
                    {
                        AddRTUChange(server);
                    }


                    ser.First().RegisterTime = server.RegisterTime;
                    ser.First().RTUCount     = server.RTUCount;
                    ser.First().DTime        = server.DTime;
                    ser.First().RunTime      = server.RunTime;
                    ser.First().RunState     = server.RunState;
                    if (server.RunState == "start")
                    {
                        ser.First().SrartTime = server.DTime;
                    }
                    else
                    {
                        server.SrartTime = ser.First().SrartTime;
                    }

                    //更新
                    bool b = PublicBD.db.UpdCENTER_SERVER(server, " where ProjectName='" + server.ProjectName + "' and PublicIP='" + server.PublicIP + "'");
                }
                else
                {
                    list.Add(server);
                    //写入
                    bool b = PublicBD.db.AddCENTER_SERVER(server);

                    AddRTUChange(server);
                }
            }
        }
 /// <summary>
 /// 添加新服务到服务列表
 /// </summary>
 /// <param name="model">实体</param>
 /// <returns></returns>
 public bool AddCENTER_SERVER(CENTER_SERVER model)
 {
     return(dt.Insert <CENTER_SERVER>("CENTER_SERVER", model));
 }
 /// <summary>
 /// 更新服务列表状态
 /// </summary>
 /// <param name="model">实体</param>
 /// <param name="Where">条件</param>
 /// <returns></returns>
 public bool UpdCENTER_SERVER(CENTER_SERVER model, string Where)
 {
     return(dt.Update <CENTER_SERVER>("CENTER_SERVER", model, Where));
 }