38 lines
911 B
Go
38 lines
911 B
Go
package stan
|
|
|
|
import (
|
|
"context"
|
|
"github.com/cloudevents/sdk-go/v2/binding"
|
|
"github.com/cloudevents/sdk-go/v2/binding/format"
|
|
"io"
|
|
)
|
|
|
|
// WriteMsg fills the provided writer with the bindings.Message m.
|
|
// Using context you can tweak the encoding processing (more details on binding.Write documentation).
|
|
func WriteMsg(ctx context.Context, m binding.Message, writer io.ReaderFrom, transformers ...binding.Transformer) error {
|
|
structuredWriter := &stanMessageWriter{writer}
|
|
|
|
_, err := binding.Write(
|
|
ctx,
|
|
m,
|
|
structuredWriter,
|
|
nil,
|
|
transformers...,
|
|
)
|
|
return err
|
|
}
|
|
|
|
type stanMessageWriter struct {
|
|
io.ReaderFrom
|
|
}
|
|
|
|
func (w *stanMessageWriter) SetStructuredEvent(_ context.Context, _ format.Format, event io.Reader) error {
|
|
if _, err := w.ReadFrom(event); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
var _ binding.StructuredWriter = (*stanMessageWriter)(nil) // Test it conforms to the interface
|