/** * progress one frame, handle all network traffic */ void NG_NetworkScene::proceed(double curtime) { if (!m_networkdevice) return; if (!m_networkdevice->IsOnline()) return; ClearAllMessageMaps(); // read all NetworkMessages from the device vector<NG_NetworkMessage*> messages = m_networkdevice->RetrieveNetworkMessages(); vector<NG_NetworkMessage*>::iterator mesit = messages.begin(); for (; !(mesit == messages.end()); mesit++) { NG_NetworkMessage* message = (*mesit); vector<NG_NetworkMessage*>* tmplist=NULL; vector<NG_NetworkMessage*>** tmplistptr = m_messagesByDestinationName[message->GetDestinationName()]; // if there is already a vector of messages, append, else create // a new vector and insert into map if (!tmplistptr) { tmplist = new vector<NG_NetworkMessage*>; m_messagesByDestinationName.insert(message->GetDestinationName(), tmplist); } else { tmplist = *tmplistptr; } message->AddRef(); tmplist->push_back(message); tmplist = NULL; tmplistptr = m_messagesBySenderName[message->GetSenderName()]; // if there is already a vector of messages, append, else create // a new vector and insert into map if (!tmplistptr) { tmplist = new vector<NG_NetworkMessage*>; m_messagesBySenderName.insert(message->GetSenderName(), tmplist); } else { tmplist = *tmplistptr; } message->AddRef(); tmplist->push_back(message); tmplist = NULL; tmplistptr = m_messagesBySubject[message->GetSubject()]; // if there is already a vector of messages, append, else create // a new vector and insert into map if (!tmplistptr) { tmplist = new vector<NG_NetworkMessage*>; m_messagesBySubject.insert(message->GetSubject(), tmplist); } else { tmplist = *tmplistptr; } message->AddRef(); tmplist->push_back(message); tmplist = NULL; } }