int UserDisposition(int incomeSd, int userID) { printf("\n\nUser %s is getting a disposition!\n", users[userID].name); MessageType m; int result_val; if (userGame[userID] == -1) result_val = 0; else result_val = 1; m = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &m); if (result_val) { m = composeMessage(disposition, sizeof(games[userGame[userID]].d), &(games[userGame[userID]].d)); sendMessage(incomeSd, &m); printf("Disposition was sent\n"); return 1; } else return 0; }
int UserTurn(MessageType *m, int incomeSd, int userID) { printf("\n\nHandling the turn\n"); fflush(stdout); int result_val; int gameID = userGame[userID]; char turn_str[MAX_MES_LEN]; char error[MAX_MES_LEN]; strcpy(turn_str, (char *)m->data); if(userGame[userID] == -1) { result_val = 2; printf("The game of %s is over, he will be disconnected", users[userID].name); fflush(stdout); MessageType mes = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &mes); clearMessage(&mes); } else if (HandleTurn(turn_str, error, &games[gameID])) { result_val = 1; printf("Making turn\n"); MakeTurn(turn_str, gameID); printf("Color before: %d\n", games[gameID].current); games[gameID].current = (games[gameID].current + 1) % 2; printf("Color after: %d\n", games[gameID].current); fflush(stdout); MessageType mes = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &mes); clearMessage(&mes); } else { result_val = 0; MessageType mes = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &mes); mes = composeMessage(text, sizeof(error), error); sendMessage(incomeSd, &mes); clearMessage(&mes); } printf("Handling turn is finished\n"); fflush(stdout); return 1; }
void FindOpponent(int incomeSd, int userID) { int found = 0; int i; for (i = 0; i < MAXUSERS; i++) if (i != userID && users_available[i]) { if (users[userID].ownLevel == users[i].desiredLevel && users[userID].desiredLevel == users[i].ownLevel) { found = 1; int gameID = CreateGame(userID, i); userGame[userID] = userGame[i] = gameID; userOp[userID] = i; userOp[i] = userID; printf("\n\nUserIDs: %d, %d\n", userID, i); printf("Game info\n"); printf("\tGameID: %d\n", gameID); printf("\tWhiteID: %d\n", games[gameID].white_user.userID); printf("\tBlackID: %d\n", games[gameID].black_user.userID); break; } } if (!found) { int result_val = 0; MessageType m = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &m); while (userOp[userID] == userID) continue; } else { int result_val = 1; MessageType m = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &m); } MessageType m = composeMessage(text, sizeof(users[userOp[userID]].name), &(users[userOp[userID]].name)); sendMessage(incomeSd, &m); Color color; if (games[userGame[userID]].white_user.userID == userID) color = white; else color = black; m = composeMessage(color_t, sizeof(Color), &color); sendMessage(incomeSd, &m); clearMessage(&m); }
void* establishConnection(void* arg) { //Мы работаем с конкретным соединением int incomeSd = *((int*)arg); int userID = FindCell(); MessageType *buf = (MessageType*) malloc (sizeof(MessageType)); int resultOfHandlingMessage = 1; while (resultOfHandlingMessage) { if (server_enabled) { getMessage(incomeSd, buf); resultOfHandlingMessage = HandleMessage(buf, incomeSd, userID); } else { char *str = "Server is turned off..."; MessageType m = composeMessage(text, strlen(str), str); sendMessage(incomeSd, &m); } } free(buf); return NULL; }
int UserLogout(int incomeSd, int userID) { printf("\n\nUser [%d] is logging out!\n", userID); fflush(stdout); users_available[userID] = 0; pthread_mutex_lock(&usnum_mutex); numberOfPlayers--; pthread_mutex_unlock(&usnum_mutex); if (userGame[userID] >= 0) { games_available[userGame[userID]] = 0; userGame[userID] = -1; userGame[userOp[userID]] = -1; userOp[userOp[userID]] = userOp[userID]; userOp[userID] = userID; } printf("Userdata cleared...\n"); fflush(stdout); char result_val = 'g'; MessageType m = composeMessage(result, sizeof(char), &result_val); sendMessage(incomeSd, &m); clearMessage(&m); printf("User %s was successfully logged out\n", users[userID].name); fflush(stdout); return 0; }
void Parser::parse() { bool stop( false ); while(!m_xml->atEnd() && !stop) { QXmlStreamReader::TokenType token = m_xml->readNext(); if ( token == QXmlStreamReader::StartElement ) { if( m_xml->name()=="MSG_Notification" ) { MSG_Notification obj( *m_xml ); if ( m_xml->name() != "MSG_Notification" ) m_xml->raiseError( "tag mismatch MSG_Notification" ); else { emit signalMSG_Notification( obj ); stop = true; } } } } if ( m_xml->hasError() ) { switch ( m_xml->error() ) { case QXmlStreamReader::CustomError: emit( signalValidationError( composeMessage( *m_xml ) ) ); break; case QXmlStreamReader::PrematureEndOfDocumentError: emit( signalWarning( composeMessage( *m_xml ) ) ); break; case QXmlStreamReader::NotWellFormedError: case QXmlStreamReader::UnexpectedElementError: emit( signalError( composeMessage( *m_xml ) ) ); break; case QXmlStreamReader::NoError: break; } } }
int UserLogin(MessageType* m, int incomeSd, int userID) { printf("\n\nNew user [%d] is logging in!\n", userID); fflush(stdout); UserData user_data = *(UserData*)(m->data); users[userID] = user_data; //ud никуда не денется, потому что в куче users[userID].userID = userID; PrintUserByID(userID); if (!CanPlay()) { printf("User %s will not be logged in\n", user_data.name); fflush(stdout); int result_val = 0; MessageType m = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &m); clearMessage(&m); return 0; } else { printf("User %s has successfully logged in!\n", user_data.name); fflush(stdout); int result_val = 1; MessageType m = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &m); FindOpponent(incomeSd, userID); clearMessage(&m); return 1; } }
int UserTryTurn(int incomeSd, int userID) { printf("\n\nUser %s is trying to make a turn!\n", users[userID].name); fflush(stdout); int result_val; if (userGame[userID] == -1) { printf("The game of %s is over, he will be disconnected", users[userID].name); fflush(stdout); result_val = 0; } else { int gameID = userGame[userID]; Game game = games[gameID]; printf("The id of the game is: %d\n", gameID); printf("UserID: %d\n", userID); printf("WhiteID: %d\n", game.white_user.userID); printf("BlackID: %d\n", game.black_user.userID); if (game.current == white) printf("Current turn is whites'\n"); else printf("Current turn is blacks'\n"); if ((game.current == white && game.white_user.userID != userID) || (game.current == black && game.black_user.userID != userID)) { printf("Not time for turn!\n"); result_val = 1; } else result_val = 2; } MessageType mes = composeMessage(result, sizeof(int), &result_val); sendMessage(incomeSd, &mes); if (result_val == 2) { getMessage(incomeSd, &mes); UserTurn(&mes, incomeSd, userID); } clearMessage(&mes); return 1; }
Vision::Results ImageAnalyzer::analyze(cv::Mat& img) { findObjects(img); /* draw result on image (debug) */ BlobInfo* ghost_result = ghost_buffer.lastValidBlob(); if (ghost_result != NULL && ghost_result->getClass() == GHOST_CLASS) { cv::rectangle(img, ghost_result->a, ghost_result->b, CV_RGB(254,0,0), 2, 8, 0); } ghostwidth_filter.update(ghost_result != NULL ? ghost_result->getWidth() : 0); ghostheight_filter.update(ghost_result != NULL ? ghost_result->getHeight() : 0); distanceCalculator.insertGhostData((int)ghostheight_filter.curValue(), (int) ghostwidth_filter.curValue()); return composeMessage(); }