bool basis_req_parcel::operator<(const basis_req_parcel& rs) const { if (devnum() != rs.devnum()) return (devnum() < rs.devnum()); if (kind() != rs.kind()) return (kind() < rs.kind()); if (chanel() != rs.chanel()) return (chanel() < rs.chanel()); if (addr() != rs.addr()) return (addr() < rs.addr()); if (indx() != rs.indx()) return (indx() < rs.indx()); if (size() != rs.size()) return (size() < rs.size()); return false; }
int main(int argc, char * argv[]) { // fork and execute the dataserver from (current) parent pid_t PID; if( (PID = fork()) < 0 ) { // error catching fprintf(stderr, "fork() error\n"); return 1; // ERROR: should not happen } else if ( PID == 0 ) { // Child code block // execvp() if ( execvp("./dataserver", argv) < 0 ) { fprintf(stderr, "execvp() error\n"); return 1; } printf("Should not print.\n"); } // Parent continues with requests usleep(100000); RequestChannel chanel("control",RequestChannel::CLIENT_SIDE); // construct client side pipe usleep(1000000); // test with "hello" string reply1 = chanel.send_request("hello"); std::cout << "Reply to request 'hello' is '" << reply1 << "'" << std::endl << flush; printf("=============TIMING=REQUEST========================\n"); assert(gettimeofday(&tp_start, 0) == 0); // test with "hello" reply1 = chanel.send_request("data " + int2string(4) ); std::cout << "Reply to request 'data 4' is '" << reply1 << "'" << std::endl << flush; assert(gettimeofday(&tp_end, 0) == 0); printf("Time taken for server request: "); print_time_diff(&tp_start, &tp_end); printf("\n"); printf("=============TIMING=REQUEST========================\n"); printf("=============TIMING=FAKE=REQUEST========================\n"); assert(gettimeofday(&tp_start, 0) == 0); // test with fake request reply1 = fake_request("This is a fake request."); std::cout << "Reply to request 'This is a fake request.' is '" << reply1 << "'" << std::endl << flush; assert(gettimeofday(&tp_end, 0) == 0); printf("Time taken for fake request: "); print_time_diff(&tp_start, &tp_end); printf("\n"); printf("=============TIMINGFAKE==REQUEST========================\n"); // test close with "quit" reply1 = chanel.send_request("quit"); std::cout << "Reply to request 'quit' is '" << reply1 << "'" << std::endl << flush; wait(&PID); return 0; }
void Game::notificationPacket(sf::Packet* packet) { unsigned int notifyType(0); *packet >> notifyType; switch(notifyType) { case NetworkValues::RECEIVE_CHAT_MESSAGE: { std::string message(""); std::string username(""); std::string chanel(""); std::string text(""); *packet >> username >> chanel >> text; /** TODO Canaux **/ message = "[" + username + "] " + text; chat.write(message); } break; case NetworkValues::PLAYER_CONNECTED : { std::string username(""); std::string message(""); *packet >> username; message = "[" + username + "] Viens de se connecter !"; chat.write(message, sf::Color::Yellow); } break; case NetworkValues::PLAYER_DISCONNECTED : { std::string username(""); std::string message(""); *packet >> username; message = "[" + username + "] Viens de se deconnecter !"; chat.write(message, sf::Color::Yellow); } break; case NetworkValues::ENTITY_REMOVED : { unsigned int entityId(0); unsigned long long id(0); *packet >> id >> entityId; world.removeEntity(entityId); udpPacketNumberReceive = id; } break; case NetworkValues::LEVEL_UP : { unsigned int entityId(0); *packet >> entityId; std::string name = world.getEntityById(entityId)->getName(); float level(0); *packet >> level; std::stringstream ss; ss << name << " viens de monter level " << (unsigned int)level; chat.write(ss.str(), sf::Color::Yellow); } break; case NetworkValues::PLAYER_MOVED_TO_WORLD: { unsigned int worldId(0); unsigned int mapId(0); *packet >> worldId >> mapId; world.changeWorld(worldId, mapId); std::stringstream ss; ss << "Vous vous teléportez au monde: " << (unsigned int)worldId; chat.write(ss.str(), sf::Color::Yellow); } break; case NetworkValues::KILL: { unsigned int killerId(0); unsigned int killedId(0); *packet >> killerId >> killedId; std::string killer = world.getEntityById(killerId)->getName(); std::string killed = world.getEntityById(killedId)->getName(); std::stringstream ss; ss << killer << " a tué: " << killed << " !"; chat.write(ss.str(), sf::Color::Red); world.entityKilled(killedId); } default: break; } }