(input: &[u8])
| 76 | } |
| 77 | |
| 78 | fn 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 | |
| 115 | fn array3_parser(input: &[u8]) -> IResult<&[u8], (Cmd<'_>, usize)> { |
| 116 | let mut taken = 0; |
nothing calls this directly
no test coverage detected