Example #1
0
 /// <summary>
 /// 指令结果解析适配器.
 /// </summary>
 /// <param name="Msg">指令结果集合.</param>
 /// <returns></returns>
 protected override ASyncResult ResultAdapter(string Msg)
 {
     Msg = string.Join("\r", Msg.Split(new char[]{'\0'}, StringSplitOptions.RemoveEmptyEntries));
     RTResult Rt = new RTResult();
     ParseContract(Rt, Msg);
     ParseGroup(Rt, Msg);
     ParsePassager(Rt, Msg);
     ParseSeg(Rt, Msg);
     return Rt;
 }
Example #2
0
        /// <summary>
        /// 指令结果解析适配器.
        /// </summary>
        /// <param name="Msg">指令结果集合.</param>
        /// <returns></returns>
        protected override ASyncResult ResultAdapter(string Msg)
        {
            Msg = string.Join("\r", Msg.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries));
            RTResult Rt = new RTResult();

            ParseContract(Rt, Msg);
            ParseGroup(Rt, Msg);
            ParsePassager(Rt, Msg);
            ParseSeg(Rt, Msg);
            return(Rt);
        }
Example #3
0
 /// <summary>
 /// Parses the passager.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParsePassager(RTResult Rt, string Msg)
 {
     Rt.getPassengers = new List <PNRPassengerResult>();
     foreach (Match m in Regex.Matches(Msg.Replace("\0", "\r"), @"(\d+\.(([A-Z]+\/[A-Z]+)|([\u4e00-\u9fa5]+))\s*(NI)?\s*)+" + this.__pnr, RegexOptions.IgnoreCase | RegexOptions.Multiline))
     {
         foreach (Capture c in m.Groups[2].Captures)
         {
             Rt.getPassengers.Add(new PNRPassengerResult(c.Value));
         }
     }
 }
Example #4
0
 /// <summary>
 /// Parses the seg.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseSeg(RTResult Rt, string Msg)
 {
     Rt.getAirSegs = new List <PNRAirSegResult>();
     foreach (Match m in Regex.Matches(Msg.Replace("\0", "\r"), @"\d+\.\s+(\w{2}\d+)\s+([A-Z])\s+([A-Z]{2}\d{2}[A-Z]{3})\s+([A-Z]{3})([A-Z]{3})\s+(\w{3})\s+(\d{4})\s+(\d{4})\s+", RegexOptions.IgnoreCase | RegexOptions.Multiline))
     {
         PNRAirSegResult seg = new PNRAirSegResult();
         seg.getActionCode    = m.Groups[6].Value;
         seg.getAirNo         = m.Groups[1].Value;
         seg.getArrivalTime   = m.Groups[8].Value;
         seg.getDepartureTime = m.Groups[7].Value;
         seg.getDesCity       = m.Groups[5].Value;
         seg.getFltClass      = m.Groups[2].Value;
         seg.getOrgCity       = m.Groups[4].Value;
         Rt.getAirSegs.Add(seg);
     }
 }
Example #5
0
        /// <summary>
        /// 开始线程.
        /// </summary>
        /// <param name="SESSION">会话端.</param>
        /// <param name="InPacket">入口数据包.</param>
        /// <param name="OutPacket">出口数据包.</param>
        /// <param name="Key">The key.</param>
        protected override void ExecutePlugIn(eTerm.AsyncSDK.Core.eTerm363Session SESSION, eTerm.AsyncSDK.Core.eTerm363Packet InPacket, eTerm.AsyncSDK.Core.eTerm363Packet OutPacket, eTerm.AsyncSDK.AsyncLicenceKey Key)
        {
            Match  PnrMatch = Regex.Match(Encoding.GetEncoding("gb2312").GetString(SESSION.UnInPakcet(InPacket)).Trim(), @"^!SMSPNR\s+([A-Z0-9]{6,6})\s+(\d+)", RegexOptions.Multiline | RegexOptions.IgnoreCase);
            string Pnr      = string.Empty;
            string Mobile   = string.Empty;

            if (PnrMatch == null)
            {
                SESSION.SendPacket(__eTerm443Packet.BuildSessionPacket(SESSION.SID, SESSION.RID, "指令格式错误!"));
                return;
            }
            Pnr    = PnrMatch.Groups[1].Value;
            Mobile = PnrMatch.Groups[2].Value;
            RTCommand  Rt       = new RTCommand();
            IPEndPoint ServerEP = SESSION.AsyncSocket.LocalEndPoint as IPEndPoint;

            Rt.Connect(ServerEP.Address.ToString(), ServerEP.Port, SESSION.userName, SESSION.userPass);
            if (SESSION.Async443 != null)
            {
                SESSION.Async443.TSession = null;
            }
            RTResult      Result = Rt.retrieve(Pnr) as RTResult;
            StringBuilder sb     = new StringBuilder();

            foreach (PNRAirSegResult Seg in Result.getAirSegs)
            {
                sb.AppendFormat("航段:{0} {1}-{2} {3} {4}\r", Seg.getAirNo, Seg.getOrgCity, Seg.getDesCity, Seg.getDepartureTime, Seg.getArrivalTime);
            }
            foreach (PNRPassengerResult Inf in Result.getPassengers)
            {
                sb.AppendFormat("旅客:{0}\r", Inf.getName);
            }
            sb.AppendFormat("{0}  Pnr信息已经发送至:{1}", Pnr, Mobile);
            SESSION.SendPacket(__eTerm443Packet.BuildSessionPacket(SESSION.SID, SESSION.RID,
                                                                   sb.ToString()
                                                                   ));
        }
Example #6
0
 /// <summary>
 /// Parses the seg.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseSeg(RTResult Rt, string Msg)
 {
     Rt.getAirSegs = new List<PNRAirSegResult>();
     foreach (Match m in Regex.Matches(Msg.Replace("\0", "\r"), @"\d+\.\s+(\w{2}\d+)\s+([A-Z])\s+([A-Z]{2}\d{2}[A-Z]{3})\s+([A-Z]{3})([A-Z]{3})\s+(\w{3})\s+(\d{4})\s+(\d{4})\s+", RegexOptions.IgnoreCase | RegexOptions.Multiline)) {
         PNRAirSegResult seg = new PNRAirSegResult();
         seg.getActionCode = m.Groups[6].Value;
         seg.getAirNo = m.Groups[1].Value;
         seg.getArrivalTime = m.Groups[8].Value;
         seg.getDepartureTime = m.Groups[7].Value;
         seg.getDesCity = m.Groups[5].Value;
         seg.getFltClass = m.Groups[2].Value;
         seg.getOrgCity = m.Groups[4].Value;
         Rt.getAirSegs.Add(seg);
     }
 }
Example #7
0
 /// <summary>
 /// Parses the passager.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParsePassager(RTResult Rt, string Msg)
 {
     Rt.getPassengers =new List<PNRPassengerResult>();
     foreach (Match m in Regex.Matches(Msg.Replace("\0", "\r"), @"(\d+\.(([A-Z]+\/[A-Z]+)|([\u4e00-\u9fa5]+))\s*(NI)?\s*)+" + this.__pnr, RegexOptions.IgnoreCase | RegexOptions.Multiline)) {
         foreach (Capture c in m.Groups[2].Captures) {
             Rt.getPassengers.Add(new PNRPassengerResult(c.Value));
         }
     }
 }
Example #8
0
 /// <summary>
 /// Parses the group.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseGroup(RTResult Rt, string Msg)
 {
 }
Example #9
0
 /// <summary>
 /// Parses the contract.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseContract(RTResult Rt, string Msg)
 {
 }
Example #10
0
 /// <summary>
 /// Parses the group.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseGroup(RTResult Rt, string Msg)
 {
 }
Example #11
0
 /// <summary>
 /// Parses the contract.
 /// </summary>
 /// <param name="Rt">The rt.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseContract(RTResult Rt, string Msg)
 {
 }