libevent主要是用C语言实现了事件通知的功能
下载安装
直接在OpenHarmony-SIG仓中搜索libevent并下载。
使用说明
以OpenHarmony 3.1 Beta的rk3568版本为例
-
库代码存放路径:./third_party/libevent
-
修改添加依赖的编译脚本
在/developtools/bytrace_standard/ohos.build文件中添加修改 “//third_party/libevent:libevent_targets”,“//third_party/libevent:libevent_test”
{"subsystem": "developtools","parts": {"bytrace_standard": {"module_list": ["//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core","//developtools/bytrace_standard/bin:bytrace_target","//developtools/bytrace_standard/bin:bytrace.cfg","//developtools/bytrace_standard/interfaces/kits/js/napi:bytrace","//third_party/libevent:libevent_targets","//third_party/libevent:libevent_test"],"inner_kits": [{"type": "so","name": "//developtools/bytrace_standard/interfaces/innerkits/native:bytrace_core","header": {"header_files": ["bytrace.h"],"header_base": "//developtools/bytrace_standard/interfaces/innerkits/native/include"}}],"test_list": ["//developtools/bytrace_standard/bin/test:unittest"]}}
}
-
用命令 ./build.sh --product-name rk3568 --ccache 编译
-
生成库文件路径:
out/rk3568/developtools/profiler(该路径生成库文件)
out/rk3568/common/common (该路径生成生成可执行测试文件)
接口说明
-
libevent的一次性初始化
event_init()
或event_base_new()
-
启用通知
声明一个事件结构并调用event_set()
来初始化该结构的成员
event_add()
将该结构添加到受监控事件列表中,只要事件结构处于活动状态,它就必须保持分配状态。
-
循环和分派事件
event_dispatch()
-
I/O 缓冲器
该库在常规事件回调之上提供了一个缓冲事件。提供了自动填充和排出的输入和输出缓冲区。缓冲事件的用户不再直接处理 I/O,而是从输入缓冲区读取并写入输出缓冲区
bufferevent_new()
初始化bufferevent_read()
读取bufferevent结构数据bufferevent_write()
往bufferevent结构写入数据 -
创建在一定时间到期后调用回调的计时器
evtimer_set ()
准备一个事件结构以用作计时器evtimer_add()
激活计时器evtimer_del()
停用计时器 -
异步DNS解析(使用回调来避免在执行查找时阻塞)
evdns_init()
初始化evdns_resolve_ipv4()
将主机名转换为 IP 地址evdns_resolve_reverse()
执行反向查找 -
事件驱动的 HTTP 服务器
该库提供了一个非常简单的事件驱动 HTTP 服务器,可以嵌入到程序中并用于服务 HTTP 请求
evhttp_new()
创建服务器evhttp_bind_socket()
添加要监听的地址和端口evhttp_set_cb()
为每个 URI 分配一个回调evhttp_set_gencb()
注册通用回调函数
约束与限制
在下述版本验证通过:
DevEco Studio 版本:3.1 Beta1(3.1.0.200),SDK:API9 Beta5(3.2.10.6)
目录结构
|---- libevent
| |---- cmake #存放cmake文件,配置cmake编译需要的头文件和源文件路径
| |---- compat #定义了很多宏定义,主要用于singly-linked list,list,simple queue,tail queue,circle queue等结构体
| |---- include #头文件
| |---- m4 #里面存放m4文件,m4是unix下的一种编程语言,m4文件就是用m4语言写的,通常是因为configure会依赖它
| |---- sample #demo
| |---- test #单元测试的代码目录
| |---- event.c # event主要方法实现数
| |---- epoll.c #对epoll的封装
| |---- select.c #对select的封装
| |---- devpull.c #对dev/poll的封装
| |---- kqueue.c #对kueue的封装
| |---- signal.c #对信号事件的处理
| |---- evutil.c #些辅助功能函数的实现,包含建立socket pair和一些时间操做函数
| |---- log.c #log日志实现
| |---- buffer*.c #对缓冲区封装
| |---- http.c #HTTP 服务器
| |---- evdns.c #异步dns查询库
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向