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); }
public Dictionary <long, AdapterInfo> GetTerminalInfos() { Dictionary <long, AdapterInfo> infos = new Dictionary <long, AdapterInfo>(); AlarmManager.instance().GetAdaptersInfo(infos); return(infos); }
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()); } }
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); }
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); } }
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 { } } }
/// <summary> /// 关闭服务器 /// </summary> public void Stop() { UserManager.instance().Stop(); AlarmManager.instance().Stop(); bRun = false; }
/// <summary> /// 启动服务器 /// </summary> private void Run() { bRun = true; AlarmManager.instance().Start(); UserManager.instance().Start(); }
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()); } }