zlog学习笔记(mdc)
mdc.h
#ifndef __zlog_mdc_h
#define __zlog_mdc_h #include "zc_defs.h" typedef struct zlog_mdc_s zlog_mdc_t;
struct zlog_mdc_s{
zc_hashtable_t *tab;
}; zlog_mdc_t *zlog_mdc_new(void);
void zlog_mdc_del(zlog_mdc_t *a_mdc);
void zlog_mdc_profile(zlog_mdc_t *a_mdc, int flag); void zlog_mdc_clean(zlog_mdc_t *a_mdc);
int zlog_mdc_put(zlog_mdc_t *a_mdc, const char *key, const char *value);
char *zlog_mdc_get(zlog_mdc_t *a_mdc, const char *key);
void zlog_mdc_remove(zlog_mdc_t *a_mdc, const char *key); typedef struct zlog_mdc_kv_s{
char key[MAXLEN_PATH + ];
char value[MAXLEN_PATH + ];
size_t value_len;
}zlog_mdc_kv_t; zlog_mdc_kv_t *zlog_mdc_get_kv(zlog_mdc_t *a_mdc, const char *key); #endif
mdc.c
/**
* 文件作用
*/ #include <stdlib.h>
#include <stdio.h>
#include <errno.h> #include "mdc.h"
#include "zc_defs.h" void zlog_mdc_profile(zlog_mdc_t *a_mdc, int flag){
zc_assert(a_mdc,); zc_hashtable_entry_t *a_entry;
zlog_mdc_kv_t *a_mdc_kv; zc_hashtable_foreach(a_mdc->tab, a_entry){
a_mdc_kv = a_entry->value;
zc_profile(flag, "---mdc_kv[%p][%s]-[%s]---",
a_mdc_kv,
a_mdc_kv->key,
a_mdc_kv->value
);
}
return;
} //-------------------------------------------------------------------------
void zlog_mdc_del(zlog_mdc_t *a_mdc){
zc_assert(a_mdc,);
if(a_mdc->tab){
zc_hashtable_del(a_mdc->tab);
}
free(a_mdc);
zc_debug("zlog_mdc_del[%p]", a_mdc);
return;
} static void zlog_mdc_kv_del(zlog_mdc_kv_t *a_mdc_kv){
free(a_mdc_kv);
zc_debug("zlog_mdc_kv_del[%p]", a_mdc_kv);
return;
} /**
* struct zlog_mdc_kv_s{
* char key[MAXLEN_PATH + 1];
* char value[MAXLEN_PATH + 1];
* size_t value_len;
* }
*/
static zlog_mdc_kv_t *zlog_mdc_kv_new(const char *key, const char *value){
zlog_mdc_kv_t *a_mdc_kv; a_mdc_kv = (zlog_mdc_kv_t *)calloc(, sizeof(zlog_mdc_kv_t));
if(!a_mdc_kv){
zc_error("calloc fail, errno[%d]", errno);
return NULL;
} snprintf(a_mdc_kv->key, sizeof(a_mdc_kv->key), "%s", key);
a_mdc_kv->value_len = snprintf(a_mdc_kv->value, sizeof(a_mdc_kv->value), "%s", value);
return a_mdc_kv;
} /**
* struct zlog_mdc_s{
* zc_hashtable_t *tab;
* }
*/
zlog_mdc_t *zlog_mdc_new(void){
zlog_mdc_t *a_mdc; a_mdc = calloc(, sizeof(zlog_mdc_t));
if(!a_mdc){
zc_error("calloc fail, errno[%d]", errno);
return NULL;
} a_mdc->tab = zc_hashtable_new(
,
zc_hashtable_str_hash,
zc_hashtable_str_equal,
NULL,
(zc_hashtable_del_fn) zlog_mdc_kv_del
);
if(!a_mdc->tab){
zc_error("zc_hashtable_new_fail");
goto err;
} return a_mdc;
err:
zlog_mdc_del(a_mdc);
return NULL;
} int zlog_mdc_put(zlog_mdc_t *a_mdc, const char *key, const char *value){
zlog_mdc_kv_t *a_mdc_kv; a_mdc_kv = zlog_mdc_kv_new(key, value);
if(!a_mdc_kv){
zc_error("zlog_new_kv_new failed");
return -;
} if(zc_hashtable_put(a_mdc->tab, a_mdc_kv->key, a_mdc_kv)){
zc_error("zc_hashtable_put fail");
zlog_mdc_kv_del(a_mdc_kv);
return -;
} return ;
} char *zlog_mdc_get(zlog_mdc_t *a_mdc, const char *key){
zlog_mdc_kv_t *a_mdc_kv; a_mdc_kv = zc_hashtable_get(a_mdc->tab, key);
if(!a_mdc_kv){
zc_error("zc_hashtable_get fail");
return NULL;
}else{
return a_mdc_kv->value;
}
} zlog_mdc_kv_t *zlog_mdc_get_kv(zlog_mdc_t *a_mdc, const char *key){
zlog_mdc_kv_t *a_mdc_kv; a_mdc_kv = zc_hashtable_get(a_mdc->tab, key);
if(!a_mdc_kv){
zc_error("zc_hashtable_get fail");
return NULL;
}else{
return a_mdc_kv;
}
} void zlog_mdc_remove(zlog_mdc_t *a_mdc, const char *key){
zc_hashtable_remove(a_mdc->tab, key);
return;
} void zlog_mdc_clean(zlog_mdc_t *a_mdc){
zc_hashtable_clean(a_mdc->tab);
return;
}
test_mdc.c
#include <stdio.h>
#include <string.h>
#include <time.h> #include "zc_defs.h"
#include "zc_hashtable.h"
#include "mdc.h" #include "zc_profile.c" #include "mdc.c"
#include "zc_hashtable.c" int main(){
zlog_mdc_t *a_mdc;
a_mdc = zlog_mdc_new();
if(!a_mdc){
fprintf(stderr, "%s", "zlog_mdc_new fail");
return -;
} zlog_mdc_put(a_mdc, "name", "jimmy");
char *name = zlog_mdc_get(a_mdc, "name");
printf("name = %s\n", name); time_t tt;
struct tm timer;
char time_str[];
time(&tt);
localtime_r(&tt, &timer);
strftime(time_str, , "%Y-%m-%d %H:%M:%S", &timer);
zlog_mdc_put(a_mdc, "time", time_str);
char *ps = zlog_mdc_get(a_mdc, "time");
printf("time = %s\n", ps); zlog_mdc_profile(a_mdc, ZC_DEBUG);
zlog_mdc_clean(a_mdc);
zlog_mdc_profile(a_mdc, ZC_DEBUG); zlog_mdc_del(a_mdc);
}
zlog学习笔记(mdc)的更多相关文章
- zlog学习笔记(level_list)
level_list.h /** * */ #ifndef __zlog_level_list_h #define __zlog_level_list_h zc_arraylist_t *zlog_l ...
- zlog学习笔记(level)
level.h /** * */ #ifndef __zlog_level_h #define __zlog_level_h #include "stdio.h" #include ...
- zlog学习笔记(zc_hashtable)
zc_hashtable.h /** * hashtable */ #ifndef __zc_hashtable_h #define __zc_hashtable_h typedef struct z ...
- zlog学习笔记(zc_arraylist)
zc_arraylist.h /** * 实现类似列表的功能 * */ #ifndef __zc_arraylist_h #define __zc_arraylist_h #define ARRAY_ ...
- zlog学习笔记(zc_profile)
zc_profile.h #ifndef __zlog_profile_h #define __zlog_profile_h #define EMPTY() #define zc_assert(exp ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- 【Visual C++】游戏编程学习笔记之四:透明动画实现
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...
- 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
- 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)
本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder 微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...
随机推荐
- iOS cookie问题
获取cookie时汉字应转换为UTF8格式
- 【Android】保存Fragment切换状态
前言 一般频繁切换Fragment会导致频繁的释放和创建,如果Fragment比较臃肿体验就非常不好了,这里分享一个方法. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.c ...
- CSS Sprites (CSS图像拼合技术)教程工具
什么是CSS Sprites? “Sprite”(精灵)这个词在计算机图形学中有它独特的定义,由于游戏.视频等画质越来越高,必须有一种技术可以智能的处理材质和贴图,并且要 同时保持画面流畅.“Spri ...
- SSH新学
流程:model-->dao-->service-->impService-->action 如果只是操作单个的一个表,比如user表,则都写到user的流程中 如果要操作俩个 ...
- Sublime更换默认字体的方法
Sublime是一款很不错的编辑器,不过默认安装后的字体却不尽人意,并且Sublime竟然连个完整的设置页面都没有(直接让你编辑配置文件).于是很多人对这字体就忍气吞声了.其实只要添加一行代码就可以完 ...
- mysql 去重,跨表更新,跨表删除
一.去重 1.查询出重复的记录 CREATE TABLE push_log_full_2013_10_30_tmp SELECT * FROM `push_log_full` WHERE time B ...
- PHP 取前一天或后一天、一个月时间
//获得当前时间 //date()格式化时间返回String类型. date("Y-m-d H:i:s") $current_date = date(’Y-m-d’ ...
- cocoapods降级版本
1.卸载当前版本sudo gem uninstall cocoapods 2.下载旧版本sudo gem install cocoapods -v 0.39.0 PS: 如果之前装有多版本,执行1之后 ...
- x01.Game.LitSkull: 梯次防御
1.人要有点精神 人要有点精神,否则,不是沦落为毫无意义的看客,就是退化成食色性也的动物,有被开除球籍的危险,如晚清. 2.框架 引号头文件在当前目录下搜寻,三角头文件在配置目录下搜寻,这是一个简单的 ...
- 用php生成静态html页面(通用2种方法)
因为每次用户点击动态链接的时候都会对服务器发送数据查询的要求 对于一个访问量可能达百万千万级别的网站来说 这无疑是服务器一个大大的负担 所以把动态数据转换成静态html页面就成了节省人力物力的首选 因 ...