public Data waitForReply(int requestIndex) throws RequestException {
		if(_subscribeReceiver) {
			Data reply = null;
			synchronized(_replyList) {
				long waitTime = CommunicationConstant.MAX_WAITING_TIME_FOR_SYNC_RESPONCE;
				try {
					while(reply == null) {
						if(_closed) throw new RequestException("Verbindung zum Datenverteiler wurde terminiert");
						for(Iterator iterator = _replyList.iterator(); iterator.hasNext();) {
							Data data = (Data)iterator.next();
							if(data.getScaledValue("anfrageIndex").intValue() == requestIndex) {
								reply = data;
								break;
							}
						}
						if(reply == null) {
							if(waitTime <= 0){
								throw new RuntimeException("Die Konfiguration antwortet nicht");
							}
							long startTime = System.nanoTime();
							_replyList.wait(waitTime);
							long waitedTime = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);
							if(waitedTime > 0){
								waitTime -= waitedTime;
							}
						}
					}
					_replyList.remove(reply);
				}
				catch(InterruptedException e) {
					e.printStackTrace();
					throw new RuntimeException(e); 
				}
			}
			return reply;
		}
		else {
			// Es wurde gar kein Empfänger für Nachrichten angemeldet. Also wird nie eine Antwort kommen
			throw new IllegalStateException("Es wurde keine Senke für Antworten angemeldet.");
		}
	}