(完整)HLS流服务器设计说明书全解

合集下载

hls协议的格式

hls协议的格式

hls协议的格式HLS(HTTP Live Streaming)是一种流媒体传输协议,它被广泛应用于在互联网上的视频直播和点播服务中。

HLS的格式使得视频内容能够以流的形式分割并传输给用户,同时也提供了自适应性能,使得用户可以根据自身的网络环境进行流畅的观看。

HLS协议的格式具有以下几个关键点。

首先,HLS将视频内容切分成一个个小的TS(Transport Stream)分片。

每个TS分片通常持续几秒钟,这样的设计使得视频可以以连续的方式播放。

这也有助于提高用户体验,因为即使在网络波动的情况下,只有当前播放的分片会受到影响,不会影响整个视频的观看。

其次,HLS采用了自适应码率技术。

在服务器端,视频内容会根据不同的码率进行编码,并生成多个不同分辨率的视频流。

然后,根据用户的网络带宽情况,客户端会自动选择最适合的码率进行播放,以保证视频的流畅性,避免了因为网络带宽不足而导致的卡顿和缓冲。

此外,HLS还支持多语言和字幕。

视频内容可以包含多个音频和字幕轨道,用户可以通过界面选择自己喜欢的语言或者字幕。

这样的设计使得HLS协议在全球范围内的视频传输都能够提供本地化的体验。

最后,HLS协议的格式还可以通过加密和认证来保护视频内容的安全性。

视频内容可以使用AES(Advanced Encryption Standard)进行加密,以防止未经授权的访问和盗用。

同时,HLS还支持使用基于令牌的认证机制,确保只有具备合法权限的用户才能观看受保护的内容。

总之,HLS协议的格式为视频直播和点播提供了一种高效可靠的传输方式。

它的自适应性能、多语言支持、加密认证等特点,使得用户可以在各种设备上流畅地观看视频内容。

随着网络技术的不断发展,HLS协议的格式也在不断改进和完善,为用户提供更好的观看体验。

hls标准

hls标准

hls标准HLS(HTTP Live Streaming)是一种用于流媒体传输的标准协议,由苹果公司开发并首次引入。

HLS协议允许实时或点播音视频内容通过HTTP协议进行传输,以便在各种设备和平台上实现流畅的播放,特别适用于在线视频直播和点播服务。

以下是HLS标准的一些主要特点和要点:1.自适应码率调整:HLS支持自适应码率调整(Adaptive BitrateStreaming,ABR),允许根据用户的网络带宽和设备性能,自动选择最合适的视频质量。

这有助于确保观众在不同网络条件下获得最佳的播放体验。

2.分段传输:视频内容被分成短的媒体段,每个段通常持续几秒钟。

这些媒体段通过HTTP协议分别传输,从而实现流媒体的连续播放。

3.兼容性:HLS是一种广泛支持的流媒体协议,可以在多种操作系统、设备和浏览器上播放。

这包括iOS设备、Android设备、Web浏览器、智能电视和其他平台。

4.安全性:HLS支持加密和数字版权保护,以确保内容的安全性,并防止非法复制和分发。

5.多音频和字幕轨道:HLS支持多个音频轨道和字幕轨道,允许观众选择不同的音频语言或字幕选项。

6.实时直播和点播:HLS可用于实时直播和点播内容,使其适用于各种应用,包括在线直播活动、视频点播服务和教育平台等。

7.缓存和CDN:HLS支持内容分发网络(CDN)和缓存服务器,以减轻服务器负担并提高内容传输效率。

8.自定义播放器:开发人员可以根据自己的需求自定义HLS播放器,以实现不同的用户体验和功能。

HLS已成为流媒体领域的重要标准之一,广泛应用于在线视频平台、社交媒体、直播服务和许多其他应用领域。

虽然最初由苹果公司开发,但它已成为跨平台的标准,并由许多其他设备制造商和开发者采用和支持。

HLS直播协议m3u8详解

HLS直播协议m3u8详解

HLS直播协议m3u8详解一、HLS是什么HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。

是苹果公司QuickTime X和iPhone 软件系统的一部分。

它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。

当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。

在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。

HLS 只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。

它也很容易使用内容分发网络来传输媒体流。

•RTMP指Adobe的RTMP(Realtime Message Protocol),广泛应用于低延时直播,也是编码器和服务器对接的实际标准协议,在PC (Flash)上有最佳观看体验和最佳稳定性。

•HLS指Apple的HLS(Http Live Streaming),本身就是Live (直播)的,不过Vod(点播)也能支持。

HLS是Apple平台的标准流媒体协议,和RTMP在PC上一样支持得天衣无缝。

•二、HLS主要的应用场景•跨平台:PC主要的直播方案是RTMP,也有一些库能播放HLS,譬如jwplayer,基于osmf的hls插件也一大堆。

所以实际上如果选一种协议能跨 PC/Android/IOS,那就是HLS。

•IOS上苛刻的稳定性要求:IOS上最稳定的当然是HLS,稳定性不差于RTMP在PC-flash上的表现。

•友好的CDN分发方式:目前CDN对于RTMP也是基本协议,但是HLS分发的基础是HTTP,所以CDN的接入和分发会比RTMP 更加完善。

能在各种CDN之间切换,RTMP也能,只是可能需要对接测试。

WEB视频(HLS与HSS)业务使用指导

WEB视频(HLS与HSS)业务使用指导

1 WEB视频业务本文介绍kylinPET性能测试工具测试WEB视频业务,该工具暂时只支持苹果的HTTP Live Streaming与微软的Smooth Streaming,支持点播与直播。

1.1 IP欺骗每个用户一个虚拟IP,支持系统虚拟IP(需要在操作系统配置多IP)或工具虚拟IP(不需要在操作系统配置IP)。

配置路由方法参照《kylinPET 三种典型组网介绍IP欺骗与路由设置》文档。

1.2 支持DNS或302实现负载均衡支持每个用户发送DNS报文的源IP不同,DNS服务器根据源IP进行负载均衡。

1.3 视频流质量统计支持曲线图表展示每个用户下载视频流的视频片段下载时长、片段时长、码率1.4 TCP质量统计通过媒体代理器(Media Agent)曲线图表展示每个TCP连接的丢包重传数、每秒吞吐量、时延2 业务流程HTTP视频业务为WEB业务的一种,因此这里只介绍视频业务相关的操作,其他详细配置参照《kylinPET HTTP(WEB)业务使用指导》文档2.1 Scripter创建脚本2.1.1 新建业务脚本点击“文件” -> “新建”或者“工具栏”的“新建”按钮。

2.1.2 录制创建业务脚本(包括请求其他WEB资源时)点击“工具” -> “录制”或者“工具栏”的“录制”按钮,然后,在弹出的录制配置窗口选择录制方式为“Cap File”(抓包文件方式),输入过滤规则。

注意:1、承载在TCP上时,抓包文件保存时不能只过滤协议报文,需要把整个TCP交互过程都保存到文件(SYN --> SYN_ACK --> ACK)。

可通过IP与端口过滤保存业务交互过程2.1.3 手动创建业务脚本1)URL✧苹果的HTTP Live Streaming时,URL必须是请求m3u8资源✧微软的Smooth Streamnig时,URL必须是请求ism或isml资源2)视频播放A.下载码率下载视频分片,支持多种码率●自动变换码率:第一个下载的视频片段为最小码率,后面根据带宽(即分片下载时间)自动变换码率。

HLSL初级教程

HLSL初级教程
{
vector position : POSITION;
vector color : COLOR;
};
//
// Functions
//
VS_OUTPUT SetColor(VS_INPUT input)
{
VS_OUTPUT output = (VS_OUTPUT)0;
output.position = mul(input.position, WVPMatrix);
1.3.4
至此,一个HLSL着色器编写完毕,渲染过程中,当一个顶点被送到着色器时:
1.全局变量WVPMatrix、color将在应用程序中被赋值;
2.入口函数SetColor被调用编译器根据标志符将顶点信息填充到VS_INPUT中的各个字段;
3.SetColor函数中,首先定义一个VS_OUTPUT信息,之后根据WVPMatrix和color变量完成顶点的坐标变换和颜色设定操作,最后函数返回VS_OUTPUT结构;
前言
1.HLSL入门
1.1什么是着色器
1.2什么是HLSL
1.3怎么写HLSL着色器
1.4怎么用HLSL着色器
2.顶点着色器
2.1可编程数据流模型
2.2顶点声明
2.3用顶点着色器实现渐变动画
3.像素着色器
3.1多纹理化
3.2多纹理效果的像素着色器
3.3应用程序
4.HLSL Effect(效果框架)
4.1Effect代码结构
变量color是一个向量类型,它用于设定顶点颜色;
代码中并没有对全局变量进行初始化,这是因为我们对全局变量的初始化过程将在应用程序中进行,全局变量在应用程序中赋值而在着色器程序中使用,这是应用程序和着色器通信的关键所在。具体赋值过程将在后续部分讲述。

HLS 用户手册中文版

HLS 用户手册中文版

HTTP实时流媒体分析器与监测系统Mocomsoft版本1.12013.05MOCOMSOFT HLS Analyzer™用户指南 版权所有:Mocomsoft保留所有权利。

未经Mocomsoft公司明确的书面许可,不得以任何方式复制或转载本文档的任何部分。

公告:Mocomsoft公司已作出一切努力,确保本指南中的信息是有用和准确的。

但Mocomsoft不能保证所含信息的准确性,本指南中描述的产品若有变更,恕不另行通知。

文件中有任何遗漏或不正确的信息,Mocomsoft不承担任何法律责任。

Mocomsoft, Inc1330 Route 206, Suite 103-175Skillman, NJ 08558, USA电话:614-270-9617网址:信息:info@销售:sales@目录第1章:引言 (5)1.1 参考文献 (5)第2章:系统设置 (6)2.1安装软件 (6)2.2 卸载软件 (6)2.3检查HLS Analyzer服务 (6)第3章:安装和运行TSM100远程视图 (8)第4章:输入控制 (11)4.1 HTTP直播 (11)4.2 传输流录制 (12)第5章:传输流监测 (14)5.1 视频缩略图和TR 101 290错误摘要 (14)5.1.1 视频缩略图和播放 (14)5.1.2 传输流错误总结 (15)5.2 PID分析 (16)5.3 节目分析 (17)5.3.1 PCR分析 (17)5.3.2 基本流缓冲区分析 (18)5.4 元数据表分析 (19)5.5 电子节目指南 (21)5.6 历史 (22)5.7 传输流模版 (23)5.8报警 (25)5.8.1 配置邮件服务器 (25)5.8.2 添加电子邮件接收 (26)5.9报告 (27)5.9.1 错误总结 (27)5.9.2传输流质量 (28)5.9.2传输流快照 (29)第6章HTTP会话和播放列表分析 (30)6.1 流 (30)6.2 媒体传输 (31)6.3 HTTP分析历史 (31)6.4 HTTP配置 (32)6.5 HTTP报告 (33)附录:TSM100错误代码一览表 (34)第1章:引言Mocomsoft(摩通)HLS分析仪是一个专业的实时HTTP实时流(HLS)分析系统,用于验证HLS格式和MPEG传输流质量和信号的标准符合性,适用于测试HLS视频基础服务和服务内容。

HLS300A功率均分模块用户手册说明书

HLS300A 功率均分模块用户手册目次前言 (3)1 概述 (4)2 性能和特点 (4)3 规格 (4)4 面板指示灯及端子功能描述 (5)5 编程参数范围及定义 (7)6 警告 (10)7 输出口配置内容 (11)8 功能说明 (12)8.1 说明 (12)8.2 固定功率模式 (12)8.3 功率均分模式 (12)8.4 测试模式 (12)9 接线典型应用 (13)10 外形尺寸 (14)11 安装注意事项 (15)11.1 输出及扩展 (15)11.2 交流电流输入 (15)11.3 耐压测试 (15)12 常见故障及排除方法 (15)前言是众智的中文商标是众智的英文商标SmartGen ― Smart的意思是灵巧的、智能的、聪明的,Gen是generator(发电机组)的缩写,两个单词合起来的意思是让发电机组变得更加智能、更加人性化、更好的为人类服务。

不经过本公司的允许,本文档的任何部分不能被复制(包括图片及图标)。

本公司保留更改本文档内容的权利,而不通知用户。

公司地址:中国.河南省郑州市高新技术产业开发区金梭路28号电话:+86-371-67988888/67981888/67992951+86-371-67981000(外贸)传真:+86-371-67992952网址://邮箱:*****************表1 版本发展历史日期版本内容2020-04-20 1.0开始发布。

2020-07-08 1.1修改说明书中错误的描述语句、错误的参数设置范围和单位。

2021-07-29 1.2修改说明书中的端子描述(将6号端子与5端子短接,改为将6号端子与4端子短接)。

2021-08-23 1.3 增加语言选择配置参数,概述部分添加语言选择描述。

2022-10-10 1.4 更新公司logo和说明书格式。

表2 本文档所用符号的说明符号说明注意该图标提示或提醒操作员正确操作。

小心该图标表示错误的操作有可能损坏设备。

H.Link用户配置手册

1.5.1 登录流程.........................................................................................................................5 1.5.2 连接流程.........................................................................................................................7 1.6 运行环境..................................................................................................................................8 第 2 章 H.Link 配置命令 ...............................................................................................................9 2.1 服务器配置模式下的 H.Link 相关命令 ................................................................................9 2.1.1 启动 H.Link 服务器 .......................................................................................................9 2.1.2 关闭 H.Link 服务器 .....................................................................................................10 2.1.3 查看 H.Link 状态 .........................................................................................................10 2.1.4 进入 H.Link 配置命令节点 .........................................................................................11 2.2 HLINK-ROOT 节点的配置命令 ...........................................................................................11 2.2.1 进入设备配置节点.......................................................................................................11 2.2.2 进入用户配置节点.......................................................................................................11 2.2.3 设置远程设备的设备名...............................................................................................12 2.2.4 设置远程设备的用户名和密码...................................................................................12 2.2.5 设置服务器端设备删除的时间间隔...........................................................................13 2.2.6 设置服务器端发送 hello 报文的时间间隔 .................................................................13 2.2.7 创建用户项...................................................................................................................14 2.2.8 修改用户密码...............................................................................................................14 2.2.9 删除用户项...................................................................................................................15 2.2.10 保存当前登录设备的配置信息到配置文件 .............................................................15 2.2.11 保存当前用户项的配置信息到配置文件 .................................................................16 2.2.12 保存 H.Link 系统配置信息 .......................................................................................17 2.2.13 删除配置文件中的设备配置信息.............................................................................17 2.2.14 删除配置文件中的用户项配置信息.........................................................................19 2.2.15 清空配置文件内容.....................................................................................................20 2.2.16 复制模板信息.............................................................................................................21 2.2.17 设置是否允许用户项下的设备在登录时进行同步 .................................................22 2.2.18 设置同步模式.............................................................................................................22 2.2.19 同步指定设备.............................................................................................................22 2.2.20 同步指定用户项下的所有设备.................................................................................27

rtmp hls参数

RTMP和HLS是两种不同的流媒体传输协议,它们各自有一些参数可以配置。

RTMP相关的参数包括:
1. chunk_size:流整合的最大的块大小。

默认值为4096。

2. rtmp_auto_pushon:切换自动推送(多worker直播流)模式。

3. rtmp_auto_push_reconnect:当worker被干掉时设置自动推送连接超时时间。

默认为100毫秒。

HLS相关的参数包括:
1. hls_path:设置HLS播放列表和分段目录。

2. hls_fragment:设置HLS分段长度。

以上参数配置方式可能会根据具体的服务器和开发环境有所不同,需要根据具体情况进行调整。

在修改配置参数之前,请务必阅读相关的官方文档或咨询专业人士,以确保配置的正确性和安全性。

hls协议的格式

hls协议的格式HLS(HTTP Live Streaming)是一种流媒体传输协议,可以将音视频内容分割为小片段并通过HTTP协议进行传输。

它被广泛应用于视频直播和点播领域,在互联网上的视频播放中扮演着重要的角色。

本文将介绍HLS协议的格式,包括其基本原理、主要组成部分以及一些常见的应用。

一、HLS协议的基本原理HLS协议的基本原理是将一段完整的音视频内容分成多个小片段,并通过HTTP协议按照一定的顺序逐个进行传输,然后在客户端进行解析和播放。

这种分段传输的方式带来了以下几个优势:1. 自适应码率:HLS协议支持根据用户的网络状况自动调整音视频的码率。

服务器在传输过程中会提供多个码率的备用文件,客户端会根据当前的网络带宽自动选择合适的文件进行播放,以保证流畅的观看体验。

2. 异地容灾:由于音视频被分成多个小片段,即使在网络传输中某个片段丢失或损坏,也不会影响整个视频的观看。

客户端会根据需要向服务器请求缺失的片段,保证观看的连贯性。

3. 兼容性强:HLS协议基于HTTP协议,不依赖于特定的传输协议或软硬件设备,因此可以在各种平台和设备上进行播放,如PC、移动设备、智能电视等。

二、HLS协议的主要组成部分HLS协议由一系列的文件组成,这些文件共同构成了音视频的播放流程和相关信息。

下面介绍HLS协议的主要组成部分:1. M3U8文件:M3U8文件是HLS协议的核心文件,它是一个文本文件,包含了整个音视频播放的信息。

M3U8文件采用UTF-8编码,通过一系列的行来描述音视频的分片、码率、时长等信息,客户端会根据M3U8文件中的内容来进行播放。

2. 分片文件:分片文件是音视频内容被拆分后的小片段,通常以.ts 为后缀名。

每个分片文件一般都有固定的时长,客户端会根据M3U8文件中的描述顺序依次请求和播放这些分片文件。

3. 加密文件:为了保护音视频内容的安全性,HLS协议支持对分片文件进行加密。

加密文件通常以.key为后缀名,客户端在播放分片文件之前需要先请求对应的加密文件进行解密,确保内容的完整性和安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多协议流服务器设计说明书V1.0。

0修订记录:目录1 简介 01.1 目的 01.2 软件名称 01。

3 软件功能 02 第0层设计描述 02。

1 软件系统上下文定义 02。

2 外部接口描述 02。

2.1 HLS 03 第一层设计描述 (1)3。

1 系统结构 (1)3。

1.1 HTTP (1)3.1。

2 HLS VOD (1)3。

1。

3 HLS LIVE (1)3。

1.4 DISK IO (1)3。

1。

5 INDEX (1)3.1.6 SOCKET (1)3.1。

7 LOG (2)3.1.8 THREAD (2)4 第二层设计描述 (2)4.1 Log (2)4。

1.1 系统结构 (2)4。

1.2 接口描述 (2)4.1.3 详细设计 (3)4。

2 Event (3)4。

2.1 系统结构 (3)4.2.2 接口描述 (4)4。

2.3 详细设计 (4)4。

3 EventEx (5)4.3。

1 系统结构 (5)4.3。

2 接口描述 (5)4.3.3 详细设计 (5)4。

4 Thread (5)4。

4.1 系统结构 (6)4.4.2 接口描述 (6)4。

4.3 详细设计 (6)4.5 Server (6)4.5。

1 系统结构 (6)4。

5.2 接口描述 (6)4.5。

3 详细设计 (7)1 简介1.1 目的本流服务器是基于Redhat6.2平台开发的,提供了Apple公司HLS协议的接口支持,可对接Apple公司现有手持终端设备或其它兼容HLS协议的客户端,可以提供标清及高清的视频点播服务.1.2 软件名称多协议流媒体服务器1.3 软件功能在本文档描述的V1.0版本中,流服务器可以提供视频点播服务,并可支持点播时的拖动操作。

在客户端与服务器间链接速度出现变化时客户端可根据流服务器的媒资情况实现码流自适应.2 第0层设计描述2.1 软件系统上下文定义2.2 外部接口描述2.2.1 HLS通过HLS协议,SS服务器可向标准APPLE客户端提供视频流推送服务.但该HLS服务器提供的HLS索引描述文件仅限于以下参数的子集。

EXTM3U标志着M3U文件的开始EXT—X—TARGETDURATION标志着最大文件分片的播放时长EXT—X—MEDIA-SEQUENCE在该M3U文件内第一个文件片的序号减一,后面分片文件序号递增1。

EXTINF主要用来指出媒体分片的播放时长EXT-X—STREAM—INF指出具体码率下的不同M3U的URL,可携带节目号、码率等参数信息.EXT—X-ENDLIST表明该M3U文件的结束,如果是直播文件的话便不包含该参数。

3 第一层设计描述3.1 系统结构3.1.1 HTTP该服务器的对外协议是HTTP,所以一个高效的HTTP模块是系统性能提升的重要基础.该模块在解析请求后,初步探测视频请求协议,然后将请求向下传递。

并在获取请求数据后由该协议处理器自动进行数据传输。

3.1.2 HLS VOD此模块负责处理经HTTP协议层解析后的URL请求,能够生成所有HLS视频点播请求的相关文件。

3.1.3 HLS LIVE此模块会处理经HTTP协议层解析后的URL请求,能够生成所有HLS直播请求所需的数据文件。

3.1.4 DISK IO提供高效的磁盘IO服务,此磁盘IO属于异步处理模式,对CPU消耗较低,属于系统基础模块.3.1.5 INDEX此模块会处理其它系统为流文件生成的描述文件,可由该模块得到流的GOP等信息,上层模块可调用该模块获得用于生成文件切片及m3u所需的数据.。

3.1.6 SOCKET提供了网络相关函数的封装,属于较底层的函数。

3.1.7 LOG封装了log4cplus的库调用,用处整个系统的日志打印报务,基本上被其它所有模块所调用.3.1.8 THREAD此模块封装了系统pthread类的部分函数,提供了线程及锁支持。

4 第二层设计描述类间的继承关系图如下:4.1 Log4.1.1 系统结构此模块在系统中处于最低层,实现中只是简单封装了开源代码的log4cplus。

此模块基本被其它的任何模块所调用,系统中的日志服务都是由该模块来提供的。

4.1.2 接口描述1. 任何有打印日志需求的类都要继承于CLogger.2. 在默认情况下该类的子类使用的是默认打印设置,该模式的打印输出设备是当前终端。

3. 当然该类也可以通过SetLog来改变输出选项.4. 该类的子类也可以通过SetTitle来改变每行打印的前缀。

5. 每个该类的子类都通过一个LOG_XXXX的宏来实现打印输出.1)LOG_TRACE 用于打印TRACE级别的日志。

2)LOG_DEBUG 用于打印TRACE级别的日志。

3)LOG_INFO 用于打印TRACE级别的日志。

4)LOG_WARN 用于打印TRACE级别的日志。

5)LOG_ERROR 用于打印TRACE级别的日志。

6)LOG_FATAL 用于打印TRACE级别的日志。

4.1.3 详细设计1. CLog1)简介该类实现了对log4cplus的封装,在默认情况下该类含有一个全局静态的实例,该实例提供了前台打印的功能,在CLogger—〉SetLog()中需要提供一个该类的指针做为参数.2)类定义static void SetRootLevel(LogLevel level);该函数可以用来设置全局的打印级别static CLog* GetDefaultLog();该函数可以用来获取一个全局唯一的被默认打印选项设置的类。

void Initialize(const string &name,const string &path=””, size_t size=100,size_t count=5);该函数用来把一个CLog的实例初始化为以name名标识的,存于path目录的文件,size的大小是该日志文件的最大尺寸,而count指定了该日志文件的最多备份文件数。

void SetLevel(LogLevel level);该函数可以用来设置本实例的打印级别,关于LogLevel的定义可以在log4cplus的相关头文件中查找.Logger GetLog() {return m_Logger;}该函数会返回log4cplus中定义的类实例4.2 Event4.2.1 系统结构该模块的类是以接口形式出现,主要是抽象了epoll中的事件模型。

整个系统都是由epoll来驱动的,而每个被epoll驱动的事件中,如socket和aio等,都要继承于CEvent.用于继承此类的子类中不建议出现阻塞函数调用,同时所提供的描述符要求必须做非阻塞处理,同时禁止使用sleep等阻塞线程运行的系统调用.4.2.2 接口描述1. CEvent(CEventEngin*, CEvent*)构造函数中的第一个参数指定了用于驱动该事件的引擎指针,而第二个参数是该事件处理结束后要通知的上级事件指针,此参数为空时表明上层事件不想判断该事件的处理过程.2. virtual int GetFd() = 0;每个子类必须重载这个函数用于返回特定的描述符.当用于CEventEngin注册事件回调时,该函数会被调用,以获取要被检查的描述符句柄。

3. virtual void OnRead() = 0;当指定的描述符句柄有可读事件时该函数会被调用,子类可根据需要实现此函数。

4. virtual void OnWrite() = 0;当指定的描述符句柄有可写事件时该函数会被调用,子类可根据需要实现此函数。

5. virtual void OnError() = 0;当指定的描述符句柄有异常事件时该函数会被调用,子类可根据需要实现此函数。

此回调函数无需进行显式的注册监听.6. virtual void OnSubEvent(void *obj=NULL) = 0;当前实例调用了其它有异步操作的类实例的方法后,当该子异步操作返回时,子事件会回调该函数。

其实obj是该子事件类实例的内存地指。

7. bool RegisterRD();该方法会将当前描述符注册到构造函数指定的驱动引擎中,表示希望监听可读事件。

8. bool RegisterWR();该方法会将当前描述符注册到构造函数指定的驱动引擎中,表示希望监听可写事件。

9. bool RegisterRW();该方法会将当前描述符注册到构造函数指定的驱动引擎中,表示希望监听读写事件。

10. b ool Unregister();该方法会删除已经注册到驱动引擎中的所有事件类型。

4.2.3 详细设计1. CEventImplement1)简介该类实现了CEvent中的大部分纯虚函数,以方便不希望处理所有回调函数的子类。

不过该类的函数中都有一句失败的断言,只要调用了程序便会退出。

2. CEventEngin1)简介该类封装了epoll中的各系统函数调用,同时自带了线程支持。

2)类定义bool Initialize(ssize_t affinity = —1);该函数是初始化引擎的自身变量,另外会启动一个线程来等待epoll_wait.bool Add(CEvent *event, int tag);该函数用于注册新的监听事件bool Mod(CEvent *event, int tag);该函数用于修改已监听事件的类型bool Del(CEvent *event);该函数用于删除已注册的监听事件bool Uninitialize();该函数会停止线程的运行,并释放请求的资源。

4.3 EventEx4.3.1 系统结构该模块的类是以接口形式出现,它继承自Event,在原事件处理的基础之上增加了定时器设置功能.4.3.2 接口描述1. virtual bool SetTimer(size_t val, size_t inter) = 0;此函数用于设置定时器,val指定定时器的启动时间,inter设置该定时器在第一次启动后每隔多久再产生一次事件.两个时间参数的单位都是微秒,当两个参数都为0时就要关闭定时器。

4.3.3 详细设计1. CEventImplementEx1)简介该类以timerf族函数实现了CEventEx中的定时器功能,同时实现了除GetFd外CEvent的各纯虚函数。

4.4 Thread4.4.1 系统结构此模块在系统中处于底层,简单封装了pthread的函数族。

4.4.2 接口描述1. CThread(ssize_t setaffinity=-1);在构造函数中可以指定该线程要绑定到哪个cpu上。

2. bool Run(); 用于启动线程3. bool SetAffinity(ssize_t setaffinity);线程启动后也可以调用该方法来修改绑定的cpu4. bool Stop(); 用于停止线程4.4.3 详细设计1. CMutex1)简介该类简单封装了pthread_mutex系统函数。

相关文档
最新文档