MAK RTIspy API Documentation for HLA 1.3
resignMsg.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: resignMsg.h,v $ $Revision: 1.20 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtResignMsg_H_
00013 #define DtResignMsg_H_
00014 
00015 #include "rtiMsg.h"
00016 #include "netResignMsg.h"
00017 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00018 #include "RTI/Enums.h"
00019 #endif
00020 #include <vlutil/vlFedTarget.h>
00021 
00022 class DtConnectionMgr;
00023 class DtResignMsg;
00024 typedef void (*DtResignCb)(const DtResignMsg& inter, void* usr);
00025 
00026 enum DtResignReason
00027 {
00028    DtNormalResign,            // Through API call
00029    DtNotHeartbeatedResign,    // Heartbeat msg not received in time
00030    DtLostConnectionResign,    // Lost reliable connection
00031    DtForwarderQueueFullResign,// Forwarder queue for federate filled
00032    DtUserForcedResign         // Forced through GUI or command line
00033 };
00034 
00035 class DT_DLL_LRC DtResignMsg : public DtRtiMsg
00036 {
00037 public:
00038 
00040    DtResignMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00041 
00042    DtResignMsg(const char* fedExName,
00043       DtFederateHandle fedHandle,
00044       DtResignAction action,
00045       DtResignReason reason,
00046       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00047 
00049    DtResignMsg(const DtNetResignMsg* netRepMsg,
00050       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00051 
00053    virtual ~DtResignMsg();
00054 
00056    virtual DtRtiMsg* clone(bool copy = true) const; 
00057 
00059    virtual void set(const char* fedExName,
00060       DtFederateHandle fedHandle,
00061       DtResignAction action,
00062       DtResignReason reason);
00063 
00065    virtual void setResignAction(DtResignAction action);
00066    virtual DtResignAction resignAction() const;
00067 
00069    virtual void setResignReason(DtResignReason reason);
00070    virtual DtResignReason resignReason() const;
00071 
00073 #ifdef DtIFSPEC1516
00074    virtual void setTimeStamp(rti1516::LogicalTime const & time);
00075    virtual rti1516::LogicalTime const * timeStamp(
00076       DtLogicalTimeFactory* logicalTimeFactory) const;
00077 #elif defined(DtIFSPEC1516E)
00078    virtual void setTimeStamp(rti1516e::LogicalTime const & time);
00079    virtual rti1516e::LogicalTime const * timeStamp(
00080       DtLogicalTimeFactory* logicalTimeFactory) const;
00081 #else
00082    virtual void setTimeStamp(RTI::FedTime const & time);
00083    virtual RTI::FedTime const * timeStamp(
00084       DtLogicalTimeFactory* logicalTimeFactory) const;
00085 #endif
00086 
00088    virtual void setTimeStampSize(int size);
00089    virtual int timeStampSize() const;
00090 
00092    virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const;
00093 
00094 public:
00095 
00097    static DtRtiMsg* create(const DtNetMsgHeader* initial,
00098       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00099 
00101    static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00102 
00104    static void addCallback(DtConnectionMgr* conn,
00105       DtResignCb cb, void* usr, bool isMomCallback=false);
00106    static void removeCallback(DtConnectionMgr* conn,
00107       DtResignCb cb, void* usr, bool isMomCallback=false);
00108 
00109 protected:
00110 
00112    virtual DtNetResignMsg* netResignMsg();
00113    virtual const DtNetResignMsg* netResignMsg() const;
00114 
00116    virtual DtRtiMsgKind internalDtRtiMsgKind();
00117 
00119    virtual int minSize() const;
00120 
00122    virtual int timeStampFieldSize() const;
00123 
00125    virtual char* timeStampPtr();
00126 
00128    virtual DtResignMsg* self() const;
00129 
00130 protected:
00132 #ifdef DtIFSPEC1516
00133    rti1516::LogicalTime* myTimeStamp;
00134 #elif defined(DtIFSPEC1516E)
00135    rti1516e::LogicalTime* myTimeStamp;
00136 #else
00137    RTI::FedTime* myTimeStamp;
00138 #endif
00139 };
00140 
00141 
00142 inline DtResignMsg* DtResignMsg::self() const
00143 {
00144    return const_cast<DtResignMsg*>( this );
00145 }
00146 
00147 
00148 #endif
00149 

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)