OpenHarmony网络协议通信—libevent [GN编译] - 事件通知库

libevent主要是用C语言实现了事件通知的功能

下载安装

直接在OpenHarmony-SIG仓中搜索libevent并下载。

使用说明

以OpenHarmony 3.1 Beta的rk3568版本为例

  1. 库代码存放路径:./third_party/libevent

  2. 修改添加依赖的编译脚本

在/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"
      ]
    }
  }
}
  1. 用命令 ./build.sh --product-name rk3568 --ccache 编译

  2. 生成库文件路径:

    out/rk3568/developtools/profiler(该路径生成库文件)

    out/rk3568/common/common (该路径生成生成可执行测试文件)

接口说明

  1. libevent的一次性初始化 event_init()event_base_new()

  2. 启用通知

声明一个事件结构并调用event_set()来初始化该结构的成员

event_add()将该结构添加到受监控事件列表中,只要事件结构处于活动状态,它就必须保持分配状态。

  1. 循环和分派事件

    event_dispatch()

  2. I/O 缓冲器

    该库在常规事件回调之上提供了一个缓冲事件。提供了自动填充和排出的输入和输出缓冲区。缓冲事件的用户不再直接处理 I/O,而是从输入缓冲区读取并写入输出缓冲区

    bufferevent_new() 初始化

    bufferevent_read() 读取bufferevent结构数据

    bufferevent_write() 往bufferevent结构写入数据

  3. 创建在一定时间到期后调用回调的计时器

    evtimer_set () 准备一个事件结构以用作计时器

    evtimer_add() 激活计时器

    evtimer_del() 停用计时器

  4. 异步DNS解析(使用回调来避免在执行查找时阻塞) evdns_init() 初始化

    evdns_resolve_ipv4() 将主机名转换为 IP 地址

    evdns_resolve_reverse() 执行反向查找

  5. 事件驱动的 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

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ......

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ......

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ......

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题

2.性能优化方向

3.架构方向

4.鸿蒙开发系统底层方向

5.鸿蒙音视频开发方向

6.鸿蒙车载开发方向

7.鸿蒙南向开发方向

相关推荐
炼石网络43 分钟前
交通运输部4项网络与数据安全标准发布
网络·安全·web安全
51744 分钟前
网络编程(UDP)
网络·网络协议·udp
、我是男生。1 小时前
巴法云平台-TCP设备云-微信小程序实时接收显示数据-原理
网络协议·tcp/ip·微信小程序
川穹冬菱草2 小时前
Ubuntu 20.04.6编译安装COMFAST CF-AX90无线网卡驱动
网络·编译安装·comfast cf-ax90·无线网卡驱动·linux网卡驱动·ubuntu网卡驱动·aic8800驱动
sky.fly3 小时前
多路由器通过三层交换机互相通讯(单臂路由+静态路由+默认路由版),通过三层交换机让pc端相互通讯
网络·tcp/ip·计算机网络·智能路由器
云达闲人4 小时前
Proxmox VE 用户与权限管理命令大全
运维·网络·云原生·容器·proxmox·用户权限管理·命令大全
进击的圆儿4 小时前
鸿蒙应用(医院陪诊系统)开发篇1·主页面的tabs布局
华为·harmonyos
冯志浩4 小时前
HarmonyOS - 组件内部状态管理装饰器:Local
harmonyos·掘金·金石计划
长流小哥5 小时前
Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南
linux·c语言·开发语言·网络·udp
00后程序员张5 小时前
iPhone相册导出到电脑的完整指南
websocket·网络协议·tcp/ip·http·网络安全·https·udp