{"id":13420721,"url":"https://github.com/spriteray/libevlite","last_synced_at":"2025-03-15T07:31:25.685Z","repository":{"id":4769455,"uuid":"5920602","full_name":"spriteray/libevlite","owner":"spriteray","description":"libevlite - A simple Network library that contains the Event library, Thread library, Communications library. Event library is LIBEVENT Lite Edition, so named for the LIBEVLITE","archived":false,"fork":false,"pushed_at":"2023-11-09T06:57:23.000Z","size":430,"stargazers_count":9,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-31T22:56:18.407Z","etag":null,"topics":["curl-multi","kcp","libevent"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spriteray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-09-23T08:38:02.000Z","updated_at":"2023-04-14T12:37:34.000Z","dependencies_parsed_at":"2023-02-19T15:16:07.449Z","dependency_job_id":"eeee175f-3d69-463f-bba9-f55ce1d31aa3","html_url":"https://github.com/spriteray/libevlite","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spriteray%2Flibevlite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spriteray%2Flibevlite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spriteray%2Flibevlite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spriteray%2Flibevlite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spriteray","download_url":"https://codeload.github.com/spriteray/libevlite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243701105,"owners_count":20333614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curl-multi","kcp","libevent"],"created_at":"2024-07-30T22:01:39.833Z","updated_at":"2025-03-15T07:31:25.301Z","avatar_url":"https://github.com/spriteray.png","language":"C","funding_links":[],"categories":["TODO scan for Android support in followings"],"sub_categories":[],"readme":"# libevlite网络通信库(Linux, Darwin, \\*BSD)\n\n## 1. 基础事件模块( `include/event.h` )\n==支持的IO复用机制: epoll和kqueue==\n### 1.1 事件类型说明\n- 读事件(`EV_READ`)\n- 写事件(`EV_WRITE`)\n- 超时事件(`EV_TIMEOUT`)\n- 在三种事件类型的基础上, 支持事件驻留在事件集中的永久模式(`EV_PERSIST`)\n\n### 1.2 基于事件(`event_t`)的方法说明\n- 设置事件属性 `event_set()`\n- 设置事件回调函数 `event_set_callback()`\n\n### 1.3 基于事件集(`evsets_t`)的方法说明\n- 向事件集中添加事件 `evsets_add()`\n- 从事件集中删除事件 `evsets_del()`\n- 分发并处理事件 `evsets_dispatch()`\n\n## 2. 网络线程模块( `include/threads.h` )\n\n## 3. 通信模块( `include/networks.h` )\n\n### 3.1 创建网络通信层 `iolayer_create()`\n- nthreads: 指定网络线程的个数\n- nclients: 推荐连接数\n- precision: 事件集的时间精度(建议值8ms)\n- immediately: 数据是否会立刻推送到网络层，对实时性要求很高的场景, 建议设置为1\n\n### 3.2 设置网络通信层的方法(仅在IO线程中才能使用)\n- 设置线程上下文: `iolayer_set_iocontext()`\n- 设置网络层数据改造方法: `iolayer_set_transform()`\n\n### 3.3 监听端口/开启服务端 `iolayer_listen()`\n- type: 网络类型, 支持`TCP`, `UDP`和`KCP`\n- host: 绑定的地址\n- port: 监听的端口号\n- options: 服务器全局参数(当前主要是`KCP`的参数配置)\n- callback: 新会话创建成功的回调\n- context: 上下文参数\n\n### 3.4 连接远程服务/开启客户端 `iolayer_connect()`\n\n### 3.5 关联描述符的读写事件 `iolayer_associate()`\n\n### 3.6 设置会话的方法(仅在IO线程中才能使用)\n- 设置会话的超时时间 `iolayer_set_timeout()`\n- 设置会话的保活时间 `iolayer_set_keepalive()`\n- 设置会话的IO服务逻辑 `iolayer_set_service()`\n- 设置会话的读事件常驻事件集 `iolayer_set_persist()`\n- 设置会话的发送队列长度限制 `iolayer_set_sndqlimit()`\n- 设置会话的最大传输单元(仅限`KCP`有效) `iolayer_set_mtu()`\n- 设置会话的最小重传时间(仅限`KCP`有效) `iolayer_set_minrto()`\n- 设置会话的发送接收窗口(仅限`KCP`有效) `iolayer_set_wndsize()`\n\n### 3.7 发送数据 `iolayer_send()`\n\n### 3.8 广播数据 `iolayer_broadcast()`, `iolayer_broadcast2()`\n\n### 3.9 关闭会话 `iolayer_shutdown()`, `iolayer_shutdowns()`\n\n### 3.10 提交任务到网络层 `iolayer_invoke()`, `iolayer_perform()`\n\n### 3.11 停止服务 `iolayer_stop()`\n- 停止对外提供接入服务, 不再接受新的连接;\n- 停止所有连接的接收服务, 不再回调`ioservice_t::process()`\n\n### 3.12 销毁网络层 `iolayer_destroy()`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspriteray%2Flibevlite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspriteray%2Flibevlite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspriteray%2Flibevlite/lists"}