// 处理已接收数据 bool UseTryTicketTask::Handle(const TransportProtocol* tp) { bool result = false; string targetId(""); TRY_TICKET_EVENT eventCode = TTE_UNKNOW; AmfParser parser; amf_object_handle root = parser.Decode((char*)tp->data, tp->GetDataLength()); if (!root.isnull()) { // 解析成功协议 if (root->type == DT_OBJECT) { // targetId amf_object_handle targetIdObject = root->get_child(TARGETID_PARAM); result = !targetIdObject.isnull() && targetIdObject->type == DT_STRING; if (result) { targetId = targetIdObject->strValue; } // event amf_object_handle eventObject = root->get_child(EVENT_PARAM); result = !eventObject.isnull() && eventObject->type == DT_INTEGER; if (result) { eventCode = (eventObject->intValue < TTE_UNKNOW ? (TRY_TICKET_EVENT)eventObject->intValue : TTE_UNKNOW); } if (result) { m_errType = LCC_ERR_SUCCESS; m_errMsg = ""; } } // 解析失败协议 if (!result) { int errType = 0; string errMsg = ""; if (GetAMFProtocolError(root, errType, errMsg)) { m_errType = (LCC_ERR_TYPE)errType; m_errMsg = errMsg; result = true; } } } // 协议解析失败 if (!result) { m_errType = LCC_ERR_PROTOCOLFAIL; m_errMsg = ""; } // 通知listener if (NULL != m_listener) { m_listener->OnUseTryTicket(m_userId, m_errType, m_errMsg, targetId, eventCode); } return result; }
/** * @brief Helpful method for testing purposes. * * Compares this target's members with @p other target's. * * @param[in] other target to compare with this target * @return true if equal, else false. */ bool Target::isEqual(const Target& other) const { if (targetId() != other.targetId()) { return false; } if (targetName() != other.targetName()) { return false; } int i = 0; int size = other.m_gestureRecognizers.size(); if(size != m_gestureRecognizers.size()) { return false; } for(i = 0; i < size; ++i) { if (!m_gestureRecognizers[i]->isEqual(*other.m_gestureRecognizers[i])) { return false; } } return true; }