[#108] object/head: Export remote header retrieval utility

Export remote head functionality in headsvc package. Refactor head service
to use RemoteHeader.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2020-10-21 12:18:36 +03:00 committed by Leonard Lyubich
parent 5ad0df7794
commit 5017ff0e4a
3 changed files with 65 additions and 35 deletions

View file

@ -5,7 +5,6 @@ import (
"sync"
"github.com/nspcc-dev/neofs-node/pkg/core/netmap"
"github.com/nspcc-dev/neofs-node/pkg/core/object"
"github.com/nspcc-dev/neofs-node/pkg/network"
"github.com/nspcc-dev/neofs-node/pkg/services/object/util"
"github.com/nspcc-dev/neofs-node/pkg/services/object_manager/placement"
@ -105,25 +104,24 @@ loop:
if err := h.workerPool.Submit(func() {
defer wg.Done()
var header interface {
head(context.Context, *Prm, func(*object.Object)) error
}
if network.IsLocalAddress(h.localAddrSrc, addr) {
header = &localHeader{
storage: h.localStore,
}
} else {
header = &remoteHeader{
keyStorage: h.keyStorage,
node: addr,
if err := h.localHeader.head(ctx, prm, h.w.write); err != nil {
// TODO: log error
}
return
}
if err := header.head(ctx, prm, h.w.write); err != nil {
head, err := h.remoteHeader.Head(ctx, &RemoteHeadPrm{
commonHeadPrm: prm,
node: addr,
})
if err != nil {
// TODO: log error
return
}
h.w.write(head)
}); err != nil {
wg.Done()
// TODO: log error