mirror of https://github.com/goharbor/harbor.git
43 lines
1.0 KiB
Go
43 lines
1.0 KiB
Go
/*
|
|
Copyright 2021 The CloudEvents Authors
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package binding
|
|
|
|
import "github.com/cloudevents/sdk-go/v2/binding/spec"
|
|
|
|
type finishMessage struct {
|
|
Message
|
|
finish func(error)
|
|
}
|
|
|
|
func (m *finishMessage) GetAttribute(k spec.Kind) (spec.Attribute, interface{}) {
|
|
return m.Message.(MessageMetadataReader).GetAttribute(k)
|
|
}
|
|
|
|
func (m *finishMessage) GetExtension(s string) interface{} {
|
|
return m.Message.(MessageMetadataReader).GetExtension(s)
|
|
}
|
|
|
|
func (m *finishMessage) GetWrappedMessage() Message {
|
|
return m.Message
|
|
}
|
|
|
|
func (m *finishMessage) Finish(err error) error {
|
|
err2 := m.Message.Finish(err) // Finish original message first
|
|
if m.finish != nil {
|
|
m.finish(err) // Notify callback
|
|
}
|
|
return err2
|
|
}
|
|
|
|
var _ MessageWrapper = (*finishMessage)(nil)
|
|
|
|
// WithFinish returns a wrapper for m that calls finish() and
|
|
// m.Finish() in its Finish().
|
|
// Allows code to be notified when a message is Finished.
|
|
func WithFinish(m Message, finish func(error)) Message {
|
|
return &finishMessage{Message: m, finish: finish}
|
|
}
|