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;
 }
Beispiel #2
0
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;
}
Beispiel #3
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;
    }
}