public static void saveStreamMessageSql(string tableName) { string strsql = null; streamMessagePool._stream_message user_field = new streamMessagePool._stream_message(); FieldInfo[] fields = user_field.GetType().GetFields(); strsql = kpiCommonClass.createListTable(fields); strsql = "create table " + tableName + " (" + strsql + " ) "; streamMessagePool .Acc.RunNoQuery(strsql); foreach (streamMessagePool._stream_message sm in streamMessagePool.ml) { strsql = kpiCommonClass.insertListTable(fields, sm); strsql = "insert into " + tableName + " values(" + strsql + ")"; streamMessagePool .Acc.RunNoQuery(strsql); } }
public static void open_iu_cs_file() { int file_line_number = 0; string file_line_detail = null; string line_detail = null;//消息行号 int line_number = 0;//消息行号 int read_message = 0;//是否读入消息 int read_sctp = 0;//读入的消息是否有组包 StreamReader rd = new StreamReader(streamMessagePool.signallingFilePath); rd.BaseStream.Seek(0, SeekOrigin.Begin); Queue<string> q = new Queue<string>(); while (rd.Peek() >= 0) { GC.Collect(); Application.DoEvents(); //MemoryStream ms = new MemoryStream(); //StreamWriter sw = new StreamWriter(ms); while (file_line_number < line_total_number + line_number && file_line_number >= line_number)//在此分次读取 { file_line_detail = rd.ReadLine(); //sw.WriteLine(file_line_detail); q.Enqueue(file_line_detail); file_line_number++; } //sw.Flush(); //ms.Position = 0; //StreamReader reader = new StreamReader(ms); //reader.BaseStream.Seek(0, SeekOrigin.Begin); //while (reader.Peek() >= 0) pb = 0; while (q.Count > 0) { //line_detail = reader.ReadLine(); line_detail = q.Dequeue(); line_number++; read_message++; pb++; //在此调用父窗口的进度条,采用托管的方式传递 middleDelegate.DoSendPMessage(pb); Application.DoEvents(); if (line_detail != null) { if (line_detail.Length > 10) { if (line_detail.Substring(0, 2).IndexOf("Fr") != -1) { read_message = 0;//开关参数 read_sctp = 0; } } if (read_message == 0)//如果出现消息行,那么存入基本消息到内存 { message_number++; streamMessagePool._stream_message sm = new streamMessagePool._stream_message(); sm.message_begin_lineNumber = line_number;//消息开始位置 line_detail = regex.Replace(line_detail, " "); string[] ar = line_detail.Split(Convert.ToChar(" ")); sm.message_frame = message_number.ToString();//-----------------------------------------------> sm.message_number = ar[1].Trim(); fr = message_number; if (fr != 0) { //streamMessagePool.ml.ElementAt(fr - 1).message_end_lineNumber = line_number; streamMessagePool._stream_message _sm = s.Pop(); _sm.message_end_lineNumber = line_number; s.Push(_sm); } //streamMessagePool.ml.Add(sm); s.Push(sm); } if (line_detail.IndexOf("Stream Control Transmission Protocol") != -1) { read_sctp++; if (read_sctp != 1)//如果出现消息组包,那么直接复制前1条消息的内容 { message_number++; fr = message_number; streamMessagePool._stream_message sm = new streamMessagePool._stream_message(); //streamMessagePool._stream_message _sm = streamMessagePool.ml.ElementAt(fr - 1); streamMessagePool._stream_message _sm = s.Peek(); sm.message_begin_lineNumber = _sm.message_begin_lineNumber; sm.message_frame = message_number.ToString(); sm.message_number = _sm.message_number; sm.message_time = _sm.message_time; sm.message_ttime = _sm.message_ttime; sm.message_source = _sm.message_source; sm.message_destination = _sm.message_destination; sm.message_protocol = _sm.message_protocol; sm.message_info = _sm.message_info; sm.message_end_lineNumber = _sm.message_end_lineNumber; if (fr != 1) { _sm.message_end_lineNumber = line_number; } //streamMessagePool.ml.Add(sm); s.Push(sm); } } if (line_detail.Length > 2) { //ThreadPool.QueueUserWorkItem(new WaitCallback(infoName),line_detail); protocolName(line_detail); infoName(line_detail); } } } //reader.Dispose(); //sw.Dispose(); //ms.Dispose(); //streamMessagePool.ml.ElementAt(streamMessagePool.ml.Count() - 1).message_end_lineNumber = line_number; streamMessagePool._stream_message _smLast = s.Pop(); _smLast.message_end_lineNumber = line_number; s.Push(_smLast); } rd.Close(); rd.Dispose(); streamMessagePool.ml.AddRange(s.Reverse()); }
private void DataTableToList(DataTable dt) { //GC.Collect(); Stack<streamMessagePool._stream_message> s = new Stack<streamMessagePool._stream_message>(); int rc = dt.Rows.Count; for (int i = 0; i < rc; i++) { toolStripLabel1.Text = (int)(100 * i / rc) + "%"; toolStripLabel1.Visible = true; Application.DoEvents(); streamMessagePool._stream_message sm = new streamMessagePool._stream_message(); sm.message_number = dt.Rows[i]["message_number"].ToString(); sm.message_ttime = dt.Rows[i]["message_ttime"].ToString(); sm.message_time = dt.Rows[i]["message_time"].ToString(); sm.message_source = dt.Rows[i]["message_source"].ToString(); sm.message_destination = dt.Rows[i]["message_destination"].ToString(); sm.message_protocol = dt.Rows[i]["message_protocol"].ToString(); sm.message_info = dt.Rows[i]["message_info"].ToString(); sm.message_frame = dt.Rows[i]["message_frame"].ToString(); sm.message_begin_lineNumber = Int32.Parse(dt.Rows[i]["message_begin_lineNumber"].ToString()); sm.message_end_lineNumber = Int32.Parse(dt.Rows[i]["message_end_lineNumber"].ToString()); sm.message_sccp_slr = dt.Rows[i]["message_sccp_slr"].ToString(); sm.message_sccp_dlr = dt.Rows[i]["message_sccp_dlr"].ToString(); sm.message_gsm_a_imsi = dt.Rows[i]["message_gsm_a_imsi"].ToString(); sm.message_gsm_a_tmsi = dt.Rows[i]["message_gsm_a_tmsi"].ToString(); sm.message_rnc_id = dt.Rows[i]["message_rnc_id"].ToString(); sm.message_lac = dt.Rows[i]["message_lac"].ToString(); sm.message_id_type = dt.Rows[i]["message_id_type"].ToString(); sm.message_id_num = dt.Rows[i]["message_id_num"].ToString(); sm.message_radioNetwork = dt.Rows[i]["message_radioNetwork"].ToString(); sm.message_Cause = dt.Rows[i]["message_Cause"].ToString(); sm.CalledPartyNumber= dt.Rows[i]["CalledPartyNumber"].ToString(); sm.CallingPartyNumber= dt.Rows[i]["CallingPartyNumber"].ToString(); sm.CIC = dt.Rows[i]["CIC"].ToString(); s.Push(sm); } streamMessagePool.ml.AddRange(s.Reverse()); }