⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtia_network.cc

📁 分布式仿真 开放源码
💻 CC
字号:
// ----------------------------------------------------------------------------// CERTI - HLA RunTime Infrastructure// Copyright (C) 2002, 2003  ONERA//// This file is part of CERTI//// CERTI is free software ; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation ; either version 2 of the License, or// (at your option) any later version.//// CERTI is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY ; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program ; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//// $Id: RTIA_network.cc,v 3.8 2003/06/27 17:26:28 breholee Exp $// ----------------------------------------------------------------------------#include <config.h>#include "RTIA.hh"namespace certi {namespace rtia {static pdCDebug D("RTIA", "(RTIA net) ");// ----------------------------------------------------------------------------//! RTIA processes a message coming from network.voidRTIA::processNetworkMessage(NetworkMessage *msg){    switch(msg->type) {      case NetworkMessage::MESSAGE_NULL:      {          D.Out(pdTrace,                "Receving Message from RTIG, type NetworkMessage::MESSAGE_NULL(%f).",                msg->date);          tm->update(msg->federate, msg->date);          delete msg ;          break ;      }      case NetworkMessage::SET_TIME_REGULATING:      {          // Another federate is becoming regulating.          D.Out(pdTrace,                "Receving Message from RTIG, type NetworkMessage::SET_TIME_REGULATING.");          if (msg->regulator)              tm->insert(msg->federate, msg->date);          else              tm->remove(msg->federate);          delete msg ;          break ;      }      case NetworkMessage::SYNCHRONIZATION_POINT_REGISTRATION_SUCCEEDED:        D.Out(pdTrace, "Receiving Message from RTIG, type NetworkMessage::SYNCHRONIZATION_"              "POINT_REGISTRATION_SUCCEEDED.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::ANNOUNCE_SYNCHRONIZATION_POINT:        D.Out(pdTrace, "Receiving Message from RTIG, type NetworkMessage::ANNOUCE_"              "SYNCHRONIZATION_POINT.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::FEDERATION_SYNCHRONIZED:        D.Out(pdTrace,              "Receiving Message from RTIG, type NetworkMessage::FEDERATION_SYNCHRONIZED.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::DISCOVER_OBJECT:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::DISCOVER_OBJECT.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::REFLECT_ATTRIBUTE_VALUES:      {          D.Out(pdTrace,                "Receving Message from RTIG, "                "type NetworkMessage::REFLECT_ATTRIBUTE_VALUES.");          if (tm->requestContraintState())              // Verify that received TSO timestamp is >= current              // time + lookahead              queues->insertTsoMessage(msg);          else              queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::RECEIVE_INTERACTION:      {          D.Out(pdTrace,                "Receving Message from RTIG, type NetworkMessage::RECEIVE_INTERACTION.");          if (tm->requestContraintState()) {              // Verify that received TSO timestamp is >= current              // time + lookahead              queues->insertTsoMessage(msg);          }          else              queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::REMOVE_OBJECT:      {          D.Out(pdTrace, "Receving Message from RTIG, type NetworkMessage::REMOVE_OBJECT.");          if (tm->requestContraintState()) {              // Verify that received TSO timestamp is >= current              // time + lookahead              queues->insertTsoMessage(msg);          }          else              queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::INFORM_ATTRIBUTE_OWNERSHIP:      {          D.Out(pdTrace,                "Receving Message from RTIG, "                "type NetworkMessage::INFORM_ATTRIBUTE_OWNERSHIP.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::ATTRIBUTE_IS_NOT_OWNED:      {          D.Out(pdTrace,                "Receving Message from RTIG, type NetworkMessage::ATTRIBUTE_IS_NOT_OWNED.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_ASSUMPTION.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::ATTRIBUTE_OWNERSHIP_UNAVAILABLE:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::ATTRIBUTE_OWNERSHIP_UNAVAILABLE.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::ATTRIBUTE_OWNERSHIP_ACQUISITION_NOTIFICATION.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::ATTRIBUTE_OWNERSHIP_DIVESTITURE_NOTIFICATION.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::REQUEST_ATTRIBUTE_OWNERSHIP_RELEASE.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION:      {          D.Out(pdTrace, "Receving Message from RTIG, "                "type NetworkMessage::CONFIRM_ATTRIBUTE_OWNERSHIP_ACQUISITION_CANCELLATION.");          queues->insertFifoMessage(msg);          break ;      }      case NetworkMessage::INITIATE_FEDERATE_SAVE:        D.Out(pdTrace, "Receiving Message from RTIG, "              " type InitiateFederateSave.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::FEDERATION_SAVED:      case NetworkMessage::FEDERATION_NOT_SAVED:        D.Out(pdTrace, "Receiving Message from RTIG, "              " type Federation(Not)Saved.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::REQUEST_FEDERATION_RESTORE_SUCCEEDED:      case NetworkMessage::REQUEST_FEDERATION_RESTORE_FAILED:        D.Out(pdTrace, "Receiving Message from RTIG, "              " type RequestFederationRestoreStatus.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::FEDERATION_RESTORE_BEGUN:        D.Out(pdTrace, "Receiving Message from RTIG, "              " type FederationRestoreBegun.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::INITIATE_FEDERATE_RESTORE:        D.Out(pdTrace, "Receiving Message from RTIG, "              " type InitiateFederateRestore.");        queues->insertBeginCommand(msg);        break ;      case NetworkMessage::FEDERATION_RESTORED:      case NetworkMessage::FEDERATION_NOT_RESTORED:        D.Out(pdTrace, "Receiving Message from RTIG, "              " type Federation(Not)Restored.");        queues->insertBeginCommand(msg);        break ;      default:      {          D.Out(pdTrace,                "Receving Message from RTIG, unknown type %d.", msg->type);          delete msg ;          throw RTIinternalError("Unknown Message type received from RTIG.");      }    }    stat.rtiService(msg->type);}}} // namespace certi/rtia// $Id: RTIA_network.cc,v 3.8 2003/06/27 17:26:28 breholee Exp $

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -