public void FirsLevelParsing() { //CGRC00 cgrc00 = new CGRC00(); //CGRC01 cgrc01 = new CGRC01(); //CGRC02 cgrc02 = new CGRC02(); string raw = "SP333444<CGRC(ID(00,17/01/2021,07:51:07)N(+923333451191,+923468220229,+923333404763,,,,,,,,SR117R00BL01R00,13-Jan-16,16:27:21,+923,internet,,,+923,internet,,,333444,+923333451191,67.23.248.114,30004,SPMX00DT,SPMX01DT,,,,,,,1,15,2,4,30,9600,15,2)L(1000101101000000000001000000000000))\r>"; var packet = ParsingManager.FirstLevelParser(raw); var list = GTCommandFactory.GetConfiguration(packet); //cgrc00.Parse(packet.Data); //cgrc01.Parse(packet.Data); //cgrc02.Parse(packet.Data); }
public static TerminalCommandResponse SendGTCommandRequest(TerminalCommandRequest commandRequest, GTCommandType commandType) { var config = WebApiServerConfigurationManager.Instance.Configurations; TerminalCommandResponse response = new TerminalCommandResponse(); try { var connected = WebServer.server.ChannelKeys.Contains(commandRequest.TerminalId); if (!connected) { return(new TerminalCommandResponse { RequestId = commandRequest.RequestId, Data = null,//commandRequest.Data, RequestType = commandRequest.RequestType, ResponseStatus = ResponseStatus.Failed, Message = "Site not connected." }); } var cmd = TerminalCommandHandler.Instance.Find(commandRequest.TerminalId); if (cmd != null) { return(new TerminalCommandResponse { RequestId = commandRequest.RequestId, Data = commandRequest.Data, RequestType = commandRequest.RequestType, ResponseStatus = ResponseStatus.Failed, Message = "Another configuration already in process. Please try again later" }); } TerminalCommandHandler.Instance.Add(new TerminalCommand { RequestData = commandRequest.Data, TerminalId = commandRequest.TerminalId, RequestReceivedOn = DateTimeHelper.CurrentUniversalTime, Status = CommandStatus.RequestReceived }); WebServer.server.Notify(commandRequest); int retries = config.TerminalCommandRetries; while (retries > 0) { retries--; try { var command = TerminalCommandHandler.Instance.Find(commandRequest.TerminalId); if (command.Status == CommandStatus.ResponseReceived) { TerminalCommandHandler.Instance.Remove(commandRequest.TerminalId); var data = command.ResponseData; ICGRC gtConfig = null; if (!string.IsNullOrEmpty(data)) { var packet = ParsingManager.FirstLevelParser(data); gtConfig = GTCommandFactory.GetConfiguration(packet, commandType); } return(new TerminalCommandResponse { RequestId = commandRequest.RequestId, Data = gtConfig, RequestType = commandRequest.RequestType, ResponseStatus = ResponseStatus.Success, Message = "Response Received", TerminalId = command.TerminalId }); } } catch (Exception ex) { return(new TerminalCommandResponse { RequestId = commandRequest.RequestId, Data = null, RequestType = commandRequest.RequestType, ResponseStatus = ResponseStatus.Failed, Message = ex.Message }); } Thread.Sleep(config.TerminalCommandRetryIntervalInSeconds * 1000); } TerminalCommandHandler.Instance.Remove(commandRequest.TerminalId); return(new TerminalCommandResponse { RequestId = commandRequest.RequestId, Data = null, RequestType = commandRequest.RequestType, ResponseStatus = ResponseStatus.Failed, Message = "Request Timed Out", TerminalId = commandRequest.TerminalId }); } catch (Exception ex) { return(new TerminalCommandResponse { RequestId = commandRequest.RequestId, Data = null, RequestType = commandRequest.RequestType, ResponseStatus = ResponseStatus.Failed, Message = ex.Message }); } }