void CommunicationComManager::messageReceived(Message* message)
    {

      //Get Time frame to accept the messageReceived
      TIME currentTime=Integrator::getCurSimTime();
      TIME graceTime=currentTime- Integrator::getPacketLostPeriod();
      if(graceTime>currentTime){ //overflowed
	graceTime=0;
      }
#if DEBUG
      if (message->getSize() > 0) {
    CERR << "AbsCommManager::messageReceived(" << (char*)message->getData() << ") " << currentTime << endl;
      }
      else {
    CERR << "AbsCommManager::messageReceived(NULL) " << currentTime << endl;
      }
#endif
      if(message->getTime()<graceTime){ //old message drop
#if DEBUG
	CERR << "message is old dropping" << endl;
#endif
	  delete message;
	  return;
      }
#if DEBUG
      CERR << message->getTo() << endl;
#endif
      ObjectCommInterface *comm=getObjectInterface(message->getFrom());
      //handle bcast
      if(message->isBroadCast()){
	addMessageTimeout(message->getTime(),true);
	map<string,ObjectCommInterface*>::iterator it=this->interfaces.begin();
	for(;it!=interfaces.end();++it){
	  if(it->first.compare(message->getFrom())==0)
	    continue;
	  Message *nm=new Message(message->getFrom(),it->first,message->getTime(),
		  message->getData(),message->getSize());
	 signalNewMessage(comm,nm);
	  //it->second->newMessage(nm);
	}
	delete message;
      }
      else{
      //handle single message
      //let it throw an exception if the key is not found
	  //comm->newMessage(message);
	  signalNewMessage(comm,message);
	  addMessageTimeout(message->getTime());
      }
    
     
    }
/**
 * called when popupFileTimer is done,
 * looks for new messages and parses them
 */
void KLinPopup::popupFileTimerDone()
{
// maybe we can use inotify here some day
	if (checkPopupFileDirectory()) {
		QDir dir(POPUP_DIR);
		const QFileInfoList *popupFiles = dir.entryInfoList(QDir::Files, QDir::Name);
		if (popupFiles) {
			QFileInfoListIterator it(*popupFiles);
			QFileInfo *popupFileInfo;
			while((popupFileInfo = it.current()) != 0) {
				++it;
				if (popupFileInfo -> isFile()) {
					QString popupFileName(popupFileInfo -> fileName());
					QString popupFilePath(POPUP_DIR);
					popupFilePath.append("/");
					popupFilePath.append(popupFileName);

					QFile popupFile(popupFilePath);

					kdDebug() << "popupFile " << popupFileName << endl;

					if (popupFile.open(IO_ReadOnly)) {
						QTextStream stream(&popupFile);
						QString line;
						QString sender;
						QString machine;
						QString ip;
						QString time;
						QString text;
						int i = 0;

						while (! stream.atEnd()) {
							i++;
							line = stream.readLine();

							if (i == 1)  {
								sender.append(line);
								continue;
							}
							if (i == 2) {
								machine.append(line);
								continue;
							}
							if (i == 3) {
								ip.append(line);
								continue;
							}
							if (i == 4) {
								time.append(line);
								continue;
							}
							if (i > 5) {
								text.append('\n');
							}
							text.append(line);
						}

						popupFile.close();

						// delete file
						if (! popupFile.remove())
							kdDebug() << "Message file not removed - how that?" << endl;

						signalNewMessage(sender, machine, ip, time, text);
					}
				}
			}
		}
		if (!hasInotify) popupFileTimer->start(optTimerInterval * 1000, true);
	}
}