frostfs-sdk-go/object/transformer/channel.go

29 lines
529 B
Go

package transformer
import (
"context"
objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
)
type chanTarget struct {
ch chan<- *objectSDK.Object
}
// NewChannelTarget returns ObjectTarget which writes
// object parts to a provided channel.
func NewChannelTarget(ch chan<- *objectSDK.Object) ObjectWriter {
return &chanTarget{
ch: ch,
}
}
func (c *chanTarget) WriteObject(ctx context.Context, o *objectSDK.Object) error {
select {
case c.ch <- o:
case <-ctx.Done():
return ctx.Err()
}
return nil
}