/// <summary>Sends a request to the EFT-Client</summary> /// <param name="request">The <see cref="TerminalBaseRequest"/> to send</param> /// <param name="member">Used for internal logging. Ignore</param> /// <returns>FALSE if an error occurs</returns> public bool DoRequest(TerminalBaseRequest request, [CallerMemberName] string member = "") { SetCurrentRequest(request); logger.Info($"Request via {member}"); // Save the current synchronization context so we can use it to send events syncContext = System.Threading.SynchronizationContext.Current; if (requestInProgess) { logger.Info("Ignored, request already in progress"); return(false); } if (!IsConnected) { logger.Info($"Not connected in {member} request, trying to connect now..."); if (!Connect()) { logger.Error("Connect failed"); return(false); } } var r = SendIPClientRequest(request); requestInProgess = r; return(r); }
private void SetCurrentRequest(TerminalBaseRequest request) { // Always set _currentRequest to the last request we send currentRequest = request; if (request.GetIsStartOfTransactionRequest()) { _currentStartTxnRequest = request; } }
bool SendIPClientRequest(TerminalBaseRequest eftRequest) { // Store current request. this.currentRequest = eftRequest; // Build request var requestString = ""; try { requestString = _parser.EFTRequestToString(eftRequest); } catch (Exception e) { //Log(LogLevel.Error, tr => tr.Set($"An error occured parsing the request", e)); throw; } //Log(LogLevel.Debug, tr => tr.Set($"Tx {requestString}")); // Send the request string to the IP client. return(socket.Send(requestString)); }