33 lines
786 B
Go
33 lines
786 B
Go
|
package trace
|
|||
|
|
|||
|
import "sync"
|
|||
|
|
|||
|
var _ D = (*Dialog)(nil)
|
|||
|
|
|||
|
type D interface {
|
|||
|
i()
|
|||
|
AppendResponse(resp *Response)
|
|||
|
}
|
|||
|
|
|||
|
// Dialog 内部调用其它方接口的会话信息;失败时会有retry操作,所以 response 会有多次。
|
|||
|
type Dialog struct {
|
|||
|
mux sync.Mutex
|
|||
|
Request *Request `json:"request"` // 请求信息
|
|||
|
Responses []*Response `json:"responses"` // 返回信息
|
|||
|
Success bool `json:"success"` // 是否成功,true 或 false
|
|||
|
CostSeconds float64 `json:"cost_seconds"` // 执行时长(单位秒)
|
|||
|
}
|
|||
|
|
|||
|
func (d *Dialog) i() {}
|
|||
|
|
|||
|
// AppendResponse 按转的追加response信息
|
|||
|
func (d *Dialog) AppendResponse(resp *Response) {
|
|||
|
if resp == nil {
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
d.mux.Lock()
|
|||
|
d.Responses = append(d.Responses, resp)
|
|||
|
d.mux.Unlock()
|
|||
|
}
|