void NetCenter::dispatchFailedMessage(framework::NetResponse *response) { CCASSERT(response, "Invalid response to dispatch"); string protocolId = response->getProtocolId(); NetProtocol *pProtocol = (NetProtocol*)_protocols->objectForKey(protocolId); if (!pProtocol) { CCLOG("Unknown protocol"); return; } // filter first NetFilter *pFilter = nullptr; for (int i = 0; i < _filters->getLength(); ++i) { pFilter = (NetFilter*)_filters->objectAt(i); pFilter->filterFailedMessage(response); } // handle the response NetHandler *pHandler = (NetHandler*)pProtocol->getRelatedHandler(); CCASSERT(pHandler, "The protocol must have a handler to handle the response."); pHandler->handleFailedMessage(response); }
void NetCenter::dispatchFailedMessage(NetResponse *response) { //(1)过滤 int count = this->netFilterChain->count(); for (int i = 0; i < count; i++) { if (response) { NetFilter* filter = (NetFilter*)netFilterChain->getObjectAtIndex(i); response = filter->filterFailedMessage(response); }else{ break; } } if (response == NULL) { // CCLOG("消息过滤后为NULL,不进行后续处理"); return; } //(2)处理 NetProtocol* protocol=(NetProtocol*)netProtocolDict->objectForKey(response->getProtocolID()); CCAssert(protocol!=NULL, "未知协议的消息"); NetHandler* handler=(NetHandler*)protocol->getHandler(); CCAssert(handler!=NULL, "此协议无处理器"); handler->handleFailedMessage(response); }