dialog.go 786 B

1234567891011121314151617181920212223242526272829303132
  1. package trace
  2. import "sync"
  3. var _ D = (*Dialog)(nil)
  4. type D interface {
  5. i()
  6. AppendResponse(resp *Response)
  7. }
  8. // Dialog 内部调用其它方接口的会话信息;失败时会有retry操作,所以 response 会有多次。
  9. type Dialog struct {
  10. mux sync.Mutex
  11. Request *Request `json:"request"` // 请求信息
  12. Responses []*Response `json:"responses"` // 返回信息
  13. Success bool `json:"success"` // 是否成功,true 或 false
  14. CostSeconds float64 `json:"cost_seconds"` // 执行时长(单位秒)
  15. }
  16. func (d *Dialog) i() {}
  17. // AppendResponse 按转的追加response信息
  18. func (d *Dialog) AppendResponse(resp *Response) {
  19. if resp == nil {
  20. return
  21. }
  22. d.mux.Lock()
  23. d.Responses = append(d.Responses, resp)
  24. d.mux.Unlock()
  25. }