📄 cmpp.cs
字号:
}
catch
{
i++;
}
if(i>=3)
{
break;
}
}
}
private void AddQueueItemToBufferQueue(QueueItem q)
{
this.RWL_TempQueue.AcquireWriterLock(-1);
this.MSMQ_CMPP3GateWayService_TempQueue.Send(q);
this.RWL_TempQueue.ReleaseWriterLock();
Thread.Sleep(1);
}
private void SetIfCanProc(bool ifCanProc)
{
this.RWL_IfCanProce.AcquireWriterLock(-1);
this.IfCanProc=ifCanProc;
this.RWL_IfCanProce.ReleaseWriterLock();
Thread.Sleep(1);
}
private bool GetIfCanProc()
{
this.RWL_IfCanProce.AcquireReaderLock(-1);
bool b=this.IfCanProc;
this.RWL_IfCanProce.ReleaseReaderLock();
return b;
}
private string GetValidTime(DateTime dt)
{
DateTime n=dt.AddHours(24);
return(n.Year.ToString().Substring(2) + n.Month.ToString().PadLeft(2,'0')+n.Day.ToString().PadLeft(2,'0')+n.Hour.ToString().PadLeft(2,'0')+n.Minute.ToString().PadLeft(2,'0')+n.Second.ToString().PadLeft(2,'0')+"032+");
}
public string GetAtTime(DateTime dt)
{
DateTime d=dt.AddMinutes(1);
return(d.Year.ToString().Substring(2) + d.Month.ToString().PadLeft(2,'0')+d.Day.ToString().PadLeft(2,'0')+d.Hour.ToString().PadLeft(2,'0')+d.Minute.ToString().PadLeft(2,'0')+d.Second.ToString().PadLeft(2,'0')+"032+");
}
private void StartThread()
{
this.thDeamon=new Thread(new ThreadStart(this.DeamonThread));
this.thDeamon.Start();//启动监控线程
}
#region
// private void SendISMGThread()
// {
// while(this.State==CMPPState.Started)
// {
// Thread.Sleep(10);
// if(this.isLogin)
// {
// ArrayList List=this.GetTop16OutQueueItem();
// if(List!=null&&List.Count>0)
// {
// int count=List.Count;
// for (int i=0;i<List.Count; i++)
// {
// QueueItem outitem=(QueueItem)List[i]; //取出每一个消息对象
// if(outitem!=null)
// {
// try
// {
// SendQueueItem(outitem); //发送每一个消息
// }
// catch(SocketException se)
// {
// //发送失败
//
// }
// }
// }
//
// }
// }
// }
// }
// private void SendQueueItem(QueueItem q)
// {
// uint seq=q.MsgSequence;
// uint MsgType=q.MsgType;
// try
// {
// switch(MsgType)
// {
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_ACTIVE_TEST:
// {
// MSG.CMPP_ActiveTest test=(MSG.CMPP_ActiveTest)q.Msg;
// byte[] bsValue=test.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_SUBMIT:
// {
// MSG.CMPP_Submit submit=(MSG.CMPP_Submit)q.Msg;
// byte[] bsValue=submit.ToBytes();
// //this.ProcWaitQueue(q,seq,0,WaitQueueProcType.ADDItem);
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_DELIVER_RESP:
// {
// MSG.CMPP_Deliver_Resp deliver_resp=(MSG.CMPP_Deliver_Resp)q.Msg;
// byte[] bsValue=deliver_resp.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_CANCEL:
// {
// MSG.CMPP_Cancel Cancel=(MSG.CMPP_Cancel)q.Msg;
// byte[] bsValue=Cancel.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_QUERY:
// {
// MSG.CMPP_Query Query=(MSG.CMPP_Query)q.Msg;
// byte[] bsValue=Query.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_ACTIVE_TEST_RESP:
// {
// MSG.CMPP_ActiveTest_Resp Test_Resp=(MSG.CMPP_ActiveTest_Resp)q.Msg;
// byte[] bsValue=Test_Resp.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_TERMINATE:
// {
// MSG.CMPP_Terminate Terminate=(MSG.CMPP_Terminate)q.Msg;
// byte[] bsValue=Terminate.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_TERMINATE_RESP:
// {
// MSG.CMPP_Terminate_Resp Terminate_resp=(MSG.CMPP_Terminate_Resp)q.Msg;
// byte[] bsValue=Terminate_resp.ToBytes();
// this.AddWaitQueueItem(q);
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// this._Stop(3);
// }
// break;
//
// }
// }
// catch
// {}
// }
// private ArrayList GetTop16OutQueueItem()
// {
// ArrayList al=new ArrayList();
// int ArrayLen=0;
// QueueItem q=this.ProcOutQueue(null,0,0,OutQueueProcType.GetAndDelByIndex);
// while(q!=null&&ArrayLen<16)
// {
// if(q!=null)
// {
// ArrayLen++;
// al.Add(q);
// }
// else
// {
// break;
// }
// q=this.ProcOutQueue(null,0,0,OutQueueProcType.GetAndDelByIndex);
// }
// if(ArrayLen>0)
// {
// return al;
// }
// else
// {
// return null;
// }
//
// }
// private void RecvISMGThread()
// {
// byte[] LastData=new byte[0];
// int RecvNullNum=0;
// byte[] RecvBuffer=new byte[4096];//4K缓冲区
// while(this.State==CMPPState.Started)
// {
// try
// {
//
// int index=0;
// RecvBuffer.Initialize();
// int RecvSize=this.SeverSocket.Receive(RecvBuffer,0,4096,SocketFlags.None);
// this.LockTcpUse(DateTime.Now);
// if(RecvSize==0)
// {
// RecvNullNum++;
// if(RecvNullNum>3)
// {
// RecvNullDataException rnde=new RecvNullDataException();
// throw(rnde);
// }
// }
// else
// {
// RecvNullNum=0;
// }
// byte[] Total;
// if(LastData.Length==0)
// {
// //上次无剩余
// Total=new byte[RecvSize];
// Array.Copy(RecvBuffer,0,Total,0,RecvSize);
// }
// else
// {
// Total=new byte[LastData.Length+RecvSize];
// LastData.CopyTo(Total,0);
// Array.Copy(RecvBuffer,0,Total,LastData.Length,RecvSize);
// }
// MSG.Header header;
// while(index<RecvSize)
// {
// if(RecvSize-index<12)
// {
// //已经没有完整的包头了
// LastData=new byte[RecvSize-index];
// Array.Copy(Total,index,LastData,0,LastData.Length);
// break;
// }
//
// header=new CMPP3.Client.MSG.Header(Total,index);
// uint MsgLength=header.MSGLength;
// if(RecvSize-index<MsgLength)
// {
// //有包头,但消息体不完整
// LastData=new byte[RecvSize-index];
// Array.Copy(Total,index,LastData,0,LastData.Length);
// break;
// }
// //到此则是完整的消息
// byte[] the_pk=new byte[header.MSGLength];
// Array.Copy(Total,index,the_pk,0,the_pk.Length);
// index+=the_pk.Length;
// uint seq;//取得下一个消息的流水号
// switch(header.Command_ID)
// {
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_ACTIVE_TEST_RESP:
// {
// //握手包的回复,产生接收到握手回复的事件
// //先将等待包中的此数据删除
// this.ProcWaitQueue(null,header.Sequence,0,CMPP3.Client.WaitQueueProcType.DelFromSequence);
// if(this.onReceiveTestRespHandler!=null)
// {
// MSG.CMPP_ActiveTest_Resp test_resp=new CMPP3.Client.MSG.CMPP_ActiveTest_Resp(the_pk,0);
// TestRespEventArgs e=new TestRespEventArgs(test_resp);
// this.onReceiveTestRespHandler(this,e);
// }
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_SUBMIT_RESP:
// {
// MSG.CMPP_Submit_Resp Submit_Resp=new CMPP3.Client.MSG.CMPP_Submit_Resp(the_pk,0);
// QueueItem q=this.ProcWaitQueue(null,header.Sequence,0,WaitQueueProcType.GetAndDelBySequence);
// if(q==null)
// {
// continue;
// }
// MSG.CMPP_Submit submit=(MSG.CMPP_Submit)q.Msg;
// if(this.onReceiveSubmitRespHandler!=null)
// {
// SubmitRespEventArgs e=new SubmitRespEventArgs(q.MsgSequence,submit,Submit_Resp);
// this.onReceiveSubmitRespHandler(this,e);
// }
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_DELIVER:
// {
// seq=header.Sequence;
// MSG.CMPP_Deliver deliver=new CMPP3.Client.MSG.CMPP_Deliver(the_pk,0);
// MSG.CMPP_Deliver_Resp deliver_resp=new CMPP3.Client.MSG.CMPP_Deliver_Resp(seq);
// deliver_resp.bsMsgID=deliver.bsMsgID;
// deliver_resp.Result=0;
// QueueItem q=new QueueItem();
// q.InQueueTime=DateTime.Now;
// q.Msg=deliver_resp;
// q.MsgSequence=seq;
// q.MsgType=(uint)MSG.CMPP_COMMAND_ID.CMPP_DELIVER_RESP;
// this.ProcOutQueue(q,seq,0,CMPP3.Client.OutQueueProcType.ADDItem);
// if(deliver.ifReport==1)
// {
// //状态报告
// if(this.onReceiveReportHandler!=null)
// {
// ReportEventArgs e=new ReportEventArgs(deliver);
// this.onReceiveReportHandler(this,e);
// }
// }
// else
// {
// //MO信息
// if(this.onReceiveNewShortMessageHandler!=null)
// {
// SMSEventArgs e=new SMSEventArgs(deliver);
// this.onReceiveNewShortMessageHandler(this,e);
// }
// }
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_CANCEL_RESP:
// {
// seq=header.Sequence;
// QueueItem q=this.ProcWaitQueue(null,seq,0,WaitQueueProcType.GetAndDelBySequence);
// MSG.CMPP_Cancel cancel=(MSG.CMPP_Cancel)q.Msg;
// MSG.CMPP_Cancel_Resp cancel_resp=new CMPP3.Client.MSG.CMPP_Cancel_Resp(the_pk,0);
// if(this.onReceiveConnectRespHandler!=null)
// {
// CancelRespEventArgs e=new CancelRespEventArgs(seq,cancel,cancel_resp);
// this.onReceiveCancelRespHandler(this,e);
// }
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_QUERY_RESP:
// {
// seq=header.Sequence;
// QueueItem q=this.ProcWaitQueue(null,seq,0,WaitQueueProcType.GetAndDelBySequence);
// MSG.CMPP_Query query=(MSG.CMPP_Query)q.Msg;
// MSG.CMPP_Query_Resp query_resp=new CMPP3.Client.MSG.CMPP_Query_Resp(the_pk,0);
// if(this.onReceiveQueryRespHandler!=null)
// {
// QueryRespEventArgs e=new QueryRespEventArgs(seq,query,query_resp);
// this.onReceiveQueryRespHandler(this,e);
// }
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_ACTIVE_TEST:
// {
// //接收到此包则立刻回复
// seq=header.Sequence;
// MSG.CMPP_ActiveTest_Resp test_resp=new CMPP3.Client.MSG.CMPP_ActiveTest_Resp(seq);
// test_resp.Recved=0;
// byte[] bsValue=test_resp.ToBytes();
// this.SeverSocket.Send(bsValue,0,bsValue.Length,SocketFlags.None);
// if(this.onReceiveTestHandler!=null)
// {
// TestEventArgs e=new TestEventArgs(seq);
// this.onReceiveTestHandler(this,e);
// }
// if(this.onSentTestRespHandler!=null)
// {
// TestRespEventArgs e=new TestRespEventArgs(test_resp);
// this.onSentTestRespHandler(this,e);
// }
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_TERMINATE_RESP:
// {
// //接收到网关服务器的退出回复
// seq=header.Sequence;
// if(this.onReceiveTerminateRespHandler!=null)
// {
// TerminateRespEventArgs e=new TerminateRespEventArgs(seq);
// this.onReceiveTerminateRespHandler(this,e);
// }
// this._Stop(4);
// }
// break;
// case (uint)MSG.CMPP_COMMAND_ID.CMPP_TERMINATE:
// {
// seq=header.Sequence;
// MSG.CMPP_Terminate_Resp Terminate_Resp=new CMPP3.Client.MSG.CMPP_Terminate_Resp(seq);
// QueueItem q=new QueueItem();
// q.InQueueTime=DateTime.Now;
// q.Msg=Terminate_Resp;
// q.MsgSequence=seq;
// q.MsgType=(uint)MSG.CMPP_COMMAND_ID.CMPP_TERMINATE_RESP;
// this.ProcOutQueue(q,seq,0,OutQueueProcType.ADDItem);
// if(this.onReceiveTerminateHandler!=null)
// {
// TerminateEventArgs e=new TerminateEventArgs();
// this.onReceiveTerminateHandler(this,e);
// }
// }
// break;
// }
// }
// }
// catch(RecvNullDataException rnde)
// {
// if(this.onErrorHandler!=null)
// {
// ErrorEventArgs _ea=new ErrorEventArgs();
// _ea.ErrorMessage="Socket异常";
// _ea.MyMessage="与网关的Socket连接异常,接收网关数据为0字节已超过3次,服务将自动停止,函数RecvISMGThread()";
// this.onErrorHandler(this,_ea);
// }
// this._Stop(2);
// break;
// }
// catch(SocketException se)
// {
// if(this.onSocketCloseHandler!=null)
// {
// SocketClosedEventArgs e=new SocketClosedEventArgs(this.OutQueue,this.WaitQueue);
// this.onSocketCloseHandler(this,e);
// }
// if(this.onErrorHandler!=null)
// {
// ErrorEventArgs e=new ErrorEventArgs();
// e.ErrorMessage=se.Message;
// e.MyMessage="Socket连接异常,函数RecvISMGThread()";
// this.onErrorHandler(this,e);
// }
// this._Stop(2);
// break;
// }
// catch(Exception ex)
// {
// if(this.onErrorHandler!=null)
// {
// ErrorEventArgs e=new ErrorEventArgs();
// e.ErrorMessage=ex.Message;
// e.MyMessage="程序异常,函数RecvISMGThread()";
// this.onErrorHandler(this,e);
// }
// }
// }
// }
#endregion
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -