在MySQL的源码中,mysql_com.h和violite.h中都有定义网络处理的结构,而且从表面上看好像是互相嵌套的,但应该里面的几个宏在发挥作作用,现在还没有深入不是特别了解。
在mysql_com.h中入下:
struct st_vio;
typedef struct st_vio Vio;
typedef struct st_net
{
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBeDDED_LIBRARY)//由于编辑器跟踪代码不方便,追踪进去
Vio *vio;
.....
...
}NET;
在violite.h中定义入下:
struct st_vio
{
.......
.......
#ifdef HAVE_SMEM
....
....
NET *net;
#endif//HAVE_SMEM
};
这两个头文件之间到底谁被使用了呢?它们之间又存在什么关系。
而在st_vio结构体中有几个回调函数是在viosocket.c中被实现的。当初为什么不在violite.c中实现呢。而violite.c中代码的实现又是如何的。
在看viosocket.c中的实现,已就是对几个简单的socket函数进行了封装。所以阿,写代码主要是有思想,同样的几个函数,不同的人使用效果不一样。当然这是需要经验的积累的。继续学习中。。。
现阶段目标:和MySQL源码混过眼熟