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 }