Exemple #1
0
        /// <summary>Sends a request to the EFT-Client</summary>
        /// <param name="request">The <see cref="EFTRequest"/> to send</param>
        /// <param name="member">Used for internal logging. Ignore</param>
        /// <returns>FALSE if an error occurs</returns>
        public async Task <bool> WriteRequestAsync(EFTRequest request, [CallerMemberName] string member = "")
        {
            SetCurrentRequest(request);

            string msgString = "";

            try
            {
                msgString = (request is EFTPosAsPinpadRequest) ? _parser.EFTRequestToXMLString(request) : _parser.EFTRequestToString(request);
            }
            catch (Exception e)
            {
                Log(LogLevel.Error, tr => tr.Set($"An error occured parsing the request", e));
                throw;
            }

            Log(LogLevel.Debug, tr => tr.Set($"Tx {msgString}"));

            // Send the request string to the IP client.
            try
            {
                await _clientStream.WriteRequestAsync(msgString);
            }
            catch (Exception e)
            {
                Log(LogLevel.Error, tr => tr.Set($"An error occured sending the request", e));
                Disconnect();
                throw new ConnectionException(e.Message, e.InnerException);
            }
            return(true);
        }