git.zd.zone/hrpc/hrpc@v0.0.12/log/cls/callback.go (about)

     1  package cls
     2  
     3  import (
     4  	"time"
     5  
     6  	clssdk "github.com/tencentcloud/tencentcloud-cls-sdk-go"
     7  )
     8  
     9  type status int
    10  
    11  const (
    12  	Failed status = iota
    13  	Success
    14  )
    15  
    16  type Result struct {
    17  	Status status
    18  
    19  	RequestID    string
    20  	ErrorCode    string
    21  	ErrorMessage string
    22  	Time         time.Time
    23  }
    24  
    25  type Handle func(results ...Result)
    26  
    27  type callback struct {
    28  	fn Handle
    29  }
    30  
    31  func (c *callback) Success(result *clssdk.Result) {
    32  	if c.fn == nil {
    33  		return
    34  	}
    35  
    36  	var results []Result
    37  	attemptList := result.GetReservedAttempts()
    38  	for _, attempt := range attemptList {
    39  		var res Result
    40  		if attempt.Success {
    41  			res.Status = Success
    42  		}
    43  		res.ErrorCode = attempt.ErrorCode
    44  		res.ErrorMessage = attempt.ErrorMessage
    45  		res.RequestID = attempt.RequestId
    46  		res.Time = time.Unix(attempt.TimeStampMs/1000, 0)
    47  		results = append(results, res)
    48  	}
    49  	c.fn(results...)
    50  }
    51  
    52  func (c *callback) Fail(result *clssdk.Result) {
    53  	if c.fn == nil {
    54  		return
    55  	}
    56  
    57  	var res Result
    58  	if result.IsSuccessful() {
    59  		res.Status = Success
    60  	}
    61  	res.ErrorCode = result.GetErrorCode()
    62  	res.ErrorMessage = result.GetErrorMessage()
    63  	res.RequestID = result.GetRequestId()
    64  	res.Time = time.Unix(result.GetTimeStampMs()/1000, 0)
    65  	c.fn(res)
    66  }