📄 messagebody.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 + -