Skip to content

Commit 9c42243

Browse files
removed the interface, slight refactor
1 parent ae4e5c6 commit 9c42243

File tree

2 files changed

+37
-30
lines changed

2 files changed

+37
-30
lines changed

command_policy_resolver.go

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

osscluster.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,7 +1017,7 @@ type ClusterClient struct {
10171017
nodes *clusterNodes
10181018
state *clusterStateHolder
10191019
cmdsInfoCache *cmdsInfoCache
1020-
cmdInfoResolver CommandInfoResolver
1020+
cmdInfoResolver *CommandInfoResolver
10211021
cmdable
10221022
hooksMixin
10231023
}
@@ -1036,7 +1036,9 @@ func NewClusterClient(opt *ClusterOptions) *ClusterClient {
10361036

10371037
c.state = newClusterStateHolder(c.loadState)
10381038

1039-
c.cmdInfoResolver = c.NewDynamicResolver()
1039+
dynamicResolver := c.NewDynamicResolver()
1040+
dynamicResolver.SetFallbackResolver(NewDefaultCommandPolicyResolver())
1041+
c.SetCommandInfoResolver(dynamicResolver)
10401042

10411043
c.cmdable = c.Process
10421044
c.initHooks(hooks{
@@ -2197,11 +2199,11 @@ func (c *ClusterClient) context(ctx context.Context) context.Context {
21972199
return context.Background()
21982200
}
21992201

2200-
func (c *ClusterClient) GetResolver() CommandInfoResolver {
2202+
func (c *ClusterClient) GetResolver() *CommandInfoResolver {
22012203
return c.cmdInfoResolver
22022204
}
22032205

2204-
func (c *ClusterClient) SetCommandInfoResolver(cmdInfoResolver CommandInfoResolver) {
2206+
func (c *ClusterClient) SetCommandInfoResolver(cmdInfoResolver *CommandInfoResolver) {
22052207
c.cmdInfoResolver = cmdInfoResolver
22062208
}
22072209

@@ -2214,8 +2216,10 @@ func (c *ClusterClient) extractCommandInfo(ctx context.Context, cmdName string)
22142216
return nil
22152217
}
22162218

2217-
func (c *ClusterClient) NewDynamicResolver() CommandInfoResolver {
2218-
return &internalCommandInfoResolver{
2219+
// NewDynamicResolver returns a CommandInfoResolver
2220+
// that uses the underlying cmdInfo cache to resolve the policies
2221+
func (c *ClusterClient) NewDynamicResolver() *CommandInfoResolver {
2222+
return &CommandInfoResolver{
22192223
resolve: c.extractCommandInfo,
22202224
}
22212225
}

0 commit comments

Comments
 (0)