void EntityEditor::operationGetGoalInfoResult(const Atlas::Objects::Operation::RootOperation& op) { //What we receive here has been relayed from the mind of the entity. That means that this op //is potentially unsafe, as it could be of any type (Set, Logout etc.), all depending on what the //mind client decided to send (i.e. someone might want to try to hack). We should therefore treat it //very carefully. if (op->getClassNo() == Atlas::Objects::Operation::ROOT_OPERATION_NO) { //An empty root operation signals a timeout; we never got any answer from the entity. return; } //Since we'll just be iterating over the args we only need to do an extra check that what we got is a //"info" operation. if (op->getClassNo() != Atlas::Objects::Operation::INFO_NO) { S_LOG_WARNING("Got goal info operation with wrong type."); return; } if (!op->getArgs().empty()) { auto goalInfos = op->getArgsAsList(); for (auto goalInfo : goalInfos) { EventGotGoalInfo(goalInfo); } } else { S_LOG_VERBOSE("Got goal info op without any goals."); } }
int CommClient::send(const Atlas::Objects::Operation::RootOperation & op) { stub_connection_send_op = op->getClassNo(); ++stub_connection_send_count; return 0; }