forked from TrueCloudLab/frostfs-node
[#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:
parent
4ea03c01b5
commit
057d53459b
4 changed files with 7 additions and 14 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue