forked from TrueCloudLab/frostfs-node
a97e08cfd7
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package eigentrustcalc
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/nspcc-dev/neofs-node/pkg/services/reputation"
|
|
"github.com/nspcc-dev/neofs-node/pkg/services/reputation/eigentrust"
|
|
)
|
|
|
|
type Context interface {
|
|
context.Context
|
|
|
|
// Must return epoch number to select the values
|
|
// for global trust calculation.
|
|
Epoch() uint64
|
|
|
|
// Must return the sequence number of the iteration.
|
|
I() uint32
|
|
}
|
|
|
|
type InitialTrustSource interface {
|
|
InitialTrust(reputation.PeerID) (reputation.TrustValue, error)
|
|
}
|
|
|
|
type TrustIterator interface {
|
|
Iterate(reputation.TrustHandler) error
|
|
}
|
|
|
|
type PeerTrustsHandler func(reputation.PeerID, TrustIterator) error
|
|
|
|
type PeerTrustsIterator interface {
|
|
Iterate(PeerTrustsHandler) error
|
|
}
|
|
|
|
type DaughterTrustIteratorProvider interface {
|
|
InitDaughterIterator(Context, reputation.PeerID) (TrustIterator, error)
|
|
InitAllDaughtersIterator(Context) (PeerTrustsIterator, error)
|
|
InitConsumersIterator(Context) (PeerTrustsIterator, error)
|
|
}
|
|
|
|
type IntermediateWriter interface {
|
|
WriteIntermediateTrust(eigentrust.IterationTrust) error
|
|
}
|
|
|
|
type IntermediateWriterProvider interface {
|
|
InitIntermediateWriter(Context) (IntermediateWriter, error)
|
|
}
|