www.pudn.com > FeeGateWaySrv.rar > GateWayService.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Threading;
using System.Text;
using System.Windows;
using System.Data.SqlClient;
using System.IO;
using System.Xml;
using System.Net;
namespace GateWayFroCMPP3
{
public class CMPP3GateWayService : System.ServiceProcess.ServiceBase
{
private CMPP3.Client.CMPP3Client cmppClient;//=new CMPP.client.CMPPClient();
///
/// 网关所在IP
///
private string CM_GateWayIP;//真实网关IP
///
/// 网关端口
///
private int CM_GateWayPort;//真实网关端口
///
/// 网关分配企业代码
///
private string SPID;
///
/// 网关分配服务号码
///
private string ServiceCode;//特服号
///
/// 登陆用户名
///
private string SendUserName;
///
/// 登陆密码
///
private string SendPassWord;
/**************************主服务程序配置*********************************/
private string GateWayID;
private string GateWayPWD;
private string IsmgServerName;
private int IsmgServerPort;
private System.Threading.AutoResetEvent ARE_ISMGConnect=new AutoResetEvent(false);
/***************************数据库连接配置*****************************/
private string DataBaseConnectString;
private System.Data.SqlClient.SqlConnection SqlConn;
private System.Data.SqlClient.SqlCommand SqlComm;
/***************************平台标志位及其他配置***********************/
private bool isStart=false;
private bool HandStop=false;
private byte[] LastData=new byte[0];
private ReaderWriterLock RWL_MSMQ_Temp=new ReaderWriterLock();
private System.Threading.AutoResetEvent ARE_Start=new AutoResetEvent(false);
private System.Threading.Thread ThreadStart;
///
/// 运营商编号
///
private int TelOperatorID;
///
/// 整型的网关号
///
private int iGatewayID;
private string path;
private ReaderWriterLock RWL_log=new ReaderWriterLock();
private System.Messaging.MessageQueue RecvSMBPQueue;
private System.Messaging.MessageQueue SendSMBPQueue;
private System.Threading.ReaderWriterLock RWL_SendSmbppQueue=new ReaderWriterLock();
//private ReaderWriterLock RWL_SendQueue=new ReaderWriterLock();
///
/// 受系统是否启动所控制
///
private bool IfCanSendMsg=false;
private ReaderWriterLock RWL_IfCanSendMsg=new ReaderWriterLock();
private System.Messaging.MessageQueue MSMQ_TempQueue;
private int ResendTimes=3;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
public CMPP3GateWayService()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();
// TODO: 在 InitComponent 调用后添加任何初始化
}
// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new CMPP3GateWayService() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent()
{
//
// CMPP3GateWayService
//
this.ServiceName = "CMPP3GateWayService";
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
///
/// 设置具体的操作,以便服务可以执行它的工作。
///
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
//Thread.Sleep(20000);
string queuepath=@".\Private$\SmbppSrvCmppGateWayTempQueue";
if(!System.Messaging.MessageQueue.Exists(queuepath))
{
//System.Messaging.MessageQueue.Delete(".\\Private$\\GateWayLogQueue");
System.Messaging.MessageQueue.Create(queuepath);
}
if(this.MSMQ_TempQueue!=null)
{
this.MSMQ_TempQueue.Close();
this.MSMQ_TempQueue.Dispose();
}
else
{
this.MSMQ_TempQueue=new System.Messaging.MessageQueue(queuepath);
this.MSMQ_TempQueue.Formatter=new System.Messaging.BinaryMessageFormatter(System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full, System.Runtime.Serialization.Formatters.FormatterTypeStyle.TypesAlways);
this.MSMQ_TempQueue.ReceiveCompleted+=new System.Messaging.ReceiveCompletedEventHandler(MSMQ_TempQueue_ReceiveCompleted);
}
this.path=System.Windows.Forms.Application.StartupPath;
this.MSMQ_TempQueue.BeginReceive();
//this.RWL_log.ReleaseLock();
this.TobeStart();
}
//准备启动
private void TobeStart()
{
this.HandStop=false;
this.ThreadStart=new Thread(new ThreadStart(this.ServiceStart));
this.ThreadStart.Start();
}
///
/// 启动线程避免管理器无法控制
///
private void ServiceStart()
{
while(!this.HandStop)
{
this.ARE_Start.Reset();
this.OneStart();
this.ARE_Start.WaitOne();
//启动失败,系统冷却60S
Thread.Sleep(60000);
}
}
///
/// 进行一次启动
///
private void OneStart()
{
this.isStart=true;
string log;
bool initcon=this.InitConfig();
if(!initcon)
{
//配置信息读取失败
log="配置信息读取失败";
this.WriteLogFile(log);
this.ARE_Start.Set();
return;
}
log="配置信息读取成功";
this.WriteLogFile(log);
#region <建立收发队列>
string RecvPath=@".\Private$\smbppSrvService_SMBPPToGateWay_"+this.GateWayID+"_queue";
if(!System.Messaging.MessageQueue.Exists(RecvPath))
{
System.Messaging.MessageQueue.Create(RecvPath);
}
this.RecvSMBPQueue=new System.Messaging.MessageQueue(RecvPath,false);
RecvSMBPQueue.Formatter=new System.Messaging.BinaryMessageFormatter(System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full, System.Runtime.Serialization.Formatters.FormatterTypeStyle.TypesAlways);
RecvSMBPQueue.ReceiveCompleted+=new System.Messaging.ReceiveCompletedEventHandler(RecvSMBPQueue_ReceiveCompleted);
string SendPath=@".\Private$\smbppSrvService_GateWayToSMBP_"+this.GateWayID+"_queue";
if(!System.Messaging.MessageQueue.Exists(SendPath))
{
System.Messaging.MessageQueue.Create(SendPath);
}
this.SendSMBPQueue=new System.Messaging.MessageQueue(SendPath,false);
SendSMBPQueue.Formatter=new System.Messaging.BinaryMessageFormatter(System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full, System.Runtime.Serialization.Formatters.FormatterTypeStyle.TypesAlways);
#endregion
IPAddress GateWayIPAddress=IPAddress.Parse(this.CM_GateWayIP);
this.cmppClient=new CMPP3.Client.CMPP3Client(this.SPID,this.SendUserName,this.SendPassWord,GateWayIPAddress,this.CM_GateWayPort,this.ServiceCode);
this.cmppClient.onRequestRestartHandler+=new CMPP3.Client.RequestRestartEventHandler(cmppClient_onRequestRestartHandler);
this.cmppClient.onSentTestHandler+=new CMPP3.Client.SentTestEventHandler(cmppClient_onSentTestHandler);
this.cmppClient.onReceiveTestRespHandler+=new CMPP3.Client.RecvTestRespEventHandler(cmppClient_onReceiveTestRespHandler);
this.cmppClient.onErrorHandler+=new CMPP3.Client.ErrorEventHandler(cmppClient_onErrorHandler);
this.cmppClient.onFailedItemDeletedHandler+=new CMPP3.Client.FailedItemDeletedEventHandler(cmppClient_onFailedItemDeletedHandler);
this.cmppClient.onLoginSuccessHandler+=new CMPP3.Client.LoginSuccEventHandler(cmppClient_onLoginSuccessHandler);
this.cmppClient.onReceiveCancelRespHandler+=new CMPP3.Client.RecvCancelRespEventHandler(cmppClient_onReceiveCancelRespHandler);
this.cmppClient.onReceiveConnectRespHandler+=new CMPP3.Client.RecvConnectRespEventHandler(cmppClient_onReceiveConnectRespHandler);
this.cmppClient.onReceiveNewShortMessageHandler+=new CMPP3.Client.RecvSMSEnventHandler(cmppClient_onReceiveNewShortMessageHandler);
this.cmppClient.onReceiveQueryRespHandler+=new CMPP3.Client.RecvQueryRespEventHandler(cmppClient_onReceiveQueryRespHandler);
this.cmppClient.onReceiveReportHandler+=new CMPP3.Client.RecvReportEventHandler(cmppClient_onReceiveReportHandler);
this.cmppClient.onReceiveSubmitRespHandler+=new CMPP3.Client.RecvSubmitRespEventHandler(cmppClient_onReceiveSubmitRespHandler);
this.cmppClient.onReceiveTerminateRespHandler+=new CMPP3.Client.RecvTerminateRespEventHandler(cmppClient_onReceiveTerminateRespHandler);
this.cmppClient.onSentTerminateHander+=new CMPP3.Client.SentTerminateEventHandler(cmppClient_onSentTerminateHander);
int state=this.cmppClient.Start();
if(state!=0)
{
string _log="连接或登陆网关失败,错误代码"+state.ToString();
this.WriteLogFile(_log);
this.cmppClient.Dispose();
this.RecvSMBPQueue.Close();
this.RecvSMBPQueue.Dispose();
this.SendSMBPQueue.Close();
this.SendSMBPQueue.Dispose();
this.ARE_Start.Set();
return;
}
else
{
string _log="登陆网关成功!";
this.WriteLogFile(_log);
}
this.SetIfCanSendMsg(true);
this.RecvSMBPQueue.BeginReceive();
}
private void SetIfCanSendMsg(bool b)
{
this.RWL_IfCanSendMsg.AcquireWriterLock(-1);
this.IfCanSendMsg=b;
this.RWL_IfCanSendMsg.ReleaseWriterLock();
Thread.Sleep(1);
}
private bool InitConfig()
{
//bool b=true;
string log="开始读取配置信息";
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
ReadConfig rc=new ReadConfig(this.path+"\\config.xml");
this.GateWayID=rc.GetValueByName("GateWay","GateWayID");
this.GateWayPWD=rc.GetValueByName("GateWay","GateWayPWD");
this.IsmgServerName=rc.GetValueByName("GateWay","IsmgServerName");
string _IsmgServerPort=rc.GetValueByName("GateWay","IsmgServerPort");
if(this.GateWayID==null||this.GateWayPWD==null||this.IsmgServerName==null)
{
log="读取配置失败";
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
return false;
}
try
{
this.IsmgServerPort=int.Parse(_IsmgServerPort);
}
catch
{
log="读取的IsmgServerPort不合法";
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
return false;
}
try
{
this.iGatewayID=int.Parse(GateWayID);
}
catch
{
log="读取的GateWayID不合法";
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
return false;
}
string dbip=rc.GetValueByName("DataBase","server");
string userid=rc.GetValueByName("DataBase","UserID");
string psw=rc.GetValueByName("DataBase","PassWord");
this.DataBaseConnectString="server="+dbip+";database=Smbp_JDG;user id="+userid+";password="+psw+";";
this.SqlConn=new SqlConnection(this.DataBaseConnectString);
this.SqlComm=new SqlCommand();
this.SqlComm.Connection=this.SqlConn;
bool b=true;
try
{
this.SqlConn.Open();
//
}
catch
{
}
finally
{
if(this.SqlConn.State==ConnectionState.Open)
{
this.SqlConn.Close();
string sqltxt="select * from Smbp_Gateway where GateWayID=@gw";
SqlDataAdapter sda=new SqlDataAdapter(sqltxt,this.SqlConn);
sda.SelectCommand.Parameters.Add("@gw",this.iGatewayID);
DataSet ds=new DataSet();
sda.Fill(ds);
if(ds.Tables[0].Rows.Count==0)
{
log="没有找到此网关的配置";
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
b=false;
}
else
{
try
{
this.SPID=(string)ds.Tables[0].Rows[0]["SPID"];
this.ServiceCode=(string)ds.Tables[0].Rows[0]["ServiceCode"];
this.SendUserName=(string)ds.Tables[0].Rows[0]["SendUserName"];
this.SendPassWord=(string)ds.Tables[0].Rows[0]["SendPassWord"];
this.CM_GateWayPort=(int)ds.Tables[0].Rows[0]["SendPort"];
this.CM_GateWayIP=(string)ds.Tables[0].Rows[0]["IPAddress"];
this.TelOperatorID=(int)ds.Tables[0].Rows[0]["TeleOperatorID"];
this.SPID=this.SPID.Trim();
this.ServiceCode=this.ServiceCode.Trim();
this.SendUserName=this.SendUserName.Trim();
this.SendPassWord=this.SendPassWord.Trim();
this.CM_GateWayIP=this.CM_GateWayIP.Trim();
}
catch(Exception ex)
{
log="从数据库中读取网关配置出错,原因-->"+ex.Message;
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
b=false;
}
}
}
else
{
log="数据库配置出错,连接数据库失败";
lock(this)
{
this.WriteLogFile(log);
//this.richTextBox1.Text+=DateTime.Now.ToLongTimeString()+" "+log+"\r\n";
}
b=false;
}
}
return b;
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
try
{
this.cmppClient.Stop();
}
catch
{}
try
{
this.ThreadStart.Abort();
}
catch
{}
try
{
this.MSMQ_TempQueue.Close();
}
catch
{}
try
{
this.SendSMBPQueue.Close();
}
catch
{}
try
{
this.RecvSMBPQueue.Close();
}
catch
{}
}
private void MSMQ_TempQueue_ReceiveCompleted(object sender, System.Messaging.ReceiveCompletedEventArgs e)
{
//接收到中间队列的数据
if(!e.AsyncResult.IsCompleted)
{
this.RWL_MSMQ_Temp.AcquireWriterLock(-1);
this.MSMQ_TempQueue.BeginReceive();
this.RWL_MSMQ_Temp.ReleaseWriterLock();
Thread.Sleep(1);
}
try
{
TempQueueItem TQI=(TempQueueItem)e.Message.Body;
switch(TQI.Type)
{
case TempQueueItemType.MOMessage:
{
MOMessage mo=(MOMessage)TQI.Item;
string xmlstring=MySerialize.GetQueueItemToSmbpp_MOMessageXMLString(mo);
MessageToSmbppItem mts=new MessageToSmbppItem();
mts.MessageType=3;
mts.XMLString=xmlstring;
string msgtosmbppsrv=MySerialize.GetQueueItemToSmbppXMLString(mts);
this.SendSmbppSrvMessage(msgtosmbppsrv);
}
break;
case TempQueueItemType.MtMessageResp:
{
MtMessageForMISCResp mmfmr=(MtMessageForMISCResp)TQI.Item;
string xmlstring=MySerialize.GetQueueItemToSmbpp_MtMessageRespXMLString(mmfmr);
MessageToSmbppItem mts=new MessageToSmbppItem();
mts.MessageType=2;
mts.XMLString=xmlstring;
string msgtosmbppsrv=MySerialize.GetQueueItemToSmbppXMLString(mts);
this.SendSmbppSrvMessage(msgtosmbppsrv);
}
break;
case TempQueueItemType.StatusReport:
{
StatusReport sr=(StatusReport)TQI.Item;
string xmlstring=MySerialize.GetQueueItemToSmbpp_StatusReportXMLString(sr);
MessageToSmbppItem mts=new MessageToSmbppItem();
mts.MessageType=4;
mts.XMLString=xmlstring;
string msgtosmbppsrv=MySerialize.GetQueueItemToSmbppXMLString(mts);
this.SendSmbppSrvMessage(msgtosmbppsrv);
}
break;
case TempQueueItemType.Log:
{
this.WriteLogFile(TQI.Item.ToString());
}
break;
}
}
catch
{}
this.RWL_MSMQ_Temp.AcquireWriterLock(-1);
this.MSMQ_TempQueue.BeginReceive();
this.RWL_MSMQ_Temp.ReleaseWriterLock();
Thread.Sleep(1);
}
private void WriteLogFile(string log)
{
lock(this)
{
string _log=DateTime.Now.ToLongTimeString()+" "+log;
if(!System.IO.Directory.Exists(this.path+"\\LOG"))
{
System.IO.Directory.CreateDirectory(this.path+"\\LOG");
}
FileStream fs=new FileStream(this.path+"\\LOG\\"+DateTime.Now.ToShortDateString()+".txt",FileMode.Append,FileAccess.Write,FileShare.Read);
StreamWriter sw=new StreamWriter(fs,Encoding.Unicode);
sw.WriteLine(_log);
sw.Flush();
fs.Flush();
sw.Close();
fs.Close();
}
}
private void SendSmbppSrvMessage(string XMLString)
{
this.RWL_SendSmbppQueue.AcquireWriterLock(-1);
this.SendSMBPQueue.Send(XMLString);
this.RWL_SendSmbppQueue.ReleaseWriterLock();
}
private void ProcessSMBPPMessage(string XMLString)
{
MtMessageForMISC mmfm=MySerialize.GetMtMessage(XMLString);
this.cmppClient.SubmitSM(mmfm);
}
private void RecvSMBPQueue_ReceiveCompleted(object sender, System.Messaging.ReceiveCompletedEventArgs e)
{
try
{
string Msg=(string)e.Message.Body;
this.ProcessSMBPPMessage(Msg);
}
catch
{}
//System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(this.ProcessISMGMessage),Msg);
if(this.GetIfCanSendMsg())
{
this.RecvSMBPQueue.BeginReceive(System.Messaging.MessageQueue.InfiniteTimeout);
}
}
private bool GetIfCanSendMsg()
{
this.RWL_IfCanSendMsg.AcquireReaderLock(-1);
bool b=this.IfCanSendMsg;
this.RWL_IfCanSendMsg.ReleaseReaderLock();
Thread.Sleep(1);
return b;
}
private void SendTempQueueItem(TempQueueItem TQI)
{
this.RWL_MSMQ_Temp.AcquireWriterLock(-1);
this.MSMQ_TempQueue.Send(TQI);
this.RWL_MSMQ_Temp.ReleaseWriterLock();
}
private void cmppClient_onErrorHandler(object sender, CMPP3.Client.ErrorEventArgs e)
{
try
{
string log="系统信息:CMPPClient类内部异常-->异常描述:"+e.MyMessage+" 系统描述:"+e.ErrorMessage;
this.WriteLogFile(log);
}
catch
{}
}
private void cmppClient_onFailedItemDeletedHandler(object sender, CMPP3.Client.FailedItemDeleteEventArgs e)
{
}
private void cmppClient_onLoginSuccessHandler(object sender, EventArgs e)
{
string log="登陆网关事件-->登陆成功!";
this.WriteLogFile(log);
}
private void cmppClient_onReceiveCancelRespHandler(object sender, CMPP3.Client.CancelRespEventArgs e)
{
}
private void cmppClient_onReceiveConnectRespHandler(object sender, CMPP3.Client.ConnectRespEventArgs e)
{
string log="接收到ConnectionResp消息,Status-->"+e.Connect_resp.Status.ToString();
this.WriteLogFile(log);
}
private void cmppClient_onReceiveNewShortMessageHandler(object sender, CMPP3.Client.SMSEventArgs e)
{
MOMessage momsg=new MOMessage();
momsg.DestID=e.Deliver.DestID;
momsg.MessageContent=e.Deliver.strMsgContent;
momsg.MessageFormat=e.Deliver.MsgFmt;
momsg.MOMessageID=e.Deliver.LinkID;
momsg.ServiceCode=e.Deliver.Service_Id;
momsg.SrcTerminalID=e.Deliver.Src_Terminal_ID;
momsg.TP_Pid=e.Deliver.Tp_Pid;
momsg.TP_Udhi=e.Deliver.Tp_Udhi;
momsg.ReceiveTime=DateTime.Now;
TempQueueItem TQI=new TempQueueItem();
TQI.Type=TempQueueItemType.MOMessage;
TQI.Item=momsg;
this.SendTempQueueItem(TQI);
}
private void cmppClient_onReceiveQueryRespHandler(object sender, CMPP3.Client.QueryRespEventArgs e)
{
}
private void cmppClient_onReceiveReportHandler(object sender, CMPP3.Client.ReportEventArgs e)
{
StatusReport rep=new StatusReport();
rep.strMsgID=e.Deliver.RepulMsgID.ToString();
rep.DestTerminalID=e.Deliver.RepDestTermID;
rep.DoneTime=e.Deliver.RepDoneTime;
rep.MessageStatus=e.Deliver.RepSMStatus;
rep.SubmitTime=e.Deliver.RepSubmitTime;
rep.GateWayID=this.iGatewayID;
rep.ReceiveTime=DateTime.Now;
TempQueueItem TQI=new TempQueueItem();
TQI.Type=TempQueueItemType.StatusReport;
TQI.Item=rep;
this.SendTempQueueItem(TQI);
}
private void cmppClient_onReceiveSubmitRespHandler(object sender, CMPP3.Client.SubmitRespEventArgs e)
{
MtMessageForMISCResp mmfmr=new MtMessageForMISCResp();
mmfmr.BusinessCode=e.Submit.SMBPMtMessage.BusinessCode;
mmfmr.CityCode=e.Submit.SMBPMtMessage.CityCode;
mmfmr.ConnectID=e.Submit.SMBPMtMessage.ConnectID;
mmfmr.DestMsisdn=e.Submit.SMBPMtMessage.DestMsisdn;
mmfmr.EnterpriseID=e.Submit.SMBPMtMessage.EnterpriseID;
mmfmr.Fee=e.Submit.SMBPMtMessage.Fee;
mmfmr.FeeCode=e.Submit.SMBPMtMessage.FeeCode;
mmfmr.FeeMsisdn=e.Submit.SMBPMtMessage.FeeMsisdn;
mmfmr.FeeType=e.Submit.SMBPMtMessage.FeeType;
mmfmr.FeeUserType=e.Submit.SMBPMtMessage.FeeUserType;
mmfmr.GateWayID=this.GateWayID;
mmfmr.ifTimerMtMessage=e.Submit.SMBPMtMessage.ifTimeMtMessage;
mmfmr.LongCode=e.Submit.SMBPMtMessage.LongCode;
mmfmr.MessageContent=e.Submit.SMBPMtMessage.MessageContent;
mmfmr.MessageID=e.Submit.SMBPMtMessage.MessageID;
mmfmr.MessageType=e.Submit.SMBPMtMessage.MessageType;
mmfmr.MOMessageID=e.Submit.SMBPMtMessage.MOMessageID;
mmfmr.MtMessageID=e.Submit_Resp.ulBaseMsgID.ToString();
mmfmr.NeedReport=e.Submit.SMBPMtMessage.NeedReport;
mmfmr.ReceiveTime=e.Submit.SMBPMtMessage.ReceiveTime;
mmfmr.ReportTime=DateTime.Now;
mmfmr.SendCode=e.Submit.Src_Id;
mmfmr.SendStatus=(int)e.Submit_Resp.Result;
mmfmr.SendTime=DateTime.Now;
mmfmr.StateCode=e.Submit.SMBPMtMessage.StateCode;
mmfmr.StatusReport="HadSent";
mmfmr.TeleOperaterID=this.TelOperatorID;
mmfmr.TP_Pid=e.Submit.TpPid;
mmfmr.TP_Udhi=e.Submit.TpUdhi;
mmfmr.TransmitReport=e.Submit.SMBPMtMessage.TransmitReport;
TempQueueItem TQI=new TempQueueItem();
TQI.Type=TempQueueItemType.MtMessageResp;
TQI.Item=mmfmr;
this.SendTempQueueItem(TQI);
}
private void cmppClient_onReceiveTerminateRespHandler(object sender, CMPP3.Client.TerminateRespEventArgs e)
{
string log="接收到网关发来的TerminalResp信息!";
this.WriteLogFile(log);
}
private void cmppClient_onSentTerminateHander(object sender, CMPP3.Client.TerminateEventArgs e)
{
string log="已经发送了Terminal信息!";
this.WriteLogFile(log);
}
private void cmppClient_onReceiveTestRespHandler(object sender, CMPP3.Client.TestRespEventArgs e)
{
string log="接收到网关的TestResp消息,当前与网关连接正常,消息流水号:"+e.Test_Resp.Head.Sequence.ToString();
this.WriteLogFile(log);
}
private void cmppClient_onSentTestHandler(object sender, CMPP3.Client.TestEventArgs e)
{
string log="向网关发送了ActiveTesp,正在等待回应:"+e.Sequence.ToString();
this.WriteLogFile(log);
}
private void cmppClient_onRequestRestartHandler(object sender, EventArgs e)
{
this.ARE_Start.Set();
}
}
public class ReadConfig
{
private string _FileName;
private System.Xml.XmlDocument doc;
private System.Xml.XmlTextReader reader;
public ReadConfig(string FileName)
{
this._FileName=FileName;
}
public string GetValueByName(string Section,string Key)
{
try
{
this.doc=new XmlDocument();
this.reader=new XmlTextReader(this._FileName);
doc.Load(reader);
reader.Close();
System.Xml.XmlNodeList xnl=doc.GetElementsByTagName(Key);
XmlNode node=xnl.Item(0);
return node.InnerText;
}
catch(Exception)
{
return null;
}
}
}
}