/// <summary> /// Updates the send result. /// </summary> /// <param name="result">The result of sending the message.</param> internal void MessageSent(SendResults result) { lock (_lockObject) { _sendResult = result; if (result != SendResults.Success) { _responseResult = ResponseResults.ConnectionFailure; _progress = MessageResponseProgress.Completed; } else { _progress = MessageResponseProgress.WaitingForResponse; } } }
/// <summary> /// Blocks until the specified progress is reached. /// </summary> /// <param name="progressToBlockUntil">The progress to block until.</param> private void BlockUntilProgress(MessageResponseProgress progressToBlockUntil) { bool block; lock (_lockObject) { block = _progress < progressToBlockUntil; } while (block) { Thread.Sleep(1); lock (_lockObject) { block = _progress < progressToBlockUntil; } } }
/// <summary> /// Initializes a new instance of the <see cref="MessageResponseResult" /> class. /// </summary> internal MessageResponseResult() { _progress = MessageResponseProgress.SendingMessage; }
/// <summary> /// Updates the response and response result. /// </summary> /// <param name="result">The result of waiting for the response.</param> /// <param name="response">The response message.</param> internal void ResponseReceived(ResponseResults result, Message response) { lock (_lockObject) { _responseResult = result; _responseMessage = response; _progress = MessageResponseProgress.Completed; } }