diff --git a/pkg/services/reputation/eigentrust/calculator/calls.go b/pkg/services/reputation/eigentrust/calculator/calls.go index 2cc78978..a8e5cf1d 100644 --- a/pkg/services/reputation/eigentrust/calculator/calls.go +++ b/pkg/services/reputation/eigentrust/calculator/calls.go @@ -101,7 +101,6 @@ type iterDaughterPrm struct { consumersIter TrustIterator } -// nolint: funlen func (c *Calculator) iterateDaughter(ctx context.Context, p iterDaughterPrm) { initTrust, err := c.prm.InitialTrustSource.InitialTrust(p.id) if err != nil { @@ -157,69 +156,77 @@ func (c *Calculator) iterateDaughter(ctx context.Context, p iterDaughterPrm) { intermediateTrust.SetI(p.ei.I()) if p.lastIter { - finalWriter, err := c.prm.FinalResultTarget.InitIntermediateWriter(p.ei) - if err != nil { - c.opts.log.Debug("init writer failure", - zap.String("error", err.Error()), - ) - - return - } - - intermediateTrust.SetValue(sum) - - err = finalWriter.WriteIntermediateTrust(intermediateTrust) - if err != nil { - c.opts.log.Debug("write final result failure", - zap.String("error", err.Error()), - ) - - return - } + c.processLastIteration(p, intermediateTrust, sum) } else { - intermediateWriter, err := c.prm.IntermediateValueTarget.InitWriter(p.ei) - if err != nil { - c.opts.log.Debug("init writer failure", - zap.String("error", err.Error()), - ) + c.processIntermediateIteration(ctx, p, daughterIter, sum) + } +} - return +func (c *Calculator) processLastIteration(p iterDaughterPrm, intermediateTrust eigentrust.IterationTrust, sum reputation.TrustValue) { + finalWriter, err := c.prm.FinalResultTarget.InitIntermediateWriter(p.ei) + if err != nil { + c.opts.log.Debug("init writer failure", + zap.String("error", err.Error()), + ) + + return + } + + intermediateTrust.SetValue(sum) + + err = finalWriter.WriteIntermediateTrust(intermediateTrust) + if err != nil { + c.opts.log.Debug("write final result failure", + zap.String("error", err.Error()), + ) + + return + } +} + +func (c *Calculator) processIntermediateIteration(ctx context.Context, p iterDaughterPrm, daughterIter TrustIterator, sum reputation.TrustValue) { + intermediateWriter, err := c.prm.IntermediateValueTarget.InitWriter(p.ei) + if err != nil { + c.opts.log.Debug("init writer failure", + zap.String("error", err.Error()), + ) + + return + } + + err = daughterIter.Iterate(func(trust reputation.Trust) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: } - err = daughterIter.Iterate(func(trust reputation.Trust) error { - select { - case <-ctx.Done(): - return ctx.Err() - default: - } + val := trust.Value() + val.Mul(sum) - val := trust.Value() - val.Mul(sum) + trust.SetValue(val) - trust.SetValue(val) - - err := intermediateWriter.Write(ctx, trust) - if err != nil { - c.opts.log.Debug("write value failure", - zap.String("error", err.Error()), - ) - } - - return nil - }) + err := intermediateWriter.Write(ctx, trust) if err != nil { - c.opts.log.Debug("iterate daughter trusts failure", + c.opts.log.Debug("write value failure", zap.String("error", err.Error()), ) } - err = intermediateWriter.Close(ctx) - if err != nil { - c.opts.log.Error( - "could not close writer", - zap.String("error", err.Error()), - ) - } + return nil + }) + if err != nil { + c.opts.log.Debug("iterate daughter trusts failure", + zap.String("error", err.Error()), + ) + } + + err = intermediateWriter.Close(ctx) + if err != nil { + c.opts.log.Error( + "could not close writer", + zap.String("error", err.Error()), + ) } }