gitee.com/lh-her-team/common@v1.5.1/birdsnest/filter_extension_factore.go (about)

     1  package birdsnest
     2  
     3  import (
     4  	"sync"
     5  )
     6  
     7  var (
     8  	ErrFilterExtensionNotSupportMessage = "filter extension not support type: %v"
     9  )
    10  
    11  type factory struct {
    12  }
    13  
    14  var once sync.Once
    15  var _instance *factory
    16  
    17  // Factory return the global tx filter factory.
    18  //nolint: revive
    19  func Factory() *factory {
    20  	once.Do(func() { _instance = new(factory) })
    21  	return _instance
    22  }
    23  
    24  func (cf *factory) New(fet FilterExtensionType) (FilterExtension, error) {
    25  	switch fet {
    26  	case FilterExtensionType_FETDefault:
    27  		return NewDefaultFilterExtension(), nil
    28  	case FilterExtensionType_FETTimestamp:
    29  		return NewTimestampFilterExtension(), nil
    30  	default:
    31  		return nil, NewError(ErrFilterExtensionNotSupportMessage, fet)
    32  	}
    33  }