[HttpPost] // Send SMS public async Task <ActionResult <InfoUserSms> > Post(InfoUserSms info) { try { Logger?.Info($"Info of Message {JsonConvert.SerializeObject(info)}"); var messageHandler = new MessageHandler(); Logger?.Info("Type of Message is Receive"); // Cancel Task after 5s TokenSource.CancelAfter(TimeSpan.FromSeconds(5)); // Push Message to SMS Service var pushMessageSuccess = await messageHandler.ReceiveInfoMessageToNexmoService(info, TokenSource.Token); Logger?.Info($"Push message is {pushMessageSuccess.Message}"); Logger?.Info($"Status Code {StatusCodes.Status401Unauthorized}"); return(StatusCode(StatusCodes.Status401Unauthorized, "Don't have type SMS")); } catch (Exception ex) { Logger?.Exception(ex, $"Status Code {StatusCodes.Status500InternalServerError}"); return(StatusCode(StatusCodes.Status500InternalServerError, "Database Failure")); } }
/// <summary> /// Release the specified transaction from the lock. /// If the lock now has no owners and there is a non-null TokenSource than cancel it to free other /// threads that may be waiting for the lock. /// </summary> /// <param name="id">Owner Id</param> /// <returns></returns> public bool Release(T id) { bool result; lock (_lockOwners) { result = _lockOwners.Remove(id); if (_lockOwners.Count == 0) { LockMode = LockMode.Default; if (TokenSource != null) { TokenSource.CancelAfter(0); TokenSource = null; } } } return(result); }
[HttpPost] // Send SMS public async Task <BaseResponse <object> > Post(InfoUserSms info) { try { Logger?.Info($"Info of Message {JsonConvert.SerializeObject(info)}"); var messageHandler = new MessageHandler(); //Cancel Task after 3s TokenSource.CancelAfter(TimeSpan.FromSeconds(3)); //Push Message to SMS Service var sendSuccess = await messageHandler.SendInfoMessageToSmsService(info, TokenSource.Token); Logger?.Info($"Send message {JsonConvert.SerializeObject(sendSuccess)}"); return(sendSuccess); } catch (Exception ex) { Logger?.Exception(ex, $"Status Code {StatusCodes.Status500InternalServerError}"); return(new BaseResponse <object> { Code = 500, Data = "Internal Server Error", Message = ex.Message, Error = ex.StackTrace }); } }