code: func NewPullMediator(config Config, adapter *PullAdapter) Mediator {
  	egressDigFilter := adapter.EgressDigFilter
  
  	acceptAllFilter := func(_ proto.ReceivedMessage) func(string) bool {
  		return func(_ string) bool {
  			return true
  		}
  	}
  
  	if egressDigFilter == nil {
  		egressDigFilter = acceptAllFilter
  	}
  
  	p := &pullMediatorImpl{
  		PullAdapter:  adapter,
  		msgType2Hook: make(map[MsgType][]MessageHook),
  		config:       config,
  		logger:       util.GetLogger(util.PullLogger, config.ID),
  		itemID2Msg:   make(map[string]*proto.SignedGossipMessage),
  	}
  
  	p.engine = algo.NewPullEngineWithFilter(p, config.PullInterval, egressDigFilter.byContext(), config.PullEngineConfig)
  
  	if adapter.IngressDigFilter == nil {
  		// Create accept all filter
  		adapter.IngressDigFilter = func(digestMsg *proto.DataDigest) *proto.DataDigest {
  			return digestMsg
  		}
  	}
  	return p
  
  }
docs: // NewPullMediator returns a new Mediator