add the support for the parse of basic redis module type
Signed-off-by: liyaojie <lyj199907@outlook.com>
This commit is contained in:
parent
037dbe373a
commit
4ffacd13ab
|
@ -0,0 +1,71 @@
|
|||
package structure
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
rdbModuleOpcodeEOF = 0 // End of module value.
|
||||
rdbModuleOpcodeSINT = 1 // Signed integer.
|
||||
rdbModuleOpcodeUINT = 2 // Unsigned integer.
|
||||
rdbModuleOpcodeFLOAT = 3 // Float.
|
||||
rdbModuleOpcodeDOUBLE = 4 // Double.
|
||||
rdbModuleOpcodeSTRING = 5 // String.
|
||||
)
|
||||
|
||||
func ReadModuleUnsigned(rd io.Reader) string {
|
||||
opcode := ReadByte(rd)
|
||||
if opcode != rdbModuleOpcodeUINT {
|
||||
log.Panicf("Unknown module unsigned encode type")
|
||||
}
|
||||
value := ReadLength(rd)
|
||||
return strconv.FormatUint(value, 10)
|
||||
}
|
||||
|
||||
func ReadModuleSigned(rd io.Reader) string {
|
||||
opcode := ReadByte(rd)
|
||||
if opcode != rdbModuleOpcodeSINT {
|
||||
log.Panicf("Unknown module signed encode type")
|
||||
}
|
||||
value := ReadLength(rd)
|
||||
return strconv.FormatUint(value, 10)
|
||||
}
|
||||
|
||||
func ReadModuleFloat(rd io.Reader) string {
|
||||
opcode := ReadByte(rd)
|
||||
if opcode != rdbModuleOpcodeDOUBLE {
|
||||
|
||||
log.Panicf("Unknown module double encode type")
|
||||
}
|
||||
value := ReadDouble(rd)
|
||||
return fmt.Sprintf("%f", value)
|
||||
}
|
||||
|
||||
func ReadModuleDouble(rd io.Reader) string {
|
||||
opcode := ReadByte(rd)
|
||||
if opcode != rdbModuleOpcodeDOUBLE {
|
||||
log.Panicf("Unknown module double encode type")
|
||||
}
|
||||
value := ReadDouble(rd)
|
||||
return fmt.Sprintf("%f", value)
|
||||
}
|
||||
|
||||
func ReadModuleString(rd io.Reader) string {
|
||||
opcode := ReadByte(rd)
|
||||
if opcode != rdbModuleOpcodeSTRING {
|
||||
log.Panicf("Unknown module string encode type")
|
||||
}
|
||||
return ReadString(rd)
|
||||
}
|
||||
|
||||
func ReadModuleEof(rd io.Reader) error {
|
||||
eof := ReadLength(rd)
|
||||
if eof != rdbModuleOpcodeEOF {
|
||||
log.Panicf("The RDB file is not teminated by the proper module value EOF marker")
|
||||
}
|
||||
return nil
|
||||
|
||||
}
|
Loading…
Reference in New Issue