網絡與服務器編程框架庫,acl_3.0.19 版本發布
acl 3.0.19 版本發布了,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庫,提供了更為強大的編程接口及豐富的功能類);
特性如下:
- data structure: array/htable/ring/stack/avl
- socket/file stream(sync stream and async stream)
- http/icmp/smtp protocol
- json/xml/mime/base64/qp/uucode, etc parse lib
- thread/process pool
- mysql/sqlite connection pool
- event(select, poll, iocp, epoll, kqueue, devpoll, win32 message)
- server framework(threads pool/proccess pool/aio/trigger/udp, etc)
- HttpServlet for C++; http client/server lib
- log/configure lib
- file queue
- handler socket/memcached/beanstalkd client
- zlib/iconv wrapper
- session manager
- unit test framework </ul> 本次 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(httpclient.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/zhengshuxin/acl
QQ 群:242722074
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!