| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // Author: simon (ynwdlxm@163.com)
- // Date: 2025/7/11 13:51
- // Desc: 常见错误回复类型
- // Package reply 实现了Redis序列化协议(RESP)的错误响应
- // 提供标准化的错误类型用于常见Redis错误场景
- // 这些错误类型实现了Reply接口,允许在Redis服务器中返回错误信息
- package reply
- // UnknownErrReply 表示Redis协议中的未知错误回复
- // 当没有更具体的错误类型可用时使用
- type UnknownErrReply struct {
- Cmd string
- }
- func NewUnknownErrReply(cmd string) *UnknownErrReply {
- return &UnknownErrReply{Cmd: cmd}
- }
- func (u *UnknownErrReply) String() string {
- return u.Error()
- }
- func (u *UnknownErrReply) Error() string {
- return "Err unknown command '" + u.Cmd + "'"
- }
- func (u *UnknownErrReply) ToBytes() []byte {
- return []byte("-Err unknown command '" + u.Cmd + "'\r\n")
- }
- // ArgNumErrReply 表示命令参数数量错误的响应
- // 当命令的参数数量不符合预期时使用
- type ArgNumErrReply struct {
- Cmd string
- }
- func (a *ArgNumErrReply) Error() string {
- return "ERR wrong number of arguments for '" + a.Cmd + "' command"
- }
- func (a *ArgNumErrReply) ToBytes() []byte {
- return []byte("-ERR wrong number of arguments for '" + a.Cmd + "' command\r\n")
- }
- func (a *ArgNumErrReply) String() string {
- return a.Error()
- }
- // NewArgNumErrReply 创建指定命令的参数数量错误响应
- func NewArgNumErrReply(cmd string) *ArgNumErrReply {
- return &ArgNumErrReply{
- Cmd: cmd,
- }
- }
- // SyntaxErrReply 表示命令语法错误的通用响应
- // 对应Redis的"syntax error"响应
- type SyntaxErrReply struct{}
- func (s *SyntaxErrReply) String() string {
- return s.Error()
- }
- func (s *SyntaxErrReply) Error() string {
- return "Err syntax error"
- }
- func (s *SyntaxErrReply) ToBytes() []byte {
- return []byte("-Err syntax error\r\n")
- }
- func NewSyntaxErrReply() *SyntaxErrReply {
- return &SyntaxErrReply{}
- }
- // WrongTypeErrReply 表示对键值进行类型不匹配操作的错误
- // 对应Redis的 "WRONGTYPE" 错误响应
- type WrongTypeErrReply struct{}
- func (w *WrongTypeErrReply) Error() string {
- return "WRONG TYPE Operation against a key holding the wrong kind of value"
- }
- func (w *WrongTypeErrReply) String() string {
- return w.Error()
- }
- func (w *WrongTypeErrReply) ToBytes() []byte {
- return []byte("-WRONG TYPE Operation against a key holding the wrong kind of value\r\n")
- }
- func NewWrongTypeErrReply() *WrongTypeErrReply {
- return &WrongTypeErrReply{}
- }
- // ProtocolErrReply 表示违反RESP协议规范的错误
- // Msg 包含具体的协议违规详情
- type ProtocolErrReply struct {
- Msg string
- }
- func (p *ProtocolErrReply) String() string {
- return p.Error()
- }
- func (p *ProtocolErrReply) Error() string {
- return "ERR Protocol error: '" + p.Msg + "'"
- }
- func (p *ProtocolErrReply) ToBytes() []byte {
- return []byte("-ERR Protocol error: '" + p.Msg + "'\r\n")
- }
- func NewProtocolErrReply(msg string) *ProtocolErrReply {
- return &ProtocolErrReply{
- Msg: msg,
- }
- }
|