corosync-cmap使用指南

corosync-cmap使用指南

cmap是corosync的内存key/value存储。cmap提供了如下功能:

  1. 创建key
  2. 修改已经存在的key
  3. 移除key
  4. 根据前缀迭代key
  5. 跟踪key的改变

cmap api

cmap的value支持如下几种类型:

CMAP_VALUETYPE_INT8 - 8-bit signed integer

CMAP_VALUETYPE_UINT8 - 8-bit unsigned integer

CMAP_VALUETYPE_INT16 - 16-bit signed integer

CMAP_VALUETYPE_UINT16 - 16-bit unsigned integer

CMAP_VALUETYPE_INT32 - 32-bit signed integer

CMAP_VALUETYPE_UINT32 - 32-bit unsigned integer

CMAP_VALUETYPE_INT64 - 64-bit signed integer

CMAP_VALUETYPE_UINT64 - 64-bit unsigned integer

CMAP_VALUETYPE_FLOAT - Float value

CMAP_VALUETYPE_DOUBLE - Double value

CMAP_VALUETYPE_STRING - C-style string

CMAP_VALUETYPE_BINARY - Binary data, byte with zero value has no special meaning
  • cmap_initialize

    cs_error_t cmap_initialize (cmap_handle_t *handle );
    

    初始化一个cmap句柄,后面使用该句柄进行key的插入修改删除和跟踪。

  • cmap_set

    cs_error_t cmap_set (cmap_handle_t handle,  // 初始化时生成的句柄
                         const char *key_name,  // 要添加的key名称
                         const void *value,     // key对应的值
                         size_t value_len,      // 值的长度
                         cmap_value_types_t type); // 值的类型
    

    也可以使用指定值类型的接口:

    cs_error_t cmap_set_int8(cmap_handle_t handle, const char *key_name, int8_t value);
    
    cs_error_t cmap_set_uint8(cmap_handle_t handle, const char *key_name, uint8_t value);
    
    cs_error_t cmap_set_int16(cmap_handle_t handle, const char *key_name, int16_t value);
    
    cs_error_t cmap_set_uint16(cmap_handle_t handle, const char *key_name, uint16_t value);
    
    cs_error_t cmap_set_int32(cmap_handle_t handle, const char *key_name, int32_t value);
    
    cs_error_t cmap_set_uint32(cmap_handle_t handle, const char *key_name, uint32_t value);
    
    cs_error_t cmap_set_int64(cmap_handle_t handle, const char *key_name, int64_t value);
    
    cs_error_t cmap_set_uint64(cmap_handle_t handle, const char *key_name, uint64_t value);
    
    cs_error_t cmap_set_float(cmap_handle_t handle, const char *key_name, float value);
    
    cs_error_t cmap_set_double(cmap_handle_t handle, const char *key_name, double value);
    
    cs_error_t cmap_set_string(cmap_handle_t handle, const char *key_name, const char *value);
    
  • cmap_get

    cmap_get用于读取key对应的值,接口与cmap_set相似:

    cs_error_t cmap_get (cmap_handle_t handle,  // cmap句柄
                         const char *key_name, // 要查看的key
                         void *value,          // key对应的值会存到value
                         size_t *value_len,    // value的长度会存到这里
                         cmap_value_types_t *type); // value的类型会存到这里
    

    同样的,若知道value的明确类型,则可以使用指定类型的接口:

    cs_error_t cmap_get_int8 (cmap_handle_t handle, const char *key_name, int8_t *i8);
    
    cs_error_t cmap_get_uint8 (cmap_handle_t handle, const char *key_name, uint8_t *u8);
    
    cs_error_t cmap_get_int16 (cmap_handle_t handle, const char *key_name, int16_t *i16);
    
    cs_error_t cmap_get_uint16 (cmap_handle_t handle, const char *key_name, uint16_t *u16);
    
    cs_error_t cmap_get_int32 (cmap_handle_t handle, const char *key_name, int32_t *i32);
    
    cs_error_t cmap_get_uint32 (cmap_handle_t handle, const char *key_name, uint32_t *u32);
    
    cs_error_t cmap_get_int64 (cmap_handle_t handle, const char *key_name, int64_t *i64);
    
    cs_error_t cmap_get_uint64 (cmap_handle_t handle, const char *key_name, uint64_t *u64);
    
    cs_error_t cmap_get_float (cmap_handle_t handle, const char *key_name, float *flt);
    
    cs_error_t cmap_get_double (cmap_handle_t handle, const char *key_name, double *dbl);
    
    cs_error_t cmap_get_string (cmap_handle_t handle, const char *key_name, char **str);
    
  • cmap_delete

    cs_error_t cmap_delete(cmap_handle_t handle, const char *key_name);
    

    删除某个可以。

  • cmap_track_add

    cs_error_t cmap_track_add (cmap_handle_t handle, // cmap句柄
                               const char *key_name, // key名
                               int32_t track_type,   // track的类型
                               cmap_notify_fn_t notify_fn, // value变更时的回调函数
                               void *user_data,   // 回调时传递的数据
                               cmap_track_handle_t *cmap_track_handle // 用于调度分发的track句柄
                              );
    
    

    添加对某个key的value的变化跟踪,当value改变时会触发notify_fn回调。需在进程中循环调用cmap_dispatch。

  • cmap_finalize

    cs_error_t cmap_finalize (cmap_handle_t handle);
    

    释放cmap句柄。

cmap的大致使用流程如下:

cmap_initialize
cmap_set
cmap_get
cmap_delete
cmap_finalize
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

growdu_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值