@@ -57,9 +57,6 @@ type Enforcer struct {
5757 autoNotifyDispatcher bool
5858 acceptJsonRequest bool
5959
60- policyEffectsPool sync.Pool
61- matcherResultsPool sync.Pool
62-
6360 aiConfig AIConfig
6461}
6562
@@ -190,8 +187,6 @@ func (e *Enforcer) initialize() {
190187 e .eft = effector .NewDefaultEffector ()
191188 e .watcher = nil
192189 e .matcherMap = sync.Map {}
193- e .policyEffectsPool = sync.Pool {New : func () interface {} { return & policyEffectsBuffer {values : make ([]effector.Effect , 0 )} }}
194- e .matcherResultsPool = sync.Pool {New : func () interface {} { return & matcherResultsBuffer {values : make ([]float64 , 0 )} }}
195190
196191 e .enabled = true
197192 e .autoSave = true
@@ -692,8 +687,11 @@ type matcherResultsBuffer struct {
692687 values []float64
693688}
694689
690+ var globalPolicyEffectsPool = sync.Pool {New : func () interface {} { return & policyEffectsBuffer {values : make ([]effector.Effect , 0 )} }}
691+ var globalMatcherResultsPool = sync.Pool {New : func () interface {} { return & matcherResultsBuffer {values : make ([]float64 , 0 )} }}
692+
695693func (e * Enforcer ) getPolicyEffectsBuffer (size int ) ([]effector.Effect , * policyEffectsBuffer ) {
696- buffer := e . policyEffectsPool .Get ().(* policyEffectsBuffer )
694+ buffer := globalPolicyEffectsPool .Get ().(* policyEffectsBuffer )
697695 if cap (buffer .values ) < size {
698696 buffer .values = make ([]effector.Effect , size )
699697 } else {
@@ -704,11 +702,11 @@ func (e *Enforcer) getPolicyEffectsBuffer(size int) ([]effector.Effect, *policyE
704702
705703func (e * Enforcer ) putPolicyEffectsBuffer (buffer * policyEffectsBuffer ) {
706704 buffer .values = buffer .values [:0 ]
707- e . policyEffectsPool .Put (buffer )
705+ globalPolicyEffectsPool .Put (buffer )
708706}
709707
710708func (e * Enforcer ) getMatcherResultsBuffer (size int ) ([]float64 , * matcherResultsBuffer ) {
711- buffer := e . matcherResultsPool .Get ().(* matcherResultsBuffer )
709+ buffer := globalMatcherResultsPool .Get ().(* matcherResultsBuffer )
712710 if cap (buffer .values ) < size {
713711 buffer .values = make ([]float64 , size )
714712 } else {
@@ -719,7 +717,7 @@ func (e *Enforcer) getMatcherResultsBuffer(size int) ([]float64, *matcherResults
719717
720718func (e * Enforcer ) putMatcherResultsBuffer (buffer * matcherResultsBuffer ) {
721719 buffer .values = buffer .values [:0 ]
722- e . matcherResultsPool .Put (buffer )
720+ globalMatcherResultsPool .Put (buffer )
723721}
724722
725723// enforce use a custom matcher to decides whether a "subject" can access a "object" with the operation "action", input parameters are usually: (matcher, sub, obj, act), use model matcher by default when matcher is "".
0 commit comments