[#1319] services/object: Remove Write method from local and remote targets

They work with prepared objects only.

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2022-04-28 10:19:26 +03:00 committed by LeL
parent 4ea03c01b5
commit 057d53459b
4 changed files with 7 additions and 14 deletions

View file

@ -15,6 +15,11 @@ import (
"go.uber.org/zap" "go.uber.org/zap"
) )
type preparedObjectTarget interface {
WriteHeader(*objectSDK.Object) error
Close() (*transformer.AccessIdentifiers, error)
}
type distributedTarget struct { type distributedTarget struct {
traversal traversal traversal traversal
@ -24,7 +29,7 @@ type distributedTarget struct {
payload []byte payload []byte
nodeTargetInitializer func(nodeDesc) transformer.ObjectTarget nodeTargetInitializer func(nodeDesc) preparedObjectTarget
isLocalKey func([]byte) bool isLocalKey func([]byte) bool

View file

@ -19,24 +19,14 @@ type localTarget struct {
storage ObjectStorage storage ObjectStorage
obj *object.Object obj *object.Object
payload []byte
} }
func (t *localTarget) WriteHeader(obj *object.Object) error { func (t *localTarget) WriteHeader(obj *object.Object) error {
t.obj = obj t.obj = obj
t.payload = make([]byte, 0, obj.PayloadSize())
return nil return nil
} }
func (t *localTarget) Write(p []byte) (n int, err error) {
t.payload = append(t.payload, p...)
return len(p), nil
}
func (t *localTarget) Close() (*transformer.AccessIdentifiers, error) { func (t *localTarget) Close() (*transformer.AccessIdentifiers, error) {
if err := t.storage.Put(t.obj); err != nil { if err := t.storage.Put(t.obj); err != nil {
return nil, fmt.Errorf("(%T) could not put object to local storage: %w", t, err) return nil, fmt.Errorf("(%T) could not put object to local storage: %w", t, err)

View file

@ -13,8 +13,6 @@ import (
) )
type remoteTarget struct { type remoteTarget struct {
transformer.ObjectTarget
ctx context.Context ctx context.Context
keyStorage *util.KeyStorage keyStorage *util.KeyStorage

View file

@ -184,7 +184,7 @@ func (p *Streamer) newCommonTarget(prm *PutInitPrm) transformer.ObjectTarget {
}, },
remotePool: p.remotePool, remotePool: p.remotePool,
localPool: p.localPool, localPool: p.localPool,
nodeTargetInitializer: func(node nodeDesc) transformer.ObjectTarget { nodeTargetInitializer: func(node nodeDesc) preparedObjectTarget {
if node.local { if node.local {
return &localTarget{ return &localTarget{
storage: p.localStore, storage: p.localStore,