void Tasktest::test_sequence() { m_task->nextTick(1.5); Atlas::Message::Element val; m_task->getAttr("foo", val); assert(val.isNone()); m_task->setAttr("foo", 1); m_task->getAttr("foo", val); assert(val.isInt()); assert(!m_task->obsolete()); OpVector res; assert(res.empty()); Atlas::Objects::Operation::Generic c; c->setParents(std::list<std::string>(1, "generic")); m_task->initTask(c, res); Operation op; m_task->operation(op, res); m_task->irrelevant(); assert(m_task->obsolete()); }
void EntityEditor::getGoalInfo(const std::string& id) { Eris::Account* account = EmberServices::getSingleton().getServerService().getAccount(); Atlas::Objects::Operation::Generic get; std::list<std::string> parents; parents.emplace_back("commune"); get->setParents(parents); get->setTo(mEntity.getId()); //By setting it TO an entity and FROM our avatar we'll make the server deliver it as //if it came from the entity itself (the server rewrites the FROM to be of the entity). get->setFrom(mWorld.getAvatar()->getEmberEntity().getId()); //By setting a serial number we tell the server to "relay" the operation. This means that any //response operation from the target entity will be sent back to us. get->setSerialno(Eris::getNewSerialno()); Atlas::Message::MapType goalMap; goalMap["id"] = id; Atlas::Objects::Entity::Anonymous getArg; getArg->setAttr("goal_info", goalMap); get->setArgs1(getArg); Eris::Connection* connection = account->getConnection(); connection->getResponder()->await(get->getSerialno(), this, &EntityEditor::operationGetGoalInfoResult); connection->send(get); }
int main() { int ret = 0; Operation op; Character chr("3", 3); { Task ts(chr); OpVector res; Atlas::Objects::Operation::Generic c; c->setParents(std::list<std::string>(1, "generic")); // It has no script, so init will fail, and it will be irrelevant ts.initTask(c, res); assert(ts.obsolete()); } { Task ts(chr); Script * script1 = new Script; Script * script2 = new Script; ts.setScript(script1); ts.setScript(script2); assert(!ts.obsolete()); OpVector res; Atlas::Objects::Operation::Generic c; c->setParents(std::list<std::string>(1, "generic")); ts.initTask(c, res); // It has useless script, so init will fail, and it will be irrelevant ts.TickOperation(op, res); assert(ts.obsolete()); } { Task ts(chr); Script * script1 = new TestScript; ts.setScript(script1); assert(!ts.obsolete()); OpVector res; Atlas::Objects::Operation::Generic c; c->setParents(std::list<std::string>(1, "generic")); assert(res.empty()); ts.initTask(c, res); // It has useless script, so init will fail, and it will be irrelevant ts.TickOperation(op, res); assert(!ts.obsolete()); assert(!res.empty()); } return ret; }