tea (1) 基本模块

前面叙述了编写 configure.ac 和 Makefile.am,现在开始正式介绍 tea 的基本模块。

 

tea/inc目录下的头文件,就是tea基本模块的描述,主要包括:

    sock_srv.h 声明一个多线程的tcp server接口,实现对应 tea/src/sock_srv.c 其中使用了一个简单的线程池,如果平台支持openssl,同时支持tcp ssl server.

 

        在 sock_srv.c 的实现中,同时启动多个工作线程,每个线程的基本逻辑如下:

                 work thread proc:

                          while !exit do

                                   acquire lock

                                   work_sock = accept()

                                   release lock

                                   call PFN_ts_new_connection

                          end while

                 end proc

 

    http_msg.h 声明对一个 http request/response msg 的操作,和从字节流中解析 http msg 的方法;实现对应 tea/src/http_msg.c

 

      http msg parser 使用一个简单的状态机,每写入状态机一个字节,状态机判断状态转换,其实这里需要改进的,当状态为PS_BODY时,应该根据Content-Length,一次尽量写入多个字节,以提高效率。

 

    http_srv.h 基于 sock_srv,声明一个 httpd 接口,基本与 sock_srv.h 没啥区别,对应 tea/src/http_srv.c 实现

 

    特别的,使用 tcp_client 接口用于封装 socket 和 ssl 的内部实现。

 

    tea_httpd_plugin_inf.h 插件接口,声明兼容插件必须支持的接口。

 

    这里很直白,没啥可说的,提供 version() 的主要目的是为了扩展方便,当需要增加方法时,在结构后面增加就是了,通过version()检查,能够做到二进制兼容的。

 

    [plugin loader] 还没有开始写呢,目的是动态加载插件。行了,没写的就不说了.... 下次吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值