// Trigger signals void Dbtup::execCREATE_TRIG_REQ(Signal* signal) { jamEntry(); BlockReference senderRef = signal->getSendersBlockRef(); const CreateTrigReq reqCopy = *(const CreateTrigReq*)signal->getDataPtr(); const CreateTrigReq* const req = &reqCopy; CreateTrigRef::ErrorCode error= CreateTrigRef::NoError; // Find table TablerecPtr tabPtr; tabPtr.i = req->getTableId(); ptrCheckGuard(tabPtr, cnoOfTablerec, tablerec); if (tabPtr.p->tableStatus != DEFINED ) { jam(); error= CreateTrigRef::InvalidTable; } // Create trigger and associate it with the table else if (createTrigger(tabPtr.p, req)) { jam(); // Send conf CreateTrigConf* const conf = (CreateTrigConf*)signal->getDataPtrSend(); conf->setUserRef(reference()); conf->setConnectionPtr(req->getConnectionPtr()); conf->setRequestType(req->getRequestType()); conf->setTableId(req->getTableId()); conf->setIndexId(req->getIndexId()); conf->setTriggerId(req->getTriggerId()); conf->setTriggerInfo(req->getTriggerInfo()); sendSignal(senderRef, GSN_CREATE_TRIG_CONF, signal, CreateTrigConf::SignalLength, JBB); return; } else { jam(); error= CreateTrigRef::TooManyTriggers; } ndbassert(error != CreateTrigRef::NoError); // Send ref CreateTrigRef* const ref = (CreateTrigRef*)signal->getDataPtrSend(); ref->setUserRef(reference()); ref->setConnectionPtr(req->getConnectionPtr()); ref->setRequestType(req->getRequestType()); ref->setTableId(req->getTableId()); ref->setIndexId(req->getIndexId()); ref->setTriggerId(req->getTriggerId()); ref->setTriggerInfo(req->getTriggerInfo()); ref->setErrorCode(error); sendSignal(senderRef, GSN_CREATE_TRIG_REF, signal, CreateTrigRef::SignalLength, JBB); }//Dbtup::execCREATE_TRIG_REQ()
bool Kernel::sendTrigger(int32 triggerNum) { return handleTrigger(createTrigger(triggerNum)); }
void BattleDirectorImp::startWithInitialInfo(const InitialInfo &info) { // 初始化战斗信息 _battleInfo.reset(new BattleInfo); _battleInfo->stage = 0; _battleInfo->round = 0; _battleInfo->weather = 0; _battleInfo->isAuto = false; _battleInfo->troops.resize(2); // 自己 { auto& tp = _battleInfo->troops[0]; tp.tpId = 1; tp.players.resize(1); auto& player = tp.players[0]; player.uid = 0; player.pets.resize(info.Mpets.size()); int i=0; for (auto& pet : info.Mpets) { auto& p1 = player.pets[i++]; p1.assign(pet); p1.belongs.troopsId = tp.tpId; p1.belongs.playerUid = player.uid; _battleInfo->allPets[p1.uid] = &p1; // 注册触发 for (auto& it : p1.psvSkills) { _battleInfo->getTriggerCenter()->addTrigger(createTrigger(it.get())); } } } // 敌人 { auto& tp = _battleInfo->troops[1]; tp.tpId = -1; tp.players.resize(1); auto& player = tp.players[0]; player.uid = -1; player.pets.resize(info.Opets.size()); int i=0; for (auto& pet : info.Opets) { auto& p1 = player.pets[i++]; p1.assign(pet); p1.belongs.troopsId = tp.tpId; p1.belongs.playerUid = player.uid; _battleInfo->allPets[p1.uid] = &p1; // 注册触发 for (auto& it : p1.psvSkills) { _battleInfo->getTriggerCenter()->addTrigger(createTrigger(it.get())); } } } // 初始化指令与序列生成模型 }
int main(void){ PGresult *result; PGconn *conn; int z; conn = PQconnectdb("host=localhost port=5432 dbname=dsienkiewicz user=dsienkiewicz password=aplikacje"); if(PQstatus(conn) == CONNECTION_OK) { printf("connection made\n"); //czyszczenie ekranu system("clear"); //menu do{ printf("\n 1 - Create table"); printf("\n 2 - Add sample data"); printf("\n 3 - Print"); printf("\n 4 - Add"); printf("\n 5 - Drop from table"); printf("\n 6 - Update"); printf("\n 7 - Search"); printf("\n 8 - Add Trigger"); printf("\n 9 - Drop Trigger"); printf("\n 10 - Drop Table"); printf("\n 11 - Exit"); printf("\n choice: "); scanf("%d", &z); switch(z){ case 1: doSQL(conn, "CREATE TABLE cars(id_car SERIAL PRIMARY KEY, make VARCHAR(20), model VARCHAR(20), price money, capacity numeric(8,1), yop date);"); break; case 2: addData(conn); break; case 3: print(conn); break; case 4: add(conn); break; case 5: drop(conn); break; case 6: update(conn); break; case 7: search(conn); break; case 8: createTrigger(conn); break; case 9: delTrigger(conn); break; case 10: dropTable(conn); break; } }while(z != 11); printf("Bye, bye ...\n"); } else printf("connection failed: %s\n", PQerrorMessage(conn)); PQfinish(conn); return EXIT_SUCCESS; }