MCPcopy Create free account
hub / github.com/Firstyear/opensuse-proxy-cache / array4_parser

Function array4_parser

redis-server/src/parser.rs:78–113  ·  view source on GitHub ↗
(input: &[u8])

Source from the content-addressed store, hash-verified

76}
77
78fn array4_parser(input: &[u8]) -> IResult<&[u8], (Cmd<'_>, usize)> {
79 let mut taken = 0;
80
81 let (rem, (ln, sz)) = line_parser(input)?;
82
83 taken += sz;
84
85 tag("*4")(ln)?;
86
87 // What is the next value? That tells us if we should proceed now or not.
88 let (rem, (itype1, sz)) = type_parser(rem)?;
89 taken += sz;
90
91 match itype1 {
92 IType::BulkString(b"CLIENT") => {
93 let (rem, (itype2, sz)) = type_parser(rem)?;
94 taken += sz;
95 let (rem, (itype3, sz)) = type_parser(rem)?;
96 taken += sz;
97 let (rem, (itype4, sz)) = type_parser(rem)?;
98 taken += sz;
99
100 trace!("array4_parser - taken {:?}", taken);
101
102 match (itype2, itype3, itype4) {
103 (
104 IType::BulkString(b"SETINFO"),
105 IType::BulkString(name),
106 IType::BulkString(version),
107 ) => Ok((rem, (Cmd::ClientSetInfo(name, Some(version)), taken))),
108 _ => Ok((rem, (Cmd::Disconnect, taken))),
109 }
110 }
111 _ => Ok((rem, (Cmd::Disconnect, taken))),
112 }
113}
114
115fn array3_parser(input: &[u8]) -> IResult<&[u8], (Cmd<'_>, usize)> {
116 let mut taken = 0;

Callers

nothing calls this directly

Calls 2

line_parserFunction · 0.85
type_parserFunction · 0.85

Tested by

no test coverage detected