@@ -117,37 +117,40 @@ var defaultPolicies = map[module]map[commandName]*routing.CommandPolicy{
117117 },
118118}
119119
120- type CommandInfoResolver interface {
121- GetCommandPolicy (ctx context.Context , cmdName string ) * routing.CommandPolicy
122- SetFallbackResolver ( fallback CommandInfoResolver )
120+ type CommandInfoResolver struct {
121+ resolve func (ctx context.Context , cmdName string ) * routing.CommandPolicy
122+ fallBackResolver * CommandInfoResolver
123123}
124124
125- type internalCommandInfoResolver struct {
126- resolve func (ctx context.Context , cmdName string ) * routing.CommandPolicy
127- fallBackResolver CommandInfoResolver
125+ func NewCommandInfoResolver (resolver func (ctx context.Context , cmdName string ) * routing.CommandPolicy ) * CommandInfoResolver {
126+ return & CommandInfoResolver {
127+ resolve : resolver ,
128+ }
128129}
129130
130- func NewDefaultCommandPolicyResolver () * internalCommandInfoResolver {
131- return & internalCommandInfoResolver {
132- resolve : func (ctx context.Context , cmdName string ) * routing.CommandPolicy {
133- module := "core"
134- command := cmdName
135- cmdParts := strings .Split (cmdName , "." )
136- if len (cmdParts ) == 2 {
137- module = cmdParts [0 ]
138- command = cmdParts [1 ]
139- }
131+ func NewDefaultCommandPolicyResolver () * CommandInfoResolver {
132+ return NewCommandInfoResolver (func (ctx context.Context , cmdName string ) * routing.CommandPolicy {
133+ module := "core"
134+ command := cmdName
135+ cmdParts := strings .Split (cmdName , "." )
136+ if len (cmdParts ) == 2 {
137+ module = cmdParts [0 ]
138+ command = cmdParts [1 ]
139+ }
140140
141- if policy , ok := defaultPolicies [module ][command ]; ok {
142- return policy
143- }
141+ if policy , ok := defaultPolicies [module ][command ]; ok {
142+ return policy
143+ }
144144
145- return nil
146- },
147- }
145+ return nil
146+ })
148147}
149148
150- func (r * internalCommandInfoResolver ) GetCommandPolicy (ctx context.Context , cmdName string ) * routing.CommandPolicy {
149+ func (r * CommandInfoResolver ) GetCommandPolicy (ctx context.Context , cmdName string ) * routing.CommandPolicy {
150+ if r .resolve == nil {
151+ return nil
152+ }
153+
151154 policy := r .resolve (ctx , cmdName )
152155 if policy != nil {
153156 return policy
@@ -160,6 +163,6 @@ func (r *internalCommandInfoResolver) GetCommandPolicy(ctx context.Context, cmdN
160163 return nil
161164}
162165
163- func (r * internalCommandInfoResolver ) SetFallbackResolver (fallbackResolver CommandInfoResolver ) {
166+ func (r * CommandInfoResolver ) SetFallbackResolver (fallbackResolver * CommandInfoResolver ) {
164167 r .fallBackResolver = fallbackResolver
165168}
0 commit comments