void BucketHandler::handleSetCurrentState(const BucketId &bucketId, storage::spi::BucketInfo::ActiveState newState, IGenericResultHandler &resultHandler) { _executor.execute(makeTask(makeClosure(this, &proton::BucketHandler::performSetCurrentState, bucketId, newState, &resultHandler))); }
void BucketHandler::handlePopulateActiveBuckets(document::BucketId::List &buckets, IGenericResultHandler &resultHandler) { _executor.execute(makeTask(makeClosure(this, &proton::BucketHandler:: performPopulateActiveBuckets, buckets, &resultHandler))); }
void Monster::startThink() { if(!eventCheck){ //eventCheck = g_game.addEvent(makeTask(500, std::bind2nd(std::mem_fun(&Game::checkCreature), getID()))); onThink(1000); } if(!eventCheckAttacking){ eventCheckAttacking = g_game.addEvent(makeTask(500, boost::bind(&Game::checkCreatureAttacking, &g_game, getID(), 500))); } }
bool SpawnManager::startup() { for(spawnsList::iterator it = spawns.begin(); it != spawns.end(); ++it) { (*it)->startup(); } if(!spawns.empty()) { game->addEvent(makeTask(20000, std::bind2nd(std::mem_fun(&Game::checkSpawns), 20000))); } return true; }
Task* initScheduler(int M, int N) { Task* taskGrid; int i, j; taskGrid = malloc(M*N*sizeof(Task)); for(i = 0; i < M; i ++) { for(j = 0; j < N; j ++) { tgrid(i,j).l = i; tgrid(i,j).m = j; tgrid(i,j).taskStatus = NONE; tgrid(i,j).k = 0; } } makeTask(taskGrid, M, 0, 0, QRS, READY, 0); return taskGrid; }
void doneATask(Task* taskGrid, int M, int N, Task t) { int k, j, p, q; enum Type tType, tTypeNext; p = t.l; q = t.m; k = tgrid(p,q).k; tType = getNextType(p, q, k); tgrid(p,q).taskStatus = DONE; switch(tType) { case QRS: { for(j = k + 1; j < N; j ++)//check along row { if(candoSAPP(taskGrid, M, N, p, j, k)) makeTask(taskGrid, M, p, j, SAPP, READY, k); } if(candoQRD(taskGrid, M, N, p+1, q, k))//check one below makeTask(taskGrid, M, p+1, q, QRD, READY, k); break; } case SAPP: { if(candoDAPP(taskGrid, M, N, p+1, q, k))//check one below makeTask(taskGrid, M, p+1, q, DAPP, READY, k); break; } case QRD: { for(j = k + 1; j < N; j ++) { if(candoDAPP(taskGrid, M, N, p, j, k))//check along row makeTask(taskGrid, M, p, j, DAPP, READY, k); } if(candoQRD(taskGrid, M, N, p+1, q, k))//check one below makeTask(taskGrid, M, p+1, q, QRD, READY, k); break; } case DAPP: { tTypeNext = getNextType(p, q, k + 1); switch(tTypeNext)//check whether can activate any for next step { case QRS: { if(candoQRS(taskGrid, M, N, p, q, k + 1)) makeTask(taskGrid, M, p, q, QRS, READY, k + 1); break; } case SAPP: { if(candoSAPP(taskGrid, M, N, p, q, k + 1)) makeTask(taskGrid, M, p, q, SAPP, READY, k + 1); break; } case QRD: { if(candoQRD(taskGrid, M, N, p, q, k + 1)) makeTask(taskGrid, M, p, q, QRD, READY, k + 1); break; } case DAPP: { if(candoDAPP(taskGrid, M, N, p, q, k + 1)) makeTask(taskGrid, M, p, q, DAPP, READY, k + 1); break; } } if(candoDAPP(taskGrid, M, N, p + 1, q, k))//check one below in current step makeTask(taskGrid, M, p + 1, q, DAPP, READY, k); break; } } }