acl 3.0.19 版本 (項目首頁:https://sourceforge.net/projects/acl/,技術文章首頁:http://zsxxsz.iteye.com/ ) 釋出了,acl 是 one advanced C/C++ library 的簡稱,主要包括網絡通信庫以及伺服器架構庫等功能,支援 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整個 acl 項目主要包含三個函數庫:lib_acl(純C開發的基礎庫,主要包含網絡通信及伺服器程式設計架構以及其它豐富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信協定的C語言實作)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 兩個C庫,提供了更為強大的程式設計接口及豐富的功能類);本次 acl 更新主要包含一些 BUG 修複及功能特性增加。
acl 包括以下豐富的常用函數庫:
1、常見網絡應用庫: SMTP 用戶端庫/PING 庫/memcache 用戶端庫/handlersocket 用戶端庫/beanstalk 用戶端庫
2、HTTP 網絡庫:HTTP 用戶端/服務端庫,C++版 HttpServlet 類,HTTP COOKIE/HTTP SESSION 等
3、郵件解析庫:mime解析庫/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
4、網絡通信庫:阻塞/非阻塞網絡 IO 庫(其中 lib_acl_cpp 庫通過嵌入 polarssl 而具備了 SSL 的能力)
5、伺服器架構:包括程序池模式、線程池模式、非阻塞模式、UDP通信模式及觸發器模式
6、事件引擎:支援 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 視窗消息(for win32)事件引擎
7、通用連接配接池庫:高效的連接配接池基礎類庫,支援豐富的功能
8、資料庫用戶端庫:對原生的資料庫用戶端庫進行了二次封裝,使程式設計更為簡易,功能更為豐富
9、xml/json 流式解析庫:差別于網上其它已有的 xml/json 解析庫,acl 中的 xml/json 解析庫采用有限狀态機方式解析資料,處理方式更為靈活
一、基礎 C 庫:lib_acl
.新特性:acl_scan_dir.c 增加了一些功能接口
.新特性:伺服器架構 acl_master 支援非 root 使用者身份運作
.性能優化:線程池庫(acl_pthread_pool.c), worker_wait() 函數将空閑線程添加至線程池和從線程池中移除的操作放在 pthread_cond_timedwait 等待循環的外面,這樣既可以減少添加/移除操作的次數,同時又可以使等待任務逾時的線程遲早地退出
.删除:去掉了 acl_ioctl_app_main.c/acl_aio_app_main.c,将 acl_aio_app_main.c 功能分别合并至 acl_aio_server.c 中;将 acl_ioctl_server.c 的接口申明為過期,建議使用者使用 acl_threads_server.c 中的功能接口
.問題修複:acl_vstream.c 中函數 acl_vstream_ftell 問題修複
.問題修複:acl_aqueue.c 異步線程消息隊列支援無限等待方式
二、lib_protocol 庫
.問題修複:http_hdr_req.c 中函數 http_hdr_req_cookies_parse 解析處理 cookie 時存在記憶體沖突
三、lib_acl_cpp 庫
.新特性:檔案類 fstream(fstream.cpp)增加了 ftell 方法,用來表示目前檔案指針位置
.新特性:連接配接類 connect_client(connect_client.cpp)增加了設定/擷取連接配接池對象的方法
.新特性:字元串類 string(string.cpp)增加了多個功能接口,友善對字元串的操作
.新特性:增加了目錄掃描類 scan_dir(scan_dir.cpp),可以非常友善地對目錄進行掃描等操作
.新特性:連接配接池管理類 connect_manager(connect_manager.cpp)增加了連接配接池故障自動恢複功能
.問題修複:異步處理伺服器類 master_aio(master_aio.cpp)在析構函數中不應調用異步處理函數,否則會引起記憶體沖突
.問題修複:http 處理類 http_client(http_client.cpp) 構造函數中未對緩沖區 buf_ 初始化,當調用 reset 方法會造成記憶體沖突
參考連結:
技術部落格:http://zsxxsz.iteye.com/
download:http://sourceforge.net/projects/acl/
svn:svn checkout svn://svn.code.sf.net/p/acl/code/trunk acl-code
github:https://github.com/acl-dev/acl
QQ 群:242722074