//internal static DataTable LoadMerchantFormats( int MerchantId ) //{ // throw new NotImplementedException(); //} internal static int SaveResponse(int requestId, ResponseInfo responseInfo) { DataTable dt = null; int nRet = 0; try { GenDS ds = new GenDS(SettingsProvider.SqlConnectionString); string sql = string.Format("exec [dbo].[aggregator_SaveResponse] {0}, '{1}','{2}','{3}',{4},'{5}'", requestId, responseInfo.MerchantCode, responseInfo.MerchantData.Replace("'", "''"), responseInfo.ResponseCode, responseInfo.PaymentSum.Replace(",", "."), responseInfo.ToString().Replace("'", "''") ); dt = ds.Select(sql); if (G.ValidateDT(dt)) { nRet = G._I(dt.Rows[0][0]); } } catch (Exception ex) { dt = null; nRet = 0; throw new InternalException(LogLevel.DATA_ERROR, string.Format("DP.SaveResponse(RequestId = {0}, Response = {1})", requestId, responseInfo), ex.Message); //LogProvider.Log(LogLevel.DATA_ERROR, LogTarget.TO_SQL, "DP.SaveResponse(requestId, response)", ex.Message); } return(nRet); }
private void Listen() { while (_listen) { Socket socket; try { socket = _listener.AcceptSocket(); } catch (SocketException ex) { if (ex.Message.Contains("A blocking operation was interrupted by a call to WSACancelBlockingCall")) { return; } throw; } if (socket.Connected) { try { LogMessage("Socket connected"); var buffer = new Byte[_recieveBufferSize]; StringBuilder sb = new StringBuilder(); int count = -1; string reqText; count = socket.Receive(buffer, buffer.Length, 0); reqText = Encoding.ASCII.GetString(buffer, 0, count); sb.Append(reqText); var pattern = new Regex("Content-Length: (?<length>\\d+)", RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture); int contentLength; int bodyLength; if (pattern.IsMatch(reqText)) { contentLength = int.Parse(pattern.Match(reqText).Groups["length"].Value); if (contentLength > 0) { int pos = reqText.IndexOf("\r\n\r\n"); bodyLength = reqText.Length - (pos + 4); while (bodyLength < contentLength) { count = socket.Receive(buffer, buffer.Length, 0); reqText = Encoding.ASCII.GetString(buffer, 0, count); bodyLength = bodyLength + reqText.Length; sb.Append(reqText); } } } reqText = sb.ToString(); LogMessage("SERVER RECEVIED:\n" + reqText); var request = new RequestInfo(reqText); ResponseInfo response = HandleRequest(request); byte[] responseBytes = Encoding.ASCII.GetBytes(response.ToString()); WriteToSocket(responseBytes, ref socket); LogMessage("SERVER SENT:\n" + response.ToString()); } catch (Exception ex) { ResponseInfo response = new ResponseInfo() { Body = ex.ToString(), Status = "503 Internal Server Error" }; byte[] responseBytes = Encoding.ASCII.GetBytes(response.ToString()); WriteToSocket(responseBytes, ref socket); LogMessage("SERVER SENT:\n" + response.ToString()); } socket.Close(); LogMessage("Socket Closed"); } } }