void Server::manageError(QString address, int port, QAbstractSocket::SocketError error){ int playerIndex = getPlayerIndex(address, port); if(networkAnswers[playerIndex].isEmpty()){ nbNetworkAnswers++; } else{ qDebug() << "Server::manageError() : SUPER WEIRD, player sent first message " << networkAnswers[playerIndex] << " then error " << error; } switch(waitingForMessage){ case(WAITING_FOR_MESSAGE::INFO): case(WAITING_FOR_MESSAGE::START): emit playerReady(playerIndex, false); break; case(WAITING_FOR_MESSAGE::PLAY): moves[playerIndex] = ""; break; default: break; } if(nbNetworkAnswers == addresses.size()){ handleTransition(); } emit emitError(playerIndex, error); }
void Server::processMessage(QString address, int port, QString message){ // qDebug() << "\nServer::processMessage()"; int playerIndex = getPlayerIndex(address, port); Q_ASSERT(playerIndex >=0); if(networkAnswers[playerIndex].isEmpty()){ nbNetworkAnswers++; } else{ qDebug() << "Server::processMessage() : SUPER WEIRD, player sent first message " << networkAnswers[playerIndex] << " then message " << message; } networkAnswers[playerIndex] = message; // qDebug() << "Player " << playerIndex << " : " << message; // Send immediate feedback switch(waitingForMessage){ case(WAITING_FOR_MESSAGE::INFO): if(rxPlayerName.indexIn(message)>=0){ emit playerName(playerIndex, rxPlayerName.cap(1)); } if(rxStatusAvailable.indexIn(message) >= 0){ emit playerAvailable(playerIndex, true); } else{ emit playerAvailable(playerIndex, false); } break; case(WAITING_FOR_MESSAGE::START): if(rxReady.indexIn(message) >= 0){ emit playerReady(playerIndex, true); } else{ emit playerReady(playerIndex, false); } break; case(WAITING_FOR_MESSAGE::PLAY): moves[playerIndex] = message; emit outputPlayerMessage(playerIndex, message); break; case(WAITING_FOR_MESSAGE::DONE): if(message != "done"){ manageError(address, port, QAbstractSocket::UnknownSocketError); } emit outputPlayerMessage(playerIndex, message); break; default: break; } // if(nbNetworkAnswers == addresses.size()){ // Finish the job // qDebug() << "Server::processMessage() : Got all the messages"; handleTransition(); } }
// this function will get user input and create each of the nodes string WorkflowEditor::createNode(string actor){ string node = actor; node += ","; string task, numEdges; int transition; //create a list of input questions string * inputList = new string[sizeof(string) * 3]; inputList[0] = "\tTask: "; inputList[1] = "\tTransition Type: "; inputList[2] = "/tNumber of Edges: "; cout << inputList[0]; cin.ignore(); getline(cin,task); node += task; node += ","; cout << inputList[1]; cin >> transition; stringstream transString; transString << transition; node += transString.str(); node += ","; //cout << inputList[2]; //cin >> numEdges; //node += numEdges; //node += ","; //long l_numEdges = strtol(numEdges.c_str(), NULL, 10); //edgeCount = l_numEdges; // handle transition node += handleTransition(transition); /* if (transition.compare("5") == 0){ string decision; int i; for(i = 0; i < l_numEdges; i++){ cout << "\n\tDecision " << i+1 << ": "; cin >> decision; node += decision; node += ","; } } */ cout << "\nNode created.\n"; return node; }
void Debugger::afterTakingTransition(Interpreter& interpreter, const XERCESC_NS::DOMElement* transition) { handleTransition(interpreter, transition, Breakpoint::AFTER); }
void Debugger::beforeTakingTransition(Interpreter& interpreter, const XERCESC_NS::DOMElement* transition) { handleTransition(interpreter, transition, Breakpoint::BEFORE); }
void Debugger::afterTakingTransition(Interpreter interpreter, const Arabica::DOM::Element<std::string>& transition, bool moreComing) { handleTransition(interpreter, transition, Breakpoint::AFTER); }