Ejemplo n.º 1
0
void NetCenter::dispatchSuccessfulMessage(NetResponse *response)
{
    NetProtocol* protocol=(NetProtocol*)netProtocolDict->objectForKey(response->getProtocolID());
    if (protocol == NULL) {
        CCLog("未知协议的消息");
        return;
    }
//    CCAssert(protocol!=NULL, "未知协议的消息");
    //(1)过滤
    int count = this->netFilterChain->count();
    for (int i = 0; i < count; i++) {
        if (response) {
            NetFilter* filter = (NetFilter*)netFilterChain->getObjectAtIndex(i);
            response = filter->filterSuccessfulMessage(response);
        }else{
            break;
        }
    }
    if (response == NULL) {
//        CCLOG("消息过滤后为NULL,不进行后续处理");
        return;
    }
    //(2)处理
    NetHandler* handler=(NetHandler*)protocol->getHandler();
    CCAssert(handler!=NULL, "此协议无处理器");
    handler->handleSuccessfulMessage(response);
}
Ejemplo n.º 2
0
	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);
	}