本文整理汇总了Golang中github.com/datacratic/aws-sdk-go/aws.Request.Retryable方法的典型用法代码示例。如果您正苦于以下问题:Golang Request.Retryable方法的具体用法?Golang Request.Retryable怎么用?Golang Request.Retryable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/datacratic/aws-sdk-go/aws.Request
的用法示例。
在下文中一共展示了Request.Retryable方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: setChecksumError
func setChecksumError(r *aws.Request, format string, args ...interface{}) {
r.Retryable = true
r.Error = &aws.APIError{
StatusCode: r.HTTPResponse.StatusCode,
Code: "InvalidChecksum",
Message: fmt.Sprintf(format, args...),
}
}
示例2: validateCRC32
func validateCRC32(r *aws.Request) {
if r.Error != nil {
return // already have an error, no need to verify CRC
}
// Checksum validation is off, skip
if r.Service.Config.DisableComputeChecksums {
return
}
// Try to get CRC from response
header := r.HTTPResponse.Header.Get("X-Amz-Crc32")
if header == "" {
return // No header, skip
}
expected, err := strconv.ParseUint(header, 10, 32)
if err != nil {
return // Could not determine CRC value, skip
}
buf, err := drainBody(r.HTTPResponse.Body)
if err != nil { // failed to read the response body, skip
return
}
// Reset body for subsequent reads
r.HTTPResponse.Body = ioutil.NopCloser(bytes.NewReader(buf.Bytes()))
// Compute the CRC checksum
crc := crc32.ChecksumIEEE(buf.Bytes())
if crc != uint32(expected) {
// CRC does not match, set a retryable error
r.Retryable = true
r.Error = &aws.APIError{
Code: "CRC32CheckFailed",
Message: "CRC32 integrity check failed",
}
}
}