MAK RTIspy API Documentation for HLA 1516
msgQueue.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2001 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: msgQueue.h,v $ $Revision: 1.20 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtRtiMsgQueue_H_
00013 #define DtRtiMsgQueue_H_
00014 
00015 #include "rtiMsConfig.h"
00016 #include "internalTypes.h"
00017 #include <vlutil/vlHashlist.h>
00018 #include "sortedList.h"
00019 #include <memory>
00020 
00021 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
00022 #include <RTI/LogicalTime.h>
00023 #include <RTI/LogicalTimeInterval.h>
00024 #else
00025 #ifdef DtIFSPEC13DLC
00026 #include "RTI13.h"
00027 #define RTI rti13
00028 #else
00029 #include "RTI.hh"
00030 #endif
00031 #endif
00032 
00033 class DtRtiMsg;
00034 class DtLogicalTimeFactory;
00035 
00038 class DT_DLL_LRC DtMessageItem : public DtSortedListItem
00039 {
00040 public:
00041 
00042    friend class DtRtiMsgQueue;
00043 
00044 public:
00045 
00047    virtual ~DtMessageItem();
00048 
00050    virtual bool operator<= (const DtSortedListItem& item) const;
00051    virtual bool operator<  (const DtSortedListItem& item) const;
00052    virtual bool operator>= (const DtSortedListItem& item) const;
00053    virtual bool operator>  (const DtSortedListItem& item) const;
00054    virtual bool operator== (const DtSortedListItem& item) const;
00055 
00057    virtual void printData(DtLogicalTimeFactory* logicalTimeFactory);
00058 
00060    virtual DtRtiMsg* msg();
00061 
00062 protected:
00063 
00065    DtMessageItem(void* data, DtLogicalTimeFactory* fedTimeFactory);
00066 
00067 protected:
00068    DtRtiMsg* myMsg;
00069    DtLogicalTimeFactory* myLogicalTimeFactory;
00070 };
00071 
00072 inline DtRtiMsg* DtMessageItem::msg()
00073 {
00074    return myMsg;
00075 }
00076 
00078 
00079 class DT_DLL_LRC DtRtiMsgQueue : public DtSortedList
00080 {
00081 
00082 public:
00083    DtRtiMsgQueue(DtLogicalTimeFactory* fedTimeFactory);
00084 
00085    virtual ~DtRtiMsgQueue();
00086 
00088    virtual bool timeRegulating();
00089    virtual void setTimeRegulating(bool isTimeRegulating);
00090    virtual bool timeConstrained();
00091    virtual void setTimeConstrained(bool isTimeConstrained);
00092    virtual bool asynchronous();
00093    virtual void setAsynchronous(bool isAsynchronous);
00094    virtual bool timeAvailable();
00095    virtual void setTimeAvailable(bool isTimeAvailable);
00096    virtual bool timeAdvancing();
00097    virtual void setTimeAdvancing(bool isTimeAdvancing);
00098 
00099 #ifdef DtIFSPEC1516
00100 
00101    virtual const rti1516::LogicalTime& timestamp();
00102    virtual void setTimestamp(const rti1516::LogicalTime& federateTime);
00103 
00105    virtual const rti1516::LogicalTimeInterval& lookahead();
00106    virtual void setLookahead(const rti1516::LogicalTimeInterval& lookaheadValue);
00107 
00112    virtual const rti1516::LogicalTime& galt();
00113    virtual void setGalt(const rti1516::LogicalTime& federateTime);
00114 
00115 #elif defined(DtIFSPEC1516E)
00116 
00117    virtual const rti1516e::LogicalTime& timestamp();
00118    virtual void setTimestamp(const rti1516e::LogicalTime& federateTime);
00119 
00121    virtual const rti1516e::LogicalTimeInterval& lookahead();
00122    virtual void setLookahead(const rti1516e::LogicalTimeInterval& lookaheadValue);
00123 
00128    virtual const rti1516e::LogicalTime& galt();
00129    virtual void setGalt(const rti1516e::LogicalTime& federateTime);
00130 #else
00131 
00132    virtual const RTI::FedTime& timestamp();
00133    virtual void setTimestamp(const RTI::FedTime& federateTime);
00134 
00136    virtual const RTI::FedTime& lookahead();
00137    virtual void setLookahead(const RTI::FedTime& lookaheadValue);
00138 
00143    virtual const RTI::FedTime& galt();
00144    virtual void setGalt(const RTI::FedTime& federateTime);
00145 #endif
00146 
00147 
00152    virtual bool queueMsg(DtRtiMsg const& msg);
00153 
00155    virtual DtRtiMsg* removeMsg(const DtMessageRetractionHandle& retractHandle);
00156 
00159    virtual bool deleteMsg(const DtMessageRetractionHandle& retractHandle);
00160 
00162    virtual void deleteMsgs(DtFederateHandle federateHandle);
00163 
00165    virtual void deleteAll();
00166 
00167 #ifdef DtIFSPEC1516
00168 
00169    virtual DtRtiMsg* nextMsg(const rti1516::LogicalTime& timestamp);
00170 
00172    virtual DtRtiMsg* nextTsoMsg(const rti1516::LogicalTime& timestamp);
00173 #elif defined(DtIFSPEC1516E)
00174 
00175    virtual DtRtiMsg* nextMsg(const rti1516e::LogicalTime& timestamp);
00176 
00178    virtual DtRtiMsg* nextTsoMsg(const rti1516e::LogicalTime& timestamp);
00179 #else
00180 
00181    virtual DtRtiMsg* nextMsg(const RTI::FedTime& timestamp);
00182 
00184    virtual DtRtiMsg* nextTsoMsg(const RTI::FedTime& timestamp);
00185 #endif
00186 
00188    virtual DtRtiMsg* removeNextTsoMsg();
00189 
00191    virtual DtRtiMsg* peekNextTsoMsg();
00192 
00193    inline unsigned int roQueueLength() const;
00194 
00195 protected:
00196 
00199    virtual DtSortedListItem* newItem(void* data);
00200 
00201    DtRtiMsgQueue(const DtRtiMsgQueue& orig);
00202    DtRtiMsgQueue& operator=(DtRtiMsgQueue const& orig);
00203 
00205    virtual DtSortedListItem* add(void* data);
00206 
00207 protected:
00208 
00209    MAKRti::DtList myRoList;
00210    bool myTimeConstrainedEnabled;
00211    bool myTimeRegulatingEnabled;
00212    bool myAsynchronous;
00213    bool myTimeAvailable;
00214    bool myTimeAdvancing;
00215    DtLogicalTimeFactory* myLogicalTimeFactory;
00216 #ifdef DtIFSPEC1516
00217    std::auto_ptr <rti1516::LogicalTime> myTime;
00218    std::auto_ptr <rti1516::LogicalTimeInterval> myLookahead;
00219    std::auto_ptr <rti1516::LogicalTime> myGalt;
00220 #elif defined(DtIFSPEC1516E)
00221    std::auto_ptr <rti1516e::LogicalTime> myTime;
00222    std::auto_ptr <rti1516e::LogicalTimeInterval> myLookahead;
00223    std::auto_ptr <rti1516e::LogicalTime> myGalt;
00224 #else
00225    std::auto_ptr <RTI::FedTime> myTime;
00226    std::auto_ptr <RTI::FedTime> myLookahead;
00227    std::auto_ptr <RTI::FedTime> myGalt;
00228 #endif
00229 };
00230 
00231 inline bool DtRtiMsgQueue::timeRegulating()
00232 {
00233    return myTimeRegulatingEnabled;
00234 }
00235 
00236 inline void DtRtiMsgQueue::setTimeRegulating(bool isTimeRegulating)
00237 {
00238    myTimeRegulatingEnabled = isTimeRegulating;
00239 }
00240 
00241 inline bool DtRtiMsgQueue::timeConstrained()
00242 {
00243    return myTimeConstrainedEnabled;
00244 }
00245 
00246 inline void DtRtiMsgQueue::setTimeConstrained(bool isTimeConstrained)
00247 {
00248    myTimeConstrainedEnabled = isTimeConstrained;
00249 }
00250 
00251 inline bool DtRtiMsgQueue::asynchronous()
00252 {
00253    return myAsynchronous;
00254 }
00255 
00256 inline void DtRtiMsgQueue::setAsynchronous(bool isAsynchronous)
00257 {
00258    myAsynchronous = isAsynchronous;
00259 }
00260 
00261 inline bool DtRtiMsgQueue::timeAvailable()
00262 {
00263    return myTimeAvailable;
00264 }
00265 
00266 inline void DtRtiMsgQueue::setTimeAvailable(bool isTimeAvailable)
00267 {
00268    myTimeAvailable = isTimeAvailable;
00269 }
00270 
00271 inline bool DtRtiMsgQueue::timeAdvancing()
00272 {
00273    return myTimeAdvancing;
00274 }
00275 
00276 inline void DtRtiMsgQueue::setTimeAdvancing(bool isTimeAdvancing)
00277 {
00278    myTimeAdvancing = isTimeAdvancing;
00279 }
00280 
00281 #ifdef DtIFSPEC1516
00282 inline const rti1516::LogicalTime& DtRtiMsgQueue::timestamp()
00283 #elif defined(DtIFSPEC1516E)
00284 inline const rti1516e::LogicalTime& DtRtiMsgQueue::timestamp()
00285 #else
00286 inline const RTI::FedTime& DtRtiMsgQueue::timestamp()
00287 #endif
00288 {
00289    return *myTime;
00290 }
00291 
00292 #ifdef DtIFSPEC1516
00293 inline void DtRtiMsgQueue::setTimestamp(
00294    const rti1516::LogicalTime& federateTime)
00295 #elif defined(DtIFSPEC1516E)
00296 inline void DtRtiMsgQueue::setTimestamp(
00297     const rti1516e::LogicalTime& federateTime)
00298 #else
00299 inline void DtRtiMsgQueue::setTimestamp(const RTI::FedTime& federateTime)
00300 #endif
00301 {
00302    *myTime = federateTime;
00303 }
00304 
00305 #ifdef DtIFSPEC1516
00306 inline const rti1516::LogicalTimeInterval& DtRtiMsgQueue::lookahead()
00307 #elif defined(DtIFSPEC1516E)
00308 inline const rti1516e::LogicalTimeInterval& DtRtiMsgQueue::lookahead()
00309 #else
00310 inline const RTI::FedTime& DtRtiMsgQueue::lookahead()
00311 #endif
00312 {
00313    return *myLookahead;
00314 }
00315 
00316 #ifdef DtIFSPEC1516
00317 inline void DtRtiMsgQueue::setLookahead(
00318    const rti1516::LogicalTimeInterval& lookaheadValue)
00319 #elif defined(DtIFSPEC1516E)
00320 inline void DtRtiMsgQueue::setLookahead(
00321     const rti1516e::LogicalTimeInterval& lookaheadValue)
00322 #else
00323 inline void DtRtiMsgQueue::setLookahead(const RTI::FedTime& lookaheadValue)
00324 #endif
00325 {
00326    *myLookahead = lookaheadValue;
00327 }
00328 
00329 #ifdef DtIFSPEC1516
00330 inline const rti1516::LogicalTime& DtRtiMsgQueue::galt()
00331 #elif defined(DtIFSPEC1516E)
00332 inline const rti1516e::LogicalTime& DtRtiMsgQueue::galt()
00333 #else
00334 inline const RTI::FedTime& DtRtiMsgQueue::galt()
00335 #endif
00336 {
00337    return *myGalt;
00338 }
00339 
00340 #ifdef DtIFSPEC1516
00341 inline void DtRtiMsgQueue::setGalt(const rti1516::LogicalTime& federateTime)
00342 #elif defined(DtIFSPEC1516E)
00343 inline void DtRtiMsgQueue::setGalt(const rti1516e::LogicalTime& federateTime)
00344 #else
00345 inline void DtRtiMsgQueue::setGalt(const RTI::FedTime& federateTime)
00346 #endif
00347 {
00348    *myGalt = federateTime;
00349 }
00350 
00351 inline unsigned int DtRtiMsgQueue::roQueueLength() const
00352 {
00353    return myRoList.count();
00354 }
00355 
00356 
00357 #endif

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)