BookSleeve.ExecMessage.IMessageResult C# (CSharp) Method

IMessageResult() private method

private IMessageResult ( RedisResult result ) : void
result RedisResult
return void
        void IMessageResult.Complete(RedisResult result)
        {
            if (result.IsCancellation)
            {
                completion.SetCanceled();
            }
            else if (result.IsError)
            {
                completion.SetException(result.Error());
            }
            else
            {
                try
                {
                    if (queued == null) throw new InvalidOperationException("Nothing was queued (null)!");
                    var items = result.ValueItems;
                    if (items.Length != queued.Length) throw new InvalidOperationException(string.Format("{0} results expected, {1} received", queued.Length, items.Length));

                    for (int i = 0; i < items.Length; i++)
                    {
                        RedisResult reply = items[i];
                        var ctx = parent.ProcessReply(ref reply, queued[i].InnerMessage);
                        parent.ProcessCallbacks(ctx, reply);
                    }
                    completion.SetResult(true);
                }
                catch (Exception ex)
                {
                    completion.SetException(ex);
                    throw;
                }
            }
        }