frostfs-node/pkg/services/object/put/v2/streamer.go
Leonard Lyubich f311be3ab6 [#234] Fix ineffassign linter remark
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-01-14 12:13:49 +03:00

44 lines
1.1 KiB
Go

package putsvc
import (
"github.com/nspcc-dev/neofs-api-go/v2/object"
putsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/put"
"github.com/pkg/errors"
)
type streamer struct {
stream *putsvc.Streamer
}
func (s *streamer) Send(req *object.PutRequest) (err error) {
switch v := req.GetBody().GetObjectPart().(type) {
case *object.PutObjectPartInit:
var initPrm *putsvc.PutInitPrm
initPrm, err = toInitPrm(v, req)
if err != nil {
return err
}
if err = s.stream.Init(initPrm); err != nil {
err = errors.Wrapf(err, "(%T) could not init object put stream", s)
}
case *object.PutObjectPartChunk:
if err = s.stream.SendChunk(toChunkPrm(v)); err != nil {
err = errors.Wrapf(err, "(%T) could not send payload chunk", s)
}
default:
err = errors.Errorf("(%T) invalid object put stream part type %T", s, v)
}
return
}
func (s *streamer) CloseAndRecv() (*object.PutResponse, error) {
resp, err := s.stream.Close()
if err != nil {
return nil, errors.Wrapf(err, "(%T) could not object put stream", s)
}
return fromPutResponse(resp), nil
}