github.com/haya14busa/reviewdog@v0.0.0-20180723114510-ffb00ef78fd3/comment.go (about) 1 package reviewdog 2 3 import "context" 4 5 var _ BulkCommentService = &multiCommentService{} 6 7 type multiCommentService struct { 8 services []CommentService 9 } 10 11 func (m *multiCommentService) Post(ctx context.Context, c *Comment) error { 12 for _, cs := range m.services { 13 if err := cs.Post(ctx, c); err != nil { 14 return err 15 } 16 } 17 return nil 18 } 19 20 func (m *multiCommentService) Flush(ctx context.Context) error { 21 for _, cs := range m.services { 22 if bulk, ok := cs.(BulkCommentService); ok { 23 if err := bulk.Flush(ctx); err != nil { 24 return err 25 } 26 } 27 } 28 return nil 29 } 30 31 // MultiCommentService creates a comment service that duplicates its post to 32 // all the provided comment services. 33 func MultiCommentService(services ...CommentService) CommentService { 34 s := make([]CommentService, len(services)) 35 copy(s, services) 36 return &multiCommentService{services: s} 37 }