mirror of
https://github.com/redis/go-redis.git
synced 2025-07-28 06:42:00 +03:00
Add support for CLUSTER LINKS command (#2504)
* feat: Adding support for Cluster Links Command Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
f30d7c4a25
commit
42d730c143
89
command.go
89
command.go
@ -4246,3 +4246,92 @@ func (cmd *KeyFlagsCmd) readReply(rd *proto.Reader) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------
|
||||
|
||||
type ClusterLink struct {
|
||||
Direction string
|
||||
Node string
|
||||
CreateTime int64
|
||||
Events string
|
||||
SendBufferAllocated int64
|
||||
SendBufferUsed int64
|
||||
}
|
||||
|
||||
type ClusterLinksCmd struct {
|
||||
baseCmd
|
||||
|
||||
val []ClusterLink
|
||||
}
|
||||
|
||||
var _ Cmder = (*ClusterLinksCmd)(nil)
|
||||
|
||||
func NewClusterLinksCmd(ctx context.Context, args ...interface{}) *ClusterLinksCmd {
|
||||
return &ClusterLinksCmd{
|
||||
baseCmd: baseCmd{
|
||||
ctx: ctx,
|
||||
args: args,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (cmd *ClusterLinksCmd) SetVal(val []ClusterLink) {
|
||||
cmd.val = val
|
||||
}
|
||||
|
||||
func (cmd *ClusterLinksCmd) Val() []ClusterLink {
|
||||
return cmd.val
|
||||
}
|
||||
|
||||
func (cmd *ClusterLinksCmd) Result() ([]ClusterLink, error) {
|
||||
return cmd.Val(), cmd.Err()
|
||||
}
|
||||
|
||||
func (cmd *ClusterLinksCmd) String() string {
|
||||
return cmdString(cmd, cmd.val)
|
||||
}
|
||||
|
||||
func (cmd *ClusterLinksCmd) readReply(rd *proto.Reader) error {
|
||||
n, err := rd.ReadArrayLen()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cmd.val = make([]ClusterLink, n)
|
||||
|
||||
for i := 0; i < len(cmd.val); i++ {
|
||||
m, err := rd.ReadMapLen()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for j := 0; j < m; j++ {
|
||||
key, err := rd.ReadString()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch key {
|
||||
case "direction":
|
||||
cmd.val[i].Direction, err = rd.ReadString()
|
||||
case "node":
|
||||
cmd.val[i].Node, err = rd.ReadString()
|
||||
case "create-time":
|
||||
cmd.val[i].CreateTime, err = rd.ReadInt()
|
||||
case "events":
|
||||
cmd.val[i].Events, err = rd.ReadString()
|
||||
case "send-buffer-allocated":
|
||||
cmd.val[i].SendBufferAllocated, err = rd.ReadInt()
|
||||
case "send-buffer-used":
|
||||
cmd.val[i].SendBufferUsed, err = rd.ReadInt()
|
||||
default:
|
||||
return fmt.Errorf("redis: unexpected key %q in CLUSTER LINKS reply", key)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user