NuPlayer具体对服务端的处理消息是在notifyResponseListener函数。
bool ARTSPConnection::notifyResponseListener(
const sp<ARTSPResponse> &response) {
//从mPendingRequests得到对应于该回应消息的异步应答消息在mPendingRequests存放的索引i
//查询的关键就是根据cseq的值
ssize_t i;
status_t err = findPendingRequest(response, &i);
if (err == OK && i < 0) {
// An unsolicited server response is not a problem.
return true;
}
if (err != OK) {
return false;
}
//根据索引获得对应于该回应消息的异步应答消息
//已经成功获取到了对应的服务端的应答消息,将"result"字段的值设置为OK
//并把服务端应答消息的对象response设置到"response"字段
//发送该异步应答消息
sp<AMessage> reply = mPendingRequests.valueAt(i);
mPendingRequests.removeItemsAt(i);
reply->setInt32("result", OK);
reply->setObject("response", response);
reply->post();
return true;
}