redis_event/cmd/
scripting.rs1use std::slice::Iter;
10
11#[derive(Debug)]
12pub struct EVAL<'a> {
13 pub script: &'a [u8],
14 pub num_keys: i32,
15 pub keys: Vec<&'a [u8]>,
16 pub args: Vec<&'a [u8]>,
17}
18
19pub(crate) fn parse_eval(mut iter: Iter<Vec<u8>>) -> EVAL {
20 let script = iter.next().unwrap();
21 let num_keys = iter.next().unwrap();
22 let num_keys = String::from_utf8_lossy(num_keys).parse::<i32>().unwrap();
23 let mut keys = Vec::with_capacity(num_keys as usize);
24 for _ in 0..num_keys {
25 let key = iter.next().unwrap();
26 keys.push(key.as_slice());
27 }
28 let mut args = Vec::new();
29 while let Some(arg) = iter.next() {
30 args.push(arg.as_slice());
31 }
32 EVAL {
33 script,
34 num_keys,
35 keys,
36 args,
37 }
38}
39
40#[derive(Debug)]
41pub struct EVALSHA<'a> {
42 pub sha1: &'a [u8],
43 pub num_keys: i32,
44 pub keys: Vec<&'a [u8]>,
45 pub args: Vec<&'a [u8]>,
46}
47
48pub(crate) fn parse_evalsha(mut iter: Iter<Vec<u8>>) -> EVALSHA {
49 let sha1 = iter.next().unwrap();
50 let num_keys = iter.next().unwrap();
51 let num_keys = String::from_utf8_lossy(num_keys).parse::<i32>().unwrap();
52 let mut keys = Vec::with_capacity(num_keys as usize);
53 for _ in 0..num_keys {
54 let key = iter.next().unwrap();
55 keys.push(key.as_slice());
56 }
57 let mut args = Vec::new();
58 while let Some(arg) = iter.next() {
59 args.push(arg.as_slice());
60 }
61 EVALSHA {
62 sha1,
63 num_keys,
64 keys,
65 args,
66 }
67}
68
69#[derive(Debug)]
70pub struct SCRIPTLOAD<'a> {
71 pub script: &'a [u8],
72}
73
74pub(crate) fn parse_script_load(mut iter: Iter<Vec<u8>>) -> SCRIPTLOAD {
75 let script = iter.next().unwrap();
76 SCRIPTLOAD { script }
77}