valkey_module/context/
client.rs1use crate::{
2 Context, RedisModuleClientInfo, RedisModule_GetClientCertificate, RedisModule_GetClientId,
3 RedisModule_GetClientInfoById, RedisModule_GetClientNameById,
4 RedisModule_GetClientUserNameById, RedisModule_SetClientNameById, ValkeyString,
5};
6use std::os::raw::c_void;
7
8impl RedisModuleClientInfo {
9 fn new() -> Self {
10 Self {
11 version: 1,
12 flags: 0,
13 id: 0,
14 addr: [0; 46],
15 port: 0,
16 db: 0,
17 }
18 }
19}
20
21impl Context {
24 pub fn get_client_id(&self) -> u64 {
25 unsafe { RedisModule_GetClientId.unwrap()(self.ctx) }
26 }
27
28 pub fn get_client_name(&self) -> ValkeyString {
29 let client_id = self.get_client_id();
30 let client_name = unsafe { RedisModule_GetClientNameById.unwrap()(self.ctx, client_id) };
31 ValkeyString::from_redis_module_string(self.ctx, client_name)
32 }
33
34 pub fn set_client_name(&self, client_name: &ValkeyString) -> i64 {
35 let client_id = self.get_client_id();
36 let resp = unsafe { RedisModule_SetClientNameById.unwrap()(client_id, client_name.inner) };
37 resp as i64
38 }
39
40 pub fn get_client_username(&self) -> ValkeyString {
41 let client_id = self.get_client_id();
42 let client_username =
43 unsafe { RedisModule_GetClientUserNameById.unwrap()(self.ctx, client_id) };
44 ValkeyString::from_redis_module_string(self.ctx, client_username)
45 }
46
47 pub fn get_client_cert(&self) -> ValkeyString {
48 let client_id = self.get_client_id();
49 let client_cert = unsafe { RedisModule_GetClientCertificate.unwrap()(self.ctx, client_id) };
50 ValkeyString::from_redis_module_string(self.ctx, client_cert)
51 }
52
53 pub fn get_client_info(&self) -> RedisModuleClientInfo {
54 let client_id = self.get_client_id();
55 let mut mci = RedisModuleClientInfo::new();
56 let mci_ptr: *mut c_void = &mut mci as *mut _ as *mut c_void;
57 unsafe { RedisModule_GetClientInfoById.unwrap()(mci_ptr, client_id) };
58 mci
59 }
60}