synchronized void setChar( Message client_msg ){
		//System.out.println("Char written by Thread : " + Thread.currentThread() );
		//System.out.println("Char written : " + client_msg.getCharacter_pressed() + ", pos : "+ client_msg.getPosition() +" , revnum : "+ client_msg.getClient_version_number() + " , cid : " +client_msg.getClient_id() );
		ServerThreadedWorker.char_typed = char_typed;
		char temp[] = new char[2];
		temp[0] = char_typed;
		try{
			int client_id = client_msg.getClient_id();
			int revision_num = client_msg.getClient_version_number();
			System.out.println("Client id : "+ client_id + " , rev num : "+ revision_num );
			int loop_counter=0;
			while(revision_num > getCurrentRevisionNum(client_id)+1){
				Thread.currentThread().sleep(20);
				System.out.println("sleeping ! Revnum of this client : " + revision_num + " , global rev num : "+ current_revision_number_for_client[client_id] );
			loop_counter++;
			if(loop_counter>100)	//To prevent infinite loop
				break;
			}
			queue.put( client_msg );
			setCurrentRevisionNum(client_id,revision_num);
		}catch(InterruptedException e){
		}
		//setPersistentThreadStatusAllThreads();
		//this.semaphore++;
	}