report_publisher.go 606 B

123456789101112131415161718192021222324252627
  1. package bugsnag
  2. import "fmt"
  3. type reportPublisher interface {
  4. publishReport(*payload) error
  5. }
  6. type defaultReportPublisher struct{}
  7. func (*defaultReportPublisher) publishReport(p *payload) error {
  8. p.logf("notifying bugsnag: %s", p.Message)
  9. if !p.notifyInReleaseStage() {
  10. return fmt.Errorf("not notifying in %s", p.ReleaseStage)
  11. }
  12. if p.Synchronous {
  13. return p.deliver()
  14. }
  15. go func(p *payload) {
  16. if err := p.deliver(); err != nil {
  17. // Ensure that any errors are logged if they occur in a goroutine.
  18. p.logf("bugsnag/defaultReportPublisher.publishReport: %v", err)
  19. }
  20. }(p)
  21. return nil
  22. }