MAK RTIspy API Documentation for HLA Evolved
syncPointMsg.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: syncPointMsg.h,v $ $Revision: 1.25 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtSyncPointMsg_H_
00013 #define DtSyncPointMsg_H_
00014 
00015 #include "rtiMsg.h"
00016 #include <vlutil/vlUtil.h>
00017 #include "netSyncMsg.h"
00018 
00019 class DtConnectionMgr;
00020 class DtSyncPointMsg;
00021 class DtFederateHandleSet;
00022 
00023 typedef void (*DtSyncPointCb)(const DtSyncPointMsg& msg, void* usr);
00024 
00025 enum DtSyncMsgType
00026 {
00027    DtRegister,
00028    DtAchieved,
00029    DtAchievedUnsuccessfully,
00030    DtSynchronized,
00031    DtAnnouncePt,
00032    DtSyncPointRegSucceeded,
00033    DtSyncPointRegFailed
00034 };
00035 
00036 enum DtSyncPointStatus
00037 {
00038    DtSyncStatusSucceeded,
00039    DtSyncStatusFailLabelNotUnique,
00040    DtSyncStatusFailMemberNotJoined,
00041    DtSyncStatusFailResignDuringSync,
00042    DtSyncStatusFailRtiInternal,
00043    DtSyncStatusFailTimeNotHonored
00044 };
00045 
00046 class DT_DLL_LRC DtSyncPointMsg : public DtRtiMsg
00047 {
00048 public:
00049 
00051    DtSyncPointMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00052 
00053    DtSyncPointMsg(
00054       DtSyncMsgType kind,
00055       DtFederateHandle id,
00056       DtSyncPointStatus statusValue,
00057       char const * name,
00058 #ifdef DtIFSPEC1516
00059       rti1516::VariableLengthData const* tag,
00060 #elif defined(DtIFSPEC1516E)
00061       rti1516e::VariableLengthData const* tag,
00062 #else
00063       char const * tag,
00064 #endif
00065       const DtFederateHandleSet* set = NULL,
00066       const DtFederateHandleSet* unsuccessfulSet = NULL,
00067       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00068 
00070    DtSyncPointMsg(const DtNetSyncMsg* netRepMsg,
00071       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00072 
00074    virtual ~DtSyncPointMsg();
00075 
00077    virtual DtRtiMsg* clone(bool copy = true) const; 
00078 
00080    virtual void set(
00081       DtSyncMsgType kind,
00082       DtFederateHandle id,
00083       DtSyncPointStatus statusValue,
00084       char const * name,
00085 #ifdef DtIFSPEC1516
00086       rti1516::VariableLengthData const* tag,
00087 #elif defined(DtIFSPEC1516E)
00088       rti1516e::VariableLengthData const* tag,
00089 #else
00090       char const * tag,
00091 #endif
00092       DtFederateHandleSet const* set = NULL,
00093       DtFederateHandleSet const* unsuccessfulSet = NULL);
00094 
00096    virtual void setSyncMsgKind(DtSyncMsgType kind);
00097    virtual DtSyncMsgType syncMsgKind() const;
00098 
00100    virtual void setFederateId(DtFederateHandle id);
00101    virtual DtFederateHandle federateId() const;
00102 
00104    virtual void setSyncPointStatus(DtSyncPointStatus statusValue);
00105    virtual DtSyncPointStatus syncPointStatus() const;
00106 
00108    virtual void setSyncPointName(char const * name);
00109    virtual char const * syncPointName() const;
00110 
00112 #ifdef DtIFSPEC1516
00113    virtual void setTag(rti1516::VariableLengthData const* tag);
00114    virtual rti1516::VariableLengthData const* tag() const;
00115 #elif defined(DtIFSPEC1516E)
00116    virtual void setTag(rti1516e::VariableLengthData const* tag);
00117    virtual rti1516e::VariableLengthData const* tag() const;
00118 #else
00119    virtual void setTag(char const * tag);
00120    virtual char const * tag() const;
00121 #endif
00122 
00124    virtual void setFederates(const DtFederateHandleSet* set);
00125 
00129    virtual DtFederateHandleSet const * federates() const;
00130 
00134    virtual void getFederates(DtFederateHandleSet* set) const;
00135 
00137    virtual int numFederates() const;
00138 
00142    virtual void getUnsuccessfulFederates(DtFederateHandleSet* set) const;
00143 
00146    virtual void setUnsuccessfulFederates(const DtFederateHandleSet* set);
00147 
00151    virtual DtFederateHandleSet const * unsuccessfulFederates() const;
00152 
00154    virtual int numUnsuccessfulFederates() const;
00155 
00157    virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const;
00158 
00159 public:
00160 
00162    static DtRtiMsg* create(const DtNetMsgHeader* initial,
00163       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00164 
00166    static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00167 
00169    static void addCallback(DtConnectionMgr *conn,
00170       DtSyncPointCb cb, void *usr);
00171    static void removeCallback(DtConnectionMgr *conn,
00172       DtSyncPointCb cb, void *usr);
00173 
00174 protected:
00175 
00177    virtual DtNetSyncMsg* netSyncMsg();
00178    virtual const DtNetSyncMsg* netSyncMsg() const;
00179 
00181    virtual DtNetU32* handleArray();
00182    virtual DtNetU32* unsuccessfulHandleArray();
00183    virtual char* tagPtr();
00184    virtual char* namePtr();
00185 
00187    virtual int handleArraySize() const;
00188    virtual int unsuccessfulHandleArraySize() const;
00189    virtual int tagFieldSize() const;
00190    virtual int nameFieldSize() const;
00191 
00193    virtual DtRtiMsgKind internalDtRtiMsgKind();
00194 
00196    virtual int minSize() const;
00197 
00199    DtSyncPointMsg* self() const;
00200 
00201 protected:
00202 
00203 #ifdef DtIFSPEC1516
00204    rti1516::VariableLengthData* myTag;
00205 #elif defined(DtIFSPEC1516E)
00206     rti1516e::VariableLengthData* myTag;
00207 #else
00208    char* myTag;
00209 #endif
00210    MAKRti::DtString myName;
00211    DtFederateHandleSet* mySet;
00212    DtFederateHandleSet* myUnsuccessfulSet;
00213 };
00214 
00215 inline DtSyncPointMsg* DtSyncPointMsg::self() const
00216 {
00217    return const_cast<DtSyncPointMsg*>( this );
00218 }
00219 
00220 #endif
00221 
00222 
00223 
00224 
00225 
00226 
00227 
00228 
00229 
00230 
00231 

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)