MAK RTIspy API Documentation for HLA Evolved
msgRetractHandleImpl1516e.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2003 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: msgRetractHandleImpl.h,v $ $Revision: 1.7 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef msgRetractHandleImplementation_H_
00013 #define msgRetractHandleImplementation_H_
00014 
00015 #ifdef DtIFSPEC1516E
00016 
00017 #include "rtiMsConfig.h"
00018 #include <RTI/VariableLengthData.h>
00019 #include <string>
00020 #include <sstream>
00021 #include "internalTypes.h"
00022 
00023 namespace rti1516e
00024 {
00025 
00026     class MessageRetractionHandleImplementation
00027     {
00028     public:
00030         MessageRetractionHandleImplementation();
00031         MessageRetractionHandleImplementation(
00032             DtMessageRetractionHandle retractHandle);
00033         MessageRetractionHandleImplementation(
00034             unsigned long fedHandleValue,
00035             unsigned long serialValue);
00036         MessageRetractionHandleImplementation(
00037             MessageRetractionHandleImplementation const & rhs);
00038 
00040         MessageRetractionHandleImplementation & operator=(
00041             MessageRetractionHandleImplementation const & rhs);
00042 
00043         bool isValid() const;
00044 
00046         bool operator==(MessageRetractionHandleImplementation const & rhs) const;
00047         bool operator!=(MessageRetractionHandleImplementation const & rhs) const;
00048         bool operator< (MessageRetractionHandleImplementation const & rhs) const;
00049 
00052         rti1516e::VariableLengthData encode() const;
00054         unsigned long encode(void* buffer, unsigned long bufferSize) const;
00055         unsigned long encodedLength() const;
00056 
00058         void decode(
00059             rti1516e::VariableLengthData const & encodedHandle);
00060 
00062         void decode(void* buffer, unsigned long bufferSize);
00063 
00065         std::wstring toString() const;
00066 
00068         void setValue(DtMessageRetractionHandle retractHandle);
00069         DtMessageRetractionHandle const & value() const;
00070 
00072         void setFederateHandle(unsigned long fedHandleValue);
00073         unsigned long federateHandle() const;
00074 
00076         void setSerialNumber(unsigned long serialValue);
00077         unsigned long serialNumber() const;
00078 
00079     protected:
00080         DtMessageRetractionHandle myRetractHandle;
00081     };
00082 
00083     inline
00084         MessageRetractionHandleImplementation::MessageRetractionHandleImplementation()
00085     {
00087         myRetractHandle.sendingFederate = 0;
00088         myRetractHandle.serialNumber = 0;
00089     }
00090     inline
00091         MessageRetractionHandleImplementation::MessageRetractionHandleImplementation(
00092         unsigned long fedHandleValue,
00093         unsigned long serialValue)
00094     {
00095         myRetractHandle.sendingFederate = fedHandleValue;
00096         myRetractHandle.serialNumber = serialValue;
00097     }
00098     inline
00099         MessageRetractionHandleImplementation::MessageRetractionHandleImplementation(
00100         DtMessageRetractionHandle retractHandle)
00101     {
00102         myRetractHandle.sendingFederate = retractHandle.sendingFederate;
00103         myRetractHandle.serialNumber = retractHandle.serialNumber;
00104     }
00105     inline
00106         MessageRetractionHandleImplementation::MessageRetractionHandleImplementation(
00107         MessageRetractionHandleImplementation const & rhs)
00108     {
00109         myRetractHandle.sendingFederate = rhs.myRetractHandle.sendingFederate;
00110         myRetractHandle.serialNumber = rhs.myRetractHandle.serialNumber;
00111     }
00112     inline
00113         MessageRetractionHandleImplementation &
00114         MessageRetractionHandleImplementation::operator=(
00115         MessageRetractionHandleImplementation const & rhs)
00116     {
00117         if (this == &rhs)
00118             return *this;
00119         myRetractHandle.sendingFederate = rhs.myRetractHandle.sendingFederate;
00120         myRetractHandle.serialNumber = rhs.myRetractHandle.serialNumber;
00121         return *this;
00122     };
00123 
00124     inline bool MessageRetractionHandleImplementation::isValid() const
00125     {
00127         return myRetractHandle.sendingFederate != 0;
00128     }
00129 
00130     inline bool MessageRetractionHandleImplementation::operator==(
00131         MessageRetractionHandleImplementation const & rhs) const
00132     {
00133         return
00134             myRetractHandle.sendingFederate == rhs.myRetractHandle.sendingFederate
00135             && myRetractHandle.serialNumber == rhs.myRetractHandle.serialNumber;
00136     };
00137     inline bool MessageRetractionHandleImplementation::operator!=(
00138         MessageRetractionHandleImplementation const & rhs) const
00139     {
00140         return
00141             myRetractHandle.sendingFederate != rhs.myRetractHandle.sendingFederate
00142             || myRetractHandle.serialNumber != rhs.myRetractHandle.serialNumber;
00143     };
00144     inline bool MessageRetractionHandleImplementation::operator< (
00145         MessageRetractionHandleImplementation const & rhs) const
00146     {
00147         return
00148             myRetractHandle.sendingFederate < rhs.myRetractHandle.sendingFederate
00149             ||
00150             (myRetractHandle.sendingFederate == rhs.myRetractHandle.sendingFederate
00151             && myRetractHandle.serialNumber < rhs.myRetractHandle.serialNumber);
00152     };
00153 
00154     inline rti1516e::VariableLengthData
00155         MessageRetractionHandleImplementation::encode() const
00156     {
00157         DtNetMessageRetractionHandle netHandle;
00158         netHandle.sendingFederate = myRetractHandle.sendingFederate;
00159         netHandle.serialNumber = myRetractHandle.serialNumber;
00160         return rti1516e::VariableLengthData(&netHandle, sizeof(netHandle));
00161     };
00162 
00163     inline unsigned long MessageRetractionHandleImplementation::encode(
00164         void* buffer, unsigned long bufferSize) const
00165     {
00166         DtNetMessageRetractionHandle netHandle;
00167         if (bufferSize < sizeof(netHandle))
00168             return 0;
00169         netHandle.sendingFederate = myRetractHandle.sendingFederate;
00170         netHandle.serialNumber = myRetractHandle.serialNumber;
00171         memcpy(buffer, &netHandle, sizeof(netHandle));
00172         return sizeof(netHandle);
00173     }
00174     inline unsigned long MessageRetractionHandleImplementation::encodedLength() const
00175     {
00176         return sizeof(DtNetMessageRetractionHandle);
00177     }
00178 
00179     inline std::wstring MessageRetractionHandleImplementation::toString() const
00180     {
00181         std::wstringstream ss;
00182         ss << myRetractHandle.sendingFederate << L" " << myRetractHandle.serialNumber;
00183         return ss.str();
00184     };
00185 
00186     inline void MessageRetractionHandleImplementation::setValue(
00187         DtMessageRetractionHandle retractHandle)
00188     {
00189         myRetractHandle.sendingFederate = retractHandle.sendingFederate;
00190         myRetractHandle.serialNumber = retractHandle.serialNumber;
00191     }
00192 
00193     inline DtMessageRetractionHandle const &
00194         MessageRetractionHandleImplementation::value() const
00195     {
00196         return myRetractHandle;
00197     }
00198 
00199     inline void MessageRetractionHandleImplementation::setFederateHandle(
00200         unsigned long fedHandleValue)
00201     {
00202         myRetractHandle.sendingFederate = fedHandleValue;
00203     }
00204     inline unsigned long MessageRetractionHandleImplementation::federateHandle() const
00205     {
00206         return myRetractHandle.sendingFederate;
00207     }
00208 
00209     inline void MessageRetractionHandleImplementation::setSerialNumber(unsigned long serialValue)
00210     {
00211         myRetractHandle.serialNumber = serialValue;
00212     }
00213     inline unsigned long MessageRetractionHandleImplementation::serialNumber() const
00214     {
00215         return myRetractHandle.serialNumber;
00216     }
00217     inline void MessageRetractionHandleImplementation::decode(
00218         rti1516e::VariableLengthData const & encodedHandle)
00219     {
00220         DtNetMessageRetractionHandle* netHandle =
00221             (DtNetMessageRetractionHandle*) encodedHandle.data();
00222         myRetractHandle.sendingFederate = netHandle->sendingFederate;
00223         myRetractHandle.serialNumber = netHandle->serialNumber;
00224     }
00225 
00226     inline void MessageRetractionHandleImplementation::decode(
00227         void* buffer, unsigned long bufferSize)
00228     {
00229         DtNetMessageRetractionHandle* netHandle =
00230             (DtNetMessageRetractionHandle*) buffer;
00231         myRetractHandle.sendingFederate = netHandle->sendingFederate;
00232         myRetractHandle.serialNumber = netHandle->serialNumber;
00233     }
00234 
00235 };
00236 
00237 #endif // DtIFSPEC1516E
00238 
00239 #endif //! msgRetractHandleImplementation_H_

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)