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

📄 networkmessage.cc

📁 分布式仿真 开放源码
💻 CC
字号:
// ----------------------------------------------------------------------------// CERTI - HLA RunTime Infrastructure// Copyright (C) 2002, 2003  ONERA//// This file is part of CERTI-libCERTI//// CERTI-libCERTI is free software ; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public License// as published by the Free Software Foundation ; either version 2 of// the License, or (at your option) any later version.//// CERTI-libCERTI 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// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser 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: NetworkMessage.cc,v 3.11 2004/01/09 16:13:49 breholee Exp $// ----------------------------------------------------------------------------#include <config.h>#include "NetworkMessage.hh"#include "PrettyDebug.hh"#include <cstdio>#include <cstring>using std::vector ;namespace certi {// -------------// -- Affiche --// -------------voidNetworkMessage::display(const char *s){    printf(" --- MESSAGE RESEAU --- %s ---\n", s);    printf(" type = %d\n", type);    printf(" number = %ld-%d\n", federate, number);    printf(" date = %f\n", date);    printf(" exception = %d\n", exception);    printf(" ObjectHandle = %ld\n", objectClass);    printf(" interactionClass= %ld\n", interactionClass);    printf(" object = %ld\n", object);    printf(" handleArraySize = %d\n", handleArraySize);}// --------------------// -- NetworkMessage --// --------------------NetworkMessage::NetworkMessage()    : type(NOT_USED),      exception(e_NO_EXCEPTION){    number = 0 ;    federation = 0 ;    federate = 0 ;    federationName[0] = '\0' ;    federateName[0] = '\0' ;    label[0] = '\0' ;    bestEffortPeer = -1 ;    bestEffortAddress = 0 ;    // Clear Header    memset((void *) &Header, '\0', sizeof(Header));    date = 0.0 ;    object = 0 ;    objectClass = 0 ;    interactionClass = 0 ;    handleArraySize = 0 ;}// ---------------------// -- ~NetworkMessage --// ---------------------NetworkMessage::~NetworkMessage(){}// -------------------------// -- GetAttribValueArray --// -------------------------AttributeValue *NetworkMessage::getAttribValueArray(){    int i ;    AttributeValue *NewValueArray = NULL ;    NewValueArray = (AttributeValue *) calloc(handleArraySize,                                              sizeof(AttributeValue));    if (NewValueArray == NULL)        throw RTIinternalError("No memory.");    for (i = 0 ; i <handleArraySize ; i++)        getValue(i, NewValueArray[i]);    return NewValueArray ;}// ------------------------// -- GetParamValueArray --// ------------------------ParameterValue *NetworkMessage::getParamValueArray(){    int i ;    ParameterValue *NewValueArray = NULL ;    NewValueArray = (ParameterValue *) calloc(handleArraySize,                                              sizeof(ParameterValue));    if (NewValueArray == NULL)        throw RTIinternalError("No memory.");    for (i = 0 ; i < handleArraySize ; i++)        getValue(i, NewValueArray[i]);    return NewValueArray ;}// --------------// -- GetValue --// --------------char *NetworkMessage::getValue(int Rank, char *Value)    throw (RTIinternalError){    // Pre-Checking    if ((Rank < 0) || (Rank >= handleArraySize))        throw RTIinternalError("Bad Rank in Message.");    // Getting Value    if (Value != NULL) {        strcpy(Value, ValueArray[Rank]);        return NULL ;    } else        return strdup(ValueArray[Rank]);}// ---------------------// -- RemoveAttribute --// ---------------------voidNetworkMessage::removeAttribute(UShort Rank){    UShort AttribIndex = 0 ;    if (Rank >= handleArraySize)        throw RTIinternalError("Bad Rank while removing message attribute.");    // Shift Attribute Handles and Values    for (AttribIndex = Rank ; AttribIndex < handleArraySize - 1 ; AttribIndex ++) {        handleArray[AttribIndex] = handleArray[AttribIndex + 1] ;        strcpy(ValueArray[AttribIndex], ValueArray[AttribIndex + 1]);    }    handleArraySize -- ;}// ---------------------// -- RemoveParameter --// ---------------------voidNetworkMessage::removeParameter(UShort Rank){    UShort ParamIndex = 0 ;    if (Rank >= handleArraySize)        throw RTIinternalError("Bad Rank while removing message parameter.");    // Shift Parameter Handles and Values    for (ParamIndex = Rank ; ParamIndex < handleArraySize - 1 ; ParamIndex ++) {        handleArray[ParamIndex] = handleArray[ParamIndex + 1] ;        strcpy(ValueArray[ParamIndex], ValueArray[ParamIndex + 1]);    }    handleArraySize -- ;}// --------------// -- SetValue --// --------------voidNetworkMessage::setValue(int Rank, const char *Value)    throw (RTIinternalError){    // Pre-Checking    if ((Value == NULL) || (strlen(Value) > MAX_BYTES_PER_VALUE))        throw RTIinternalError("Bad Value for message.");    if ((Rank < 0) || (Rank >= handleArraySize))        throw RTIinternalError("Bad Rank for message.");    // Setting Value    strcpy(ValueArray[Rank], Value);}// ----------------------------------------------------------------------------voidNetworkMessage::setAHS(const AttributeHandle *attr, int size){    handleArraySize = size ;    for (int i = 0 ; i < size ; ++i) {        handleArray[i] = attr[i] ;    }}}// $Id: NetworkMessage.cc,v 3.11 2004/01/09 16:13:49 breholee Exp $

⌨️ 快捷键说明

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