Пример #1
0
        private ICommunicationMessage _ExecuteNonQuery(ICommunicationMessage message)
        {
            CommandMsgV2 resp = new CommandMsgV2();

            resp.SeqID          = CommandProcessor.AllocateID();
            resp.TK_CommandType = Constants.TK_CommandType.RESPONSE;
            resp.SetValue(Constants.MSG_PARANAME_RESPONSE_TO, message.SeqID);
            resp.SetValue("ClientID", message.GetValue("ClientID"));
            resp.SetValue(Constants.MSG_PARANAME_RESULT, "OK");

            try
            {
                string cmd     = message.GetValue(Constants.MSG_PARANAME_RAWSQL).ToString();
                string catalog = message.GetValue(Constants.MSG_PARANAME_TABLECATALOG).ToString().ToUpper();
                string connstr = "";
                if (catalog == "SYS_DB")
                {
                    connstr = AlarmManager.instance().ConnString;
                }
                else if (catalog == "USER_DB")
                {
                    connstr = UserManager.instance().ConnString;
                }

                SqlHelper.ExecuteNonQuery(connstr, CommandType.Text, cmd);
            }
            catch (Exception ex)
            {
                resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK");
                resp.SetValue(Constants.MSG_PARANAME_REASON, ex.Message);
            }

            return(resp);
        }
Пример #2
0
        public Dictionary <long, AdapterInfo> GetTerminalInfos()
        {
            Dictionary <long, AdapterInfo> infos = new Dictionary <long, AdapterInfo>();

            AlarmManager.instance().GetAdaptersInfo(infos);
            return(infos);
        }
Пример #3
0
 public void UNAlarmServer_Init()
 {
     try
     {
         Timer_Log.Start();
         //Utilities.ReadNorthServerConf();
         CommandProcessor.instance().Start(true); // as server
         AlarmManager.instance().Prepare();
         Utilities.ReadAlarmConf();
         Run();
     }
     catch (Exception ex)
     {
         receiveLog("初始化告警管理服务时发生异常: " + ex.ToString());
     }
 }
Пример #4
0
        CommandMsgV2 _GetTabluarInfo(ICommunicationMessage message)
        {
            CommandMsgV2 resp = new CommandMsgV2();

            resp.SeqID          = CommandProcessor.AllocateID();
            resp.TK_CommandType = Constants.TK_CommandType.RESPONSE;
            resp.SetValue(Constants.MSG_PARANAME_RESPONSE_TO, message.SeqID);
            resp.SetValue("ClientID", message.GetValue("ClientID"));
            resp.SetValue(Constants.MSG_PARANAME_RESULT, "OK");
            resp.SetValue(Constants.MSG_PARANAME_CHARTRESULT, null);

            try
            {
                string filter = message.GetValue(Constants.MSG_PARANAME_TABLEFILTER).ToString();
                //string pkcolumn = message.GetValue(Constants.MSG_PARANAME_TABLEPKCOL).ToString();
                string tn = message.GetValue(Constants.MSG_PARANAME_TABLENAME).ToString();

                string catalog = message.GetValue(Constants.MSG_PARANAME_TABLECATALOG).ToString().ToUpper();
                string connstr = "";
                if (catalog == "SYS_DB")
                {
                    connstr = AlarmManager.instance().ConnString;
                }
                else if (catalog == "USER_DB")
                {
                    connstr = UserManager.instance().ConnString;
                }

                string cmd = "select * from " + tn;
                if (filter.Trim() != "")
                {
                    cmd += " where " + filter;
                }

                DataSet ds = new DataSet();
                SqlHelper.FillDataset(connstr, CommandType.Text, cmd, ds, new string[] { tn });
                ds.AcceptChanges();
                resp.SetValue(Constants.MSG_PARANAME_CHARTRESULT, ds.Tables[tn]);
            }
            catch (Exception ex)
            {
                resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK");
                resp.SetValue(Constants.MSG_PARANAME_REASON, ex.Message);
            }

            return(resp);
        }
        void _VerifyTerminalsStatus(ICommunicationMessage message)
        {
            C5.HashDictionary <long, AdapterInfo> ads = new C5.HashDictionary <long, AdapterInfo>();
            AlarmManager.instance().GetAdaptersInfo(ads);

            foreach (C5.KeyValuePair <long, AdapterInfo> info in ads)
            {
                try
                {
                    System.Net.IPEndPoint end = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(info.Value.Address), info.Value.ControllerPort);
                    if (end.Port == 0)
                    {
                        continue;
                    }
                    else
                    {
                        ICommClient comm = CommManager.instance().CreateCommClient <CommandMsgV2, TKMessageV2Extractor, TKMessageV2Encoder>("控制器",
                                                                                                                                            end.Address.ToString(), end.Port, 30, false, false);

                        if (!comm.Start())
                        {
                            // remove adapter
                            AlarmManager.instance().RemoveAdapterInfo(info.Key);
                        }
                        else
                        {
                            comm.Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                    DefLib.Util.Logger.Instance().SendLog(ex.ToString());
                }
            }

            CommandMsgV2 msg = new CommandMsgV2();

            msg.TK_CommandType = Constants.TK_CommandType.MON_GETTERMINALSINFO;
            msg.SeqID          = message.SeqID;
            msg.SetValue("ClientID", message.GetValue("ClientID"));

            CommandProcessor.instance().DispatchCommand(msg);
        }
Пример #6
0
        private ICommunicationMessage _GetTabluarVariantInfo(ICommunicationMessage message)
        {
            CommandMsgV2 resp = new CommandMsgV2();

            resp.SeqID          = CommandProcessor.AllocateID();
            resp.TK_CommandType = Constants.TK_CommandType.RESPONSE;
            resp.SetValue(Constants.MSG_PARANAME_RESPONSE_TO, message.SeqID);
            resp.SetValue("ClientID", message.GetValue("ClientID"));
            resp.SetValue(Constants.MSG_PARANAME_RESULT, "OK");
            resp.SetValue(Constants.MSG_PARANAME_CHARTRESULT, null);

            try
            {
                string cmd     = message.GetValue(Constants.MSG_PARANAME_RAWSQL).ToString();
                string catalog = message.GetValue(Constants.MSG_PARANAME_TABLECATALOG).ToString().ToUpper();
                string connstr = "";
                if (catalog == "SYS_DB")
                {
                    connstr = AlarmManager.instance().ConnString;
                }
                else if (catalog == "USER_DB")
                {
                    connstr = UserManager.instance().ConnString;
                }

                DataSet ds = new DataSet();
                SqlHelper.FillDataset(connstr, CommandType.Text, cmd, ds, new string[] { "result" });
                ds.AcceptChanges();
                resp.SetValue(Constants.MSG_PARANAME_CHARTRESULT, ds.Tables["result"]);
            }
            catch (Exception ex)
            {
                resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK");
                resp.SetValue(Constants.MSG_PARANAME_REASON, ex.Message);
            }

            return(resp);
        }
        CommandMsgV2 _StartAdapter(ICommunicationMessage message)
        {
            try
            {
                CommandMsgV2 resp = new CommandMsgV2();
                resp.TK_CommandType = Constants.TK_CommandType.RESPONSE;
                resp.SeqID          = CommandProcessor.AllocateID();
                resp.SetValue("ClientID", message.GetValue("ClientID"));
                resp.SetValue(Constants.MSG_PARANAME_RESPONSE_TO, message.SeqID);


                long adapterid = Convert.ToInt64(message.GetValue(Constants.MSG_PARANAME_ADAPTER_ID));

                C5.HashDictionary <long, AdapterInfo> ads = new C5.HashDictionary <long, AdapterInfo>();
                AlarmManager.instance().GetAdaptersInfo(ads);
                if (!ads.Contains(adapterid))
                {
                    resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK");
                    resp.SetValue(Constants.MSG_PARANAME_REASON, "采集器不存在.");
                    return(resp);
                }

                try
                {
                    CommandMsgV2 cmd = new CommandMsgV2();
                    cmd.SeqID          = CommandProcessor.AllocateID();
                    cmd.TK_CommandType = Constants.TK_CommandType.ADAPTER_START;
                    cmd.SetValue("ClientID", adapterid);
                    cmd.SetValue(Constants.MSG_PARANAME_ADAPTER_NAME, ads[adapterid].Name);

                    System.Net.IPEndPoint end = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ads[adapterid].Address), ads[adapterid].ControllerPort);
                    if (end.Port == 0)
                    {
                        resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK");
                        resp.SetValue(Constants.MSG_PARANAME_REASON, "不可远程控制的采集器");
                    }
                    else
                    {
                        ICommClient comm = CommManager.instance().CreateCommClient <CommandMsgV2, TKMessageV2Extractor, TKMessageV2Encoder>("控制器",
                                                                                                                                            end.Address.ToString(), end.Port, 30, false, false);

                        comm.Start();
                        ICommunicationMessage r2 = comm.SendCommand(cmd);
                        resp.SetValue(Constants.MSG_PARANAME_RESULT, r2.GetValue(Constants.MSG_PARANAME_RESULT));
                        comm.Close();
                    }
                }
                catch (Exception ex)
                {
                    resp.SetValue(Constants.MSG_PARANAME_RESULT, "NOK");
                    resp.SetValue(Constants.MSG_PARANAME_REASON, ex.Message);
                }

                return(resp);
            }
            catch (Exception ex)
            {
                Logger.Instance().SendLog(ex.ToString());
                return(null);
            }
        }
Пример #8
0
        private void _CommitTable(string catalog, DataTable dataTable, string tn, string pkcolumn)
        {
            DataTable newtable = dataTable.GetChanges();

            if (newtable == null)
            {
                return;
            }

            string connstr = "";

            if (catalog == "SYS_DB")
            {
                connstr = AlarmManager.instance().ConnString;
            }
            else if (catalog == "USER_DB")
            {
                connstr = UserManager.instance().ConnString;
            }

#if MYSQL
            MySqlConnection  conn = new MySqlConnection(connstr);
            MySqlTransaction tr   = null;
#else
            SqlConnection  conn = new SqlConnection(connstr);
            SqlTransaction tr   = null;
#endif

            try
            {
                conn.Open();
                tr = conn.BeginTransaction();

                string[]     pk    = pkcolumn.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                DataColumn[] pkcol = new DataColumn[pk.Length];
                for (int i = 0; i < pk.Length; ++i)
                {
                    pkcol[i] = dataTable.Columns[pk[i].Trim()];
                }

                dataTable.PrimaryKey = pkcol;
#if MYSQL
                SqlHelper.UpdateDataTable(tr, string.Format("select * from {0} limit 0,1", tn), dataTable);
#else
                SqlHelper.UpdateDataTable(tr, string.Format("select top 1 * from {0}", tn), dataTable);
#endif


                tr.Commit();
            }
            catch
            {
                try
                {
                    if (tr != null)
                    {
                        tr.Rollback();
                    }
                }
                catch { }

                throw;
            }
            finally
            {
                try
                {
                    conn.Close();
                }
                catch { }
            }
        }
Пример #9
0
 /// <summary>
 /// 关闭服务器
 /// </summary>
 public void Stop()
 {
     UserManager.instance().Stop();
     AlarmManager.instance().Stop();
     bRun = false;
 }
Пример #10
0
 /// <summary>
 /// 启动服务器
 /// </summary>
 private void Run()
 {
     bRun = true;
     AlarmManager.instance().Start();
     UserManager.instance().Start();
 }
Пример #11
0
        public void handleCommand(ICommunicationMessage message)
        {
            CommandMsgV2 resp = new CommandMsgV2();

            resp.TK_CommandType = Constants.TK_CommandType.RESPONSE;
            resp.SeqID          = CommandProcessor.AllocateID();
            resp.SetValue(Constants.MSG_PARANAME_RESPONSE_TO, message.SeqID);
            try
            {
                if (message.Contains("ClientID"))
                {
                    resp.SetValue("ClientID", message.GetValue("ClientID"));
                }
                else
                {
                    throw new Exception("No ClientID in incoming package.");
                }

                switch (message.TK_CommandType)
                {
                case Constants.TK_CommandType.SERVER_GETRUNTIMEINFO:
                {
                    Process p = Process.GetCurrentProcess();
                    resp.SetValue("PROCESSID", p.Id.ToString());
                    resp.SetValue("THREADCOUNT", p.Threads.Count.ToString());
                    resp.SetValue("MAX_THREADCOUNT", 30 + (AlarmManager.instance().MaxAdapters + AlarmManager.instance().MaxClients + AlarmManager.instance().MaxControllers) * 2);
                    resp.SetValue("PHYMEMORY", p.WorkingSet64.ToString());

                    /// SystemInfo使用了性能计数器,有可能构造不出来
                    ///
                    resp.SetValue("AVAIL_PHYMEMORY", 0);
                    resp.SetValue("MAX_PHYMEMORY", 0);
                    resp.SetValue("CPUUSAGE", 0);

                    try
                    {
                        resp.SetValue("AVAIL_PHYMEMORY", SystemInfo.Instance.MemoryAvailable);
                        resp.SetValue("MAX_PHYMEMORY", SystemInfo.Instance.PhysicalMemory);
                        resp.SetValue("CPUUSAGE", (int)SystemInfo.Instance.CpuLoad);
                    }
                    catch { }

                    resp.SetValue("STATUS", AlarmManager.instance().GetStatus().ToString());
                    resp.SetValue("STARTTIME", p.StartTime.ToString());
                    resp.SetValue("CPUTIME", ((long)p.TotalProcessorTime.TotalMinutes).ToString());
                    resp.SetValue("ALARMCLIENTS", AlarmManager.instance().GetAlarmClientsNum().ToString());
                    resp.SetValue("MAX_ALARMCLIENTS", AlarmManager.instance().MaxClients);
                    resp.SetValue("ADAPTERCLIENTS", AlarmManager.instance().GetAdapterClientsNum().ToString());
                    resp.SetValue("MAX_ADAPTERCLIENTS", AlarmManager.instance().MaxAdapters);
                    resp.SetValue("ACTIVEALARMNUM", AlarmManager.instance().GetActiveAlarmsNum().ToString());
                    resp.SetValue(Constants.MSG_PARANAME_RESULT, "OK");
                }
                break;

                case Constants.TK_CommandType.SERVER_GETCURLOG:
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (string s in GetCurrentLog())
                    {
                        sb.Append(s);
                    }

                    resp.SetValue("CURLOG", sb.ToString());
                    resp.SetValue(Constants.MSG_PARANAME_RESULT, "OK");
                }
                break;

                case Constants.TK_CommandType.SERVER_GETLOGFILES:
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (string s in GetLogFiles())
                    {
                        sb.Append(s);
                        sb.Append(",");
                    }

                    if (sb.Length > 0)
                    {
                        sb.Remove(sb.Length - 1, 1);
                    }

                    resp.SetValue("LOGFILES", sb.ToString());
                    resp.SetValue(Constants.MSG_PARANAME_RESULT, "OK");
                }
                break;

                case Constants.TK_CommandType.MON_GETTERMINALSINFO:
                {
                    C5.HashDictionary <long, AdapterInfo> ads = new C5.HashDictionary <long, AdapterInfo>();
                    AlarmManager.instance().GetAdaptersInfo(ads);

                    resp.SetValue(Constants.MSG_PARANAME_TERMINALS_INFO, ads);
                }
                break;

                default:
                    break;
                }

                CommandProcessor.instance().DispatchCommand(resp);
            }
            catch (Exception ex)
            {
                Main_LogReceived("", ex.ToString());
            }
        }