private void AddCrcCheckerNoRetry()

in src/AlibabaCloud.OSS.V2/Client.ObjectBasic.cs [530:565]


        private void AddCrcCheckerNoRetry(ref Models.RequestModel request, ref OperationInput input)
        {
            if (!_clientImpl.Options.FeatureFlags.HasFlag(FeatureFlagsType.EnableCrc64CheckUpload))
            {
                return;
            }

            ulong crcInit = 0;
            if (request is Models.AppendObjectRequest req)
            {
                // ignore crc check
                if (req.InitHashCrc64 == null)
                {
                    return;
                }
                crcInit = Convert.ToUInt64(req.InitHashCrc64);
            }

            var tracker = new WriteOnlyHashStream(new HashCrc64(BitConverter.GetBytes(crcInit)));
            Action<ResponseMessage> handler = x =>
            {
                if (x.Headers.TryGetValue("x-oss-hash-crc64ecma", out var scrc))
                {
                    var val = tracker.Hash.Final();
                    var ccrc = Convert.ToString(BitConverter.ToUInt64(val, 0), CultureInfo.InvariantCulture);
                    if (!string.Equals(ccrc, scrc))
                    {
                        x.Headers.TryGetValue("x-oss-request-id", out var requestId);
                        throw new NoRetryableInconsistentException(ccrc, scrc, requestId ?? "");
                    }
                }
            };

            input.AddStreamTracker(tracker);
            input.AddResponseHandler(handler);
        }