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

📄 messagebody.cc

📁 certi-SHM-3.0.tar 不错的开源的分布式方针软件 大家多多支持 他是linux
💻 CC
字号:
// -*- mode:C++ ; tab-width:4 ; c-basic-offset:4 ; indent-tabs-mode:nil -*-// ----------------------------------------------------------------------------// 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: MessageBody.cc,v 3.3 2003/02/19 18:07:30 breholee Exp $// ----------------------------------------------------------------------------#include "MessageBody.hh"#include <iostream.h>// Comment this out if you don't want to use Integer encoding in stream.// #define USE_INT_ENCODINGnamespace certi {// ----------------------------------------------------------------------------/*! To create a WRITE body, with its own buffer(it will be deleted by the  destructor). No Read operations should be made.*/MessageBody::MessageBody(void){    Length = 0 ;    GetPtr = Buffer ;    if ((sizeof(unsigned short) != 2) || (sizeof(unsigned long) != 4))        throw RTIinternalError("MessageBody unabled to process ints.");}// ----------------------------------------------------------------------------//! Destructor.MessageBody::~MessageBody(void){}// ----------------------------------------------------------------------------//! getLength./*! Body must have been frozen. */long MessageBody::getLength(void){    return Length ;}// ----------------------------------------------------------------------------//! getBuffer./*! Body must have been frozen. */char *MessageBody::getBuffer(void){    return Buffer ;}// ----------------------------------------------------------------------------/*! Retrieve a string from the Body, and put it in Store. Store is at least  (StoreLen + 1) bytes long. Store must be NOT NULL.*/void MessageBody::readString(char *Store, unsigned short StoreLen){    // Read String's Length    unsigned short StrLength = readShortInt();    // Is the Store String long enough?    if (StrLength > StoreLen)        throw RTIinternalError("String in Message too long for storage.");    // Get string from stream    if (StrLength > 0)        sgetn(Store, StrLength);    Store[StrLength] = '\0' ;}// ----------------------------------------------------------------------------/*! If the string is empty(or NULL), an empty string is written onto the  stream.*/void MessageBody::writeString(const char *String){    unsigned short StrLength ;    // NULL String is handled like an empty string    if (String == NULL) {        writeShortInt(0);        return ;    }    // Write string length    StrLength = std::strlen(String);    // BUG: Should test string's length.    //if (StrLength > MAX_BYTES_PER_VALUE)    // throw RTIinternalError("String too long.");    writeShortInt(StrLength);    // WriteString    if (StrLength > 0) {        sputn((char *)String, StrLength);    }}}// $Id: MessageBody.cc,v 3.3 2003/02/19 18:07:30 breholee Exp $

⌨️ 快捷键说明

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