MAK RTIspy API Documentation for HLA 1516
saveStatusMsg.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2004 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: saveStatusMsg.h,v $ $Revision: 1.6 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtSaveStatusMsg_H_
00013 #define DtSaveStatusMsg_H_
00014 
00015 #include "rtiMsg.h"
00016 #include "netFederateStatusMsg.h"
00017 #include <vlutil/vlString.h>
00018 
00019 enum DtSaveStatus
00020 {
00021    DtNoSaveInProgress,
00022    DtInstructedToSave,
00023    DtSaving,
00024    DtWaitingForFederationToSave
00025 };
00026 
00027 #ifdef DtIFSPEC1516
00028 
00029 class DtConnectionMgr;
00030 class DtSaveStatusMsg;
00031 typedef void (*DtSaveStatusCb)(const DtSaveStatusMsg& inter, void* usr);
00032 
00033 class DT_DLL_LRC DtSaveStatusMsg : public DtRtiMsg
00034 {
00035 public:
00036 
00038    DtSaveStatusMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00039 
00041    DtSaveStatusMsg(DtFederateHandle federate,
00042       rti1516::FederateHandleSaveStatusPairVector const & saveStatusList,
00043       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00044 
00046    DtSaveStatusMsg(const DtNetSaveStatusMsg* netRep,
00047       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00048 
00050    virtual ~DtSaveStatusMsg();
00051 
00053    virtual DtRtiMsg* clone(bool copy = true) const; 
00054 
00056    virtual void set(DtFederateHandle federate,
00057       rti1516::FederateHandleSaveStatusPairVector const & saveStatusList);
00058 
00060    virtual void setRequestingFederate(DtFederateHandle federate);
00061    virtual DtFederateHandle requestingFederate() const;
00062 
00064    virtual void setSaveStatus(
00065       rti1516::FederateHandleSaveStatusPairVector const & saveStatusList,
00066       bool checkBufferSize=true);
00067    virtual rti1516::FederateHandleSaveStatusPairVector const & saveStatus() const;
00068 
00070    virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const;
00071 
00072 public:
00073 
00075    static DtRtiMsg* create(const DtNetMsgHeader* initial,
00076       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00077 
00078    static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00079 
00081    static void addCallback(DtConnectionMgr* conn,
00082       DtSaveStatusCb cb, void* usr, bool isMomCallback=false);
00083    static void removeCallback(DtConnectionMgr* conn,
00084       DtSaveStatusCb cb, void* usr, bool isMomCallback=false);
00085 
00087    static const char* statusToString(DtSaveStatus status);
00088 
00089 protected:
00090 
00092    virtual DtNetSaveStatusMsg* netSaveStatusMsg();
00093    virtual const DtNetSaveStatusMsg* netSaveStatusMsg() const;
00094 
00096    virtual DtNetFederateStatus* netStatusList();
00097    virtual const DtNetFederateStatus* netStatusList() const;
00098 
00100    virtual void setNumberFederates(int count);
00101    virtual int numberFederates() const;
00102 
00104    virtual DtRtiMsgKind internalDtRtiMsgKind();
00105 
00107    virtual int minSize(
00108       rti1516::FederateHandleSaveStatusPairVector const * saveStatusList=NULL) const;
00109 
00111    virtual void setSizeOfStatus(unsigned long size);
00112    
00114    virtual unsigned long sizeNeededForStatus(
00115       const rti1516::FederateHandleSaveStatusPairVector& status) const;
00116 
00118    virtual DtSaveStatusMsg* self() const;
00119 
00120 protected:
00121 
00122    rti1516::FederateHandleSaveStatusPairVector* myFederateStatus;
00123    int myStatusFieldLength;
00124 };
00125 
00126 
00127 inline DtSaveStatusMsg* DtSaveStatusMsg::self() const
00128 {
00129    return (DtSaveStatusMsg*) this;
00130 }
00131 
00132 #elif defined(DtIFSPEC1516E)
00133 
00134 class DtConnectionMgr;
00135 class DtSaveStatusMsg;
00136 typedef void (*DtSaveStatusCb)(const DtSaveStatusMsg& inter, void* usr);
00137 
00138 class DT_DLL_LRC DtSaveStatusMsg : public DtRtiMsg
00139 {
00140 public:
00141 
00143     DtSaveStatusMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00144 
00146     DtSaveStatusMsg(DtFederateHandle federate,
00147         rti1516e::FederateHandleSaveStatusPairVector const & saveStatusList,
00148         DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00149 
00151     DtSaveStatusMsg(const DtNetSaveStatusMsg* netRep,
00152         DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00153 
00155     virtual ~DtSaveStatusMsg();
00156 
00158     virtual DtRtiMsg* clone(bool copy = true) const; 
00159 
00161     virtual void set(DtFederateHandle federate,
00162         rti1516e::FederateHandleSaveStatusPairVector const & saveStatusList);
00163 
00165     virtual void setRequestingFederate(DtFederateHandle federate);
00166     virtual DtFederateHandle requestingFederate() const;
00167 
00169     virtual void setSaveStatus(
00170         rti1516e::FederateHandleSaveStatusPairVector const & saveStatusList,
00171         bool checkBufferSize=true);
00172     virtual rti1516e::FederateHandleSaveStatusPairVector const & saveStatus() const;
00173 
00175     virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const;
00176 
00177 public:
00178 
00180     static DtRtiMsg* create(const DtNetMsgHeader* initial,
00181         DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00182 
00183     static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00184 
00186     static void addCallback(DtConnectionMgr* conn,
00187         DtSaveStatusCb cb, void* usr, bool isMomCallback=false);
00188     static void removeCallback(DtConnectionMgr* conn,
00189         DtSaveStatusCb cb, void* usr, bool isMomCallback=false);
00190 
00192     static const char* statusToString(DtSaveStatus status);
00193 
00194 protected:
00195 
00197     virtual DtNetSaveStatusMsg* netSaveStatusMsg();
00198     virtual const DtNetSaveStatusMsg* netSaveStatusMsg() const;
00199 
00201     virtual DtNetFederateStatus* netStatusList();
00202     virtual const DtNetFederateStatus* netStatusList() const;
00203 
00205     virtual void setNumberFederates(int count);
00206     virtual int numberFederates() const;
00207 
00209     virtual DtRtiMsgKind internalDtRtiMsgKind();
00210 
00212     virtual int minSize(
00213         rti1516e::FederateHandleSaveStatusPairVector const * saveStatusList=NULL) const;
00214 
00216     virtual void setSizeOfStatus(unsigned long size);
00217 
00219     virtual unsigned long sizeNeededForStatus(
00220         const rti1516e::FederateHandleSaveStatusPairVector& status) const;
00221 
00223     virtual DtSaveStatusMsg* self() const;
00224 
00225 protected:
00226 
00227     rti1516e::FederateHandleSaveStatusPairVector* myFederateStatus;
00228     int myStatusFieldLength;
00229 };
00230 
00231 
00232 inline DtSaveStatusMsg* DtSaveStatusMsg::self() const
00233 {
00234     return (DtSaveStatusMsg*) this;
00235 }
00236 
00237 #endif //! DtIFSPEC1516
00238 #endif //! DtSaveStatusMsg_H_
00239 

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)