Skip to content

Commit ec3fc78

Browse files
removed the interface, slight refactor
1 parent 70bb290 commit ec3fc78

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
@@ -925,7 +925,7 @@ type ClusterClient struct {
925925
nodes *clusterNodes
926926
state *clusterStateHolder
927927
cmdsInfoCache *cmdsInfoCache
928-
cmdInfoResolver CommandInfoResolver
928+
cmdInfoResolver *CommandInfoResolver
929929
cmdable
930930
hooksMixin
931931
}
@@ -944,7 +944,9 @@ func NewClusterClient(opt *ClusterOptions) *ClusterClient {
944944

945945
c.state = newClusterStateHolder(c.loadState)
946946

947-
c.cmdInfoResolver = c.NewDynamicResolver()
947+
dynamicResolver := c.NewDynamicResolver()
948+
dynamicResolver.SetFallbackResolver(NewDefaultCommandPolicyResolver())
949+
c.SetCommandInfoResolver(dynamicResolver)
948950

949951
c.cmdable = c.Process
950952
c.initHooks(hooks{
@@ -1980,11 +1982,11 @@ func (c *ClusterClient) context(ctx context.Context) context.Context {
19801982
return context.Background()
19811983
}
19821984

1983-
func (c *ClusterClient) GetResolver() CommandInfoResolver {
1985+
func (c *ClusterClient) GetResolver() *CommandInfoResolver {
19841986
return c.cmdInfoResolver
19851987
}
19861988

1987-
func (c *ClusterClient) SetCommandInfoResolver(cmdInfoResolver CommandInfoResolver) {
1989+
func (c *ClusterClient) SetCommandInfoResolver(cmdInfoResolver *CommandInfoResolver) {
19881990
c.cmdInfoResolver = cmdInfoResolver
19891991
}
19901992

@@ -1997,8 +1999,10 @@ func (c *ClusterClient) extractCommandInfo(ctx context.Context, cmdName string)
19971999
return nil
19982000
}
19992001

2000-
func (c *ClusterClient) NewDynamicResolver() CommandInfoResolver {
2001-
return &internalCommandInfoResolver{
2002+
// NewDynamicResolver returns a CommandInfoResolver
2003+
// that uses the underlying cmdInfo cache to resolve the policies
2004+
func (c *ClusterClient) NewDynamicResolver() *CommandInfoResolver {
2005+
return &CommandInfoResolver{
20022006
resolve: c.extractCommandInfo,
20032007
}
20042008
}

0 commit comments

Comments
 (0)