示例#1
0
文件: server.cpp 项目: tstandley/DSN4
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);
}
示例#2
0
文件: server.cpp 项目: tstandley/DSN4
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;
}
示例#4
0
void Debugger::afterTakingTransition(Interpreter& interpreter, const XERCESC_NS::DOMElement* transition) {
	handleTransition(interpreter, transition, Breakpoint::AFTER);
}
示例#5
0
void Debugger::beforeTakingTransition(Interpreter& interpreter, const XERCESC_NS::DOMElement* transition) {
	handleTransition(interpreter, transition, Breakpoint::BEFORE);
}
示例#6
0
文件: Debugger.cpp 项目: juehv/uscxml
void Debugger::afterTakingTransition(Interpreter interpreter, const Arabica::DOM::Element<std::string>& transition, bool moreComing) {
	handleTransition(interpreter, transition, Breakpoint::AFTER);
}