在源节点查询完接口后就会调用函数PVMFNodeInterfaceImpl::CommandComplete(PVMFNodeCommand& aCmd, PVMFStatus aStatus,PVInterface* aExtMsg, OsclAny* aEventData, PVUuid* aEventUUID, int32* aEventCode, int32 aEventDataLen)通知上层命令的完成情况;
PVMFNodeInterfaceImpl::CommandComplete(iCurrentCommand, status, NULL, eventData),
1)构建对象PVMFCmdResp resp(aCmd.iId, aCmd.iContext, aStatus, extif, aEventData),其中的命令是上面处理的查询接口的命令,aStatus就是执行命令的返回状态,eventData为NULL;
类PVMFCmdResp继承类PVMFEventBase,用于将先前处理的命令的状态返回到上层去;
2)ReportCmdCompleteEvent(session, resp) PVMFSessionId session = aCmd.iSession
函数PVMFNodeInterfaceImpl::ReportCmdCompleteEvent(PVMFSessionId aSession, PVMFCmdResp &aResponse)
3)又调用函数PVPlayerEngine::NodeCommandCompleted(const PVMFCmdResp& aResponse)
函数PVPlayerEngine::NodeCommandCompleted(const PVMFCmdResp& aResponse)
首先从参数aResponse中读取aCmd.iContext,就是前面提到的context(PVPlayerEngineContext*),在函数中,通过context获得命令的类型,来做进一步的操作;
1)进入函数HandleSourceNodeQueryInitIF(*nodecontext, aResponse),因为context->iCmdType的值为PVP_CMD_SourceNodeQueryInitIF;
PVPlayerEngine::HandleSourceNodeQueryInitIF(PVPlayerEngineContext& aNodeContext, const PVMFCmdResp& aNodeResp)
2)释放掉指向context的参数,函数返回;
函数PVPlayerEngine::HandleSourceNodeQueryInitIF(PVPlayerEngineContext& aNodeContext, const PVMFCmdResp& aNodeResp)