/// <summary> /// No envia ninguna petición, solo espera la siguiente respuesta del servidor /// </summary> /// <returns>Alguna respuesta del servidor</returns> public async Task <Response> Wait() { try { if (TcpClient == null || !TcpClient.Connected) { return(new Response() { Key = "error", Value = "No hay conexión disponible con el servidor", IsValueJson = false }); } string strRes = string.Empty; string decryptedValue = string.Empty; Response res = null; strRes = await TcpReader.ReadLineAsync(); res = JsonConvert.DeserializeObject <Response>(strRes); if (res.IsEncripted) { decryptedValue = Encriptado.Decrypt(Convert.ToString(res.Value), true); } else { decryptedValue = Convert.ToString(res.Value); } res.Value = decryptedValue; return(res); } catch (Exception ex) { return(new Response() { Key = "error", Value = ex.Message, IsValueJson = false }); } }
/// <summary> /// Envia una petición al servidor y SI espera una respuesta /// </summary> /// <typeparam name="T">Tipo de valor a enviar</typeparam> /// <param name="key">Comando</param> /// <param name="value">Valor que se desea enviar junto al comando</param> /// <param name="applyFormatJsonToValue">Indica si al valor se formateara a json</param> /// <returns>Retorna una instancia tipo Response con los datos recibidos del servidor</returns> public async Task <Response> SendWait <T>(string key, T value, bool applyFormatJsonToValue = true) { try { if (TcpClient == null || !TcpClient.Connected) { return(new Response() { Key = "error", Value = "No hay conexión disponible con el servidor", IsValueJson = false }); } Request req = new Request(); req.Key = key; req.IsValueJson = applyFormatJsonToValue; req.IsEncripted = true; if (applyFormatJsonToValue) { req.Value = JsonConvert.SerializeObject(value); } else { req.Value = value; } string encryptedValue = Encriptado.Encrypt(Convert.ToString(req.Value), true); req.Value = encryptedValue; string reqJson = JsonConvert.SerializeObject(req); await TcpWritter.WriteLineAsync(reqJson); await TcpWritter.FlushAsync(); string strRes = string.Empty; string decryptedValue = string.Empty; Response res = null; int intentos = 3; int intentosRealizados = 0; do { strRes = await TcpReader.ReadLineAsync(); res = JsonConvert.DeserializeObject <Response>(strRes); if (res.IsEncripted) { decryptedValue = Encriptado.Decrypt(Convert.ToString(res.Value), true); } else { decryptedValue = Convert.ToString(res.Value); } res.Value = decryptedValue; intentosRealizados++; } while (res.Key != key && intentosRealizados < intentos); return(res); } catch (Exception ex) { return(new Response() { Key = "error", Value = ex.Message, IsValueJson = false }); } }