MAK RTIspy API Documentation for HLA 1516
reqObjMsg.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1998 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: reqObjMsg.h,v $ $Revision: 1.18 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtRequestMsg_H_
00013 #define DtRequestMsg_H_
00014 
00015 #include "rtiMsg.h"
00016 #include "netReqMsg.h"
00017 
00018 class DtConnectionMgr;
00019 class DtRequestMsg;
00020 class DtAttributeHandleSet;
00021 
00022 typedef void (*DtRequestCb)(const DtRequestMsg& inter, void* usr);
00023 
00024 enum DtRequestType
00025 {
00026    DtRequestById,
00027    DtRequestByClass,
00028    DtAutoRequestById
00029 };
00030 
00031 class DT_DLL_LRC DtRequestMsg : public DtRtiMsg
00032 {
00033 public:
00034 
00036    DtRequestMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00037 
00038    DtRequestMsg(
00039       DtRequestType type,
00040       DtHandle idOrClass,
00041       const DtAttributeHandleSet& theSet,
00042 #ifdef DtIFSPEC1516
00043       rti1516::VariableLengthData const & tag,
00044 #elif defined(DtIFSPEC1516E)
00045       rti1516e::VariableLengthData const & tag,
00046 #else
00047       char const * tag,
00048 #endif
00049       DtHandle regionSetHandle = theDefaultRegionSetHandle,
00050       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00051 
00053    DtRequestMsg(const DtNetRequestMsg* netRepMsg,
00054       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00055 
00057    virtual ~DtRequestMsg();
00058 
00060    virtual DtRtiMsg* clone(bool copy = true) const; 
00061 
00063    virtual void set(
00064       DtRequestType type,
00065       DtHandle idOrClass,
00066       const DtAttributeHandleSet& theSet,
00067 #ifdef DtIFSPEC1516
00068       rti1516::VariableLengthData const & tag,
00069 #elif defined(DtIFSPEC1516E)
00070       rti1516e::VariableLengthData const & tag,
00071 #else
00072       char const * tag,
00073 #endif
00074       DtHandle regionSetHandle = theDefaultRegionSetHandle);
00075 
00077    virtual DtRequestType requestType() const;
00078    virtual void setRequestType(DtRequestType type);
00079 
00081 
00083    virtual void setObjectClassHandle(DtObjectClassHandle hand);
00084 
00086    virtual DtObjectClassHandle objectClassHandle() const;
00087 
00089 
00091    virtual void setId(DtObjectInstanceHandle id);
00092 
00094    virtual DtObjectInstanceHandle id() const;
00095 
00097    virtual void setRegionSet(DtHandle handleValue);
00098    virtual DtHandle regionSet() const;
00099 
00101    virtual void setAttrHandles(const DtAttributeHandleSet& attrs);
00102    virtual const DtAttributeHandleSet& attrHandles() const;
00103 
00105 #ifdef DtIFSPEC1516
00106    virtual void setTag(rti1516::VariableLengthData const&  tag);
00107    virtual rti1516::VariableLengthData const&  tag() const;
00108 #elif defined(DtIFSPEC1516E)
00109    virtual void setTag(rti1516e::VariableLengthData const&  tag);
00110    virtual rti1516e::VariableLengthData const&  tag() const;
00111 #else
00112    virtual void setTag(char const * tag);
00113    virtual char const * tag() const;
00114 #endif
00115 
00117    virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const;
00118 
00119 public:
00120 
00122    static DtRtiMsg* create(const DtNetMsgHeader* initial,
00123       DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00124 
00126    static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER);
00127 
00129    static void addCallback(DtConnectionMgr *conn,
00130       DtRequestCb cb, void *usr, bool isMomCallback=false);
00131    static void removeCallback(DtConnectionMgr *conn,
00132       DtRequestCb cb, void *usr, bool isMomCallback=false);
00133 
00134 protected:
00135 
00137    virtual DtNetRequestMsg* netRequestMsg();
00138    virtual const DtNetRequestMsg* netRequestMsg() const;
00139 
00141    virtual DtRtiMsgKind internalDtRtiMsgKind();
00142 
00144 #ifdef DtIFSPEC1516
00145    virtual int minSize(rti1516::VariableLengthData const * tag=NULL) const;
00146 #elif defined(DtIFSPEC1516E)
00147    virtual int minSize(rti1516e::VariableLengthData const * tag=NULL) const;
00148 #else
00149    virtual int minSize(char const * tag=NULL) const;
00150 #endif
00151 
00153    virtual void setTagSize(int size);
00154    virtual int tagSize() const;
00155 
00157    virtual int tagFieldSize() const;
00158 
00160    virtual char* tagPtr() const;
00161 
00163    virtual DtRequestMsg* self() const;
00164 
00165 protected:
00166 
00167    int myDirty;
00168    DtAttributeHandleSet* myAttrs;
00169 #ifdef DtIFSPEC1516
00170    rti1516::VariableLengthData* myTag;
00171 #elif defined(DtIFSPEC1516E)
00172    rti1516e::VariableLengthData* myTag;
00173 #else
00174    char* myTag;
00175 #endif
00176 };
00177 
00178 
00179 inline DtRequestMsg* DtRequestMsg::self() const
00180 {
00181    return const_cast<DtRequestMsg*>( this );
00182 }
00183 
00184 #endif
00185 

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)