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()); } }
InterfaceProxy *DataManager::getObjectInterface(std::string const &path) const { return getObjectInterface(hash_string(path.c_str()), path, 0); }
InterfaceProxy *DataManager::getObjectInterface(ObjectID const &id) const { return getObjectInterface(id, "", 0); }