Skip to content
Snippets Groups Projects
Select Git revision
  • 51723c5d7043a11b5215507203b97823701fe2b7
  • without_tipselection default
  • develop protected
  • fix/grafana-local-dashboard
  • wasp
  • fix/dashboard-explorer-freeze
  • master
  • feat/timerqueue
  • test/sync_debug_and_650
  • feat/sync_revamp_inv
  • wip/sync
  • tool/db-recovery
  • portcheck/fix
  • fix/synchronization
  • feat/new-dashboard-analysis
  • feat/refactored-analysis-dashboard
  • feat/new-analysis-dashboard
  • test/demo-prometheus-fpc
  • prometheus_metrics
  • wip/analysis-server
  • merge/fpc-test-value-transfer
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.3
  • v0.1.2
  • v0.1.1
  • v0.1.0
28 results

accepted_neighbor_dropper.go

Blame
  • user avatar
    capossele authored
    0ac0ba45
    History
    accepted_neighbor_dropper.go 1.46 KiB
    package protocol
    
    import (
    	"time"
    
    	"github.com/iotaledger/goshimmer/packages/node"
    	"github.com/iotaledger/goshimmer/packages/timeutil"
    	"github.com/iotaledger/goshimmer/plugins/autopeering/instances/acceptedneighbors"
    	"github.com/iotaledger/goshimmer/plugins/autopeering/instances/ownpeer"
    	"github.com/iotaledger/goshimmer/plugins/autopeering/protocol/constants"
    	"github.com/iotaledger/goshimmer/plugins/autopeering/protocol/types"
    	"github.com/iotaledger/goshimmer/plugins/autopeering/types/drop"
    )
    
    func createAcceptedNeighborDropper(plugin *node.Plugin) func() {
    	return func() {
    		timeutil.Ticker(func() {
    			if len(acceptedneighbors.INSTANCE.Peers) > constants.NEIGHBOR_COUNT/2 {
    				defer acceptedneighbors.INSTANCE.Lock()()
    				for len(acceptedneighbors.INSTANCE.Peers) > constants.NEIGHBOR_COUNT/2 {
    					acceptedneighbors.FurthestNeighborLock.RLock()
    					furthestNeighbor := acceptedneighbors.FURTHEST_NEIGHBOR
    					acceptedneighbors.FurthestNeighborLock.RUnlock()
    
    					if furthestNeighbor != nil {
    						dropMessage := &drop.Drop{Issuer: ownpeer.INSTANCE}
    						dropMessage.Sign()
    
    						acceptedneighbors.INSTANCE.Remove(furthestNeighbor.Identity.StringIdentifier, false)
    						go func() {
    							if _, err := furthestNeighbor.Send(dropMessage.Marshal(), types.PROTOCOL_TYPE_UDP, false); err != nil {
    								plugin.LogDebug("error when sending drop message to" + acceptedneighbors.FURTHEST_NEIGHBOR.String())
    							}
    						}()
    					}
    				}
    			}
    		}, 1*time.Second)
    	}
    }