コード例 #1
0
 /// <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;
         }
     }
 }
コード例 #2
0
        /// <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;
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MessageResponseResult" /> class.
 /// </summary>
 internal MessageResponseResult()
 {
     _progress = MessageResponseProgress.SendingMessage;
 }
コード例 #4
0
 /// <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;
     }
 }