@@ -3,6 +3,7 @@ extern crate redismodule;
33
44use redismodule:: { Context , Command , RedisResult , NextArg } ;
55use redismodule:: native_types:: RedisType ;
6+ use redismodule:: redismodule:: RedisValue ;
67
78#[ derive( Debug ) ]
89struct MyType {
@@ -20,53 +21,38 @@ fn alloc_set(ctx: &Context, args: Vec<String>) -> RedisResult {
2021
2122 let key = ctx. open_key_writable ( & key) ;
2223
23- if key. is_empty ( ) {
24- let value = MyType {
25- data : "A" . repeat ( size as usize )
26- } ;
27-
28- ctx. log_debug ( format ! ( "key is empty; setting to value: '{:?}'" , value) . as_str ( ) ) ;
29-
30- key. set_value ( & MY_REDIS_TYPE , value) ?;
31- } else {
32- ctx. log_debug ( format ! ( "key exists; getting value" ) . as_str ( ) ) ;
33-
34- let value: & mut MyType = key. get_value ( & MY_REDIS_TYPE ) ?;
35- ctx. log_debug ( format ! ( "got value: '{:?}'" , value) . as_str ( ) ) ;
36-
37- value. data = "B" . repeat ( size as usize ) ;
38- ctx. log_debug ( format ! ( "new value: '{:?}'" , value) . as_str ( ) ) ;
39- } ;
24+ match key. get_value :: < MyType > ( & MY_REDIS_TYPE ) ? {
25+ None => {
26+ let value = MyType {
27+ data : "A" . repeat ( size as usize )
28+ } ;
29+
30+ key. set_value ( & MY_REDIS_TYPE , value) ?;
31+ }
32+ Some ( value) => {
33+ value. data = "B" . repeat ( size as usize ) ;
34+ }
35+ }
4036
4137 Ok ( size. into ( ) )
4238}
4339
44-
45- /*
4640fn alloc_get ( ctx : & Context , args : Vec < String > ) -> RedisResult {
4741 let mut args = args. into_iter ( ) . skip ( 1 ) ;
4842 let key = args. next_string ( ) ?;
4943
50- let key = ctx.open_key(&key);
51-
52- key.verify_and_get_type(&MY_REDIS_TYPE)?;
53- let my = key.get_value() as *mut MyType;
44+ let key = ctx. open_key_writable ( & key) ; // TODO: Use read-only key
5445
55- if my.is_null() {
56- r.reply_integer(0)?;
57- return Ok(());
46+ match key. get_value :: < MyType > ( & MY_REDIS_TYPE ) ? {
47+ None => Ok ( RedisValue :: None ) ,
48+ Some ( value) => {
49+ // TODO: Use the value
50+ let _ = value;
51+ Ok ( "some value" . into ( ) )
52+ }
5853 }
5954
60- let my = unsafe { &mut *my };
61- let size = my.data.len();
62-
63- r.reply_array(2)?;
64- r.reply_integer(size as i64)?;
65- r.reply_string(my.data.as_str())?;
66-
67- Ok(())
6855}
69- */
7056
7157//////////////////////////////////////////////////////
7258
0 commit comments