首页 > 学院 > 开发设计 > 正文

Dictionary数据类型在Darwin视频服务器中的使用

2019-11-11 05:12:07
字体:
来源:转载
供稿:网友
让我们先来看看Wikipedia中叫做Associative array的词条,是如下解释的:An associative array (also associative container , map , mapping , dictionary , finite map , and in query-PRocessing an index or index file ) is an abstract data type composed of a collection of unique keys and a collection of values, where each key is associated with one value (or set of values).Associative array是一个数据类型,并且这个数据类型有很多名字,比如有人叫做dictionary,有人叫做map。学习C++的人应该熟悉map数据类型,map数据类型是STL中定义的关联容器。Dictionary数据类型的要点是属性和值。Dictionary数据类型是由若干属性组成的,每个属性有一个或者多个值。在实际应用中,Dictionary数据类型可以更加复杂,一个属性可以有如下方面属性类型属性值的个数,一个或者多个属性的访问权限,可读,可写等。不难看出一个属性本身的类型,属性个数等又是一些属性。在Darwin中,就是这么应用的。Darwin视频服务器中Dictionary数据类型的应用在Darwin中针对Dictionary的定义有两个类,分别是QTSSDictionary和QTSSDictionaryMap。QTSSDictionary 与QTSS_Object对应,QTSSDictionaryMap与QTSS_ObjectType对应。QTSS_Object为模块和服务器核心之间提供了数据交换的方法。QTSS_Object由若干属性构成,每个属性有自己名字,ID号,数据类型,读写权限。内建属性是QTSS对象的固有属性,比如QTSS_RTSPRequestObject对象的内建属性URL,通过这个属性,模块可以获取与RTSP请求关联的URL。除了内建的属性,还可以为字典类型的对象添加静态属性或者临时属性。通过回调函数QTSS_AddStaticAttribute可以为对象类型添加静态属性,只能在Register角色中调用添加静态属性的函数。静态属性只能被添加,不能移除。不像静态属性,临时属性可以被移除,通过调用函数QTSS_RemoveInstanceAttribute可以移除一个临时属性。Darwin提供了针对Dictionary的回调函数,全部是对Dictionary的属性进行操作的。向Dictionary对象实例添加一个临时的属性。向Dictionary类型添加一个静态的属性。通过属性ID号或者属性名获取属性的信息。循环获取对象多有属性的信息。获取对象属性的个数。通过各种方式获取属性的值。设置属性的值。如图所示,是Darwin中定义的Dictionary类型的对象。Dictionary数据类型在Darwin视频服务器中的使用(草稿)以qtssRTSPRequestObjectType这个Dictionary类型为例,它的属性描述了一个RTSP请求。RTSP请求对象(QTSS_RTSPRequestObject)是对象类型的实例,这个实例从服务器接收到客户端的RTSP请求开始到应答完成结束。RTSP请求需与RTSP会话(QTSS_RTSPsessionObject)关联。下面给出RTSP请求的一些属性:qtssRTSPReqAbsoluteURL,“rtsp://”起始的URL。qtssRTSPReqContentLen,RTSP请求的内容长度。不难看出,由于采用了Dictionary这种数据类型,使得Darwin具有了如下特性:便于模块和服务器核心交换数据使得服务器的可管理共容易实现
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表