1.QTSSDictionary如何存储多个属性
属性信息存放在DictValueElement结构体中,QTSSDictionary初始化包含QTSS_MAX_ATTRIBUTE_NUMS个结构体(DictValueElement)数组。
2.如何去描述一个属性信息(属性类型,名称,权限,回调)呢?
用QTSSDictionaryMap去描述,每一个QTSSDictionary都要有一个与之对应的QTSSDictionaryMap,在其内部维护了QTSSAttrInfoDict数组,每一个元素负责描述一个属性,与QTSSDictionary一一对应。
3.QTSSDictionary如何与QTSSDictionaryMap想关联?
在QTSSDictionary,有一个QTSSDictionaryMap的指针,通过此方式来实现关联。
4.属性信息存放位置?
所有的属性及属性的描述信息都是存放在内存中的,通过对象的成员数组体现。
5.如何设置QTSS_Object属性信息?
QTSSDictionary 与QTSS_Object对应,凡是派生于QTSSDictionary的对象,就被称作QTSSDictionary。
比如:RTSPRequest: QTSSDictionary->RTSPRequestInterface->RTSPRequest.
RTSPRequest被称作为:QTSS_RTSPRequestObject
如何设置QTSS_RTSPRequestObject的属性呢?
所有 QTSS_Object的内置属性都存放在QTSS.h文件中。比如QTSS_RTSPRequestObject的内置属性如下:
它有43个内置属性,每一个属性的id如下图所示。
那么每个属性对应的属性信息在哪里维护呢 ? 在QTSSDictionaryMap中维护,它的初始化在RTSPRequestInterface原文件中,属性信息以sAttributes数组形式设置好,并在静态函数Initialize中初始化。
既然属性对应的信息已经初始化好,那么属性的key-value如何设置呢?
构造函数中,可以发现,QTSSDictionary中维护的value都是指针,指向类的成员变量,如此只要修改成员变量值,对应的key的value值也会改变。
对于value指向fMethod变量,它在什么地方更新值,又如何获取它的值呢?