VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/externalCommModel.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2007 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: externalCommModel.h,v $ $Revision: 1.5 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef externalCommModel_h
00015 #define externalCommModel_h
00016 
00017 #include <vl/globalObjDes.h>
00018 #include <map>
00019 #include <deque>
00020 #include "vrfobjcore/commModel.h"
00021 #include "vrfMsgTransport/externalCommsMessageTransporter.h"
00022 #include "vrfobjcore/vrfobjcoreDefines.h"
00023 
00024 class DtExternalCommModelDescriptor;
00025 
00026 class DT_DLL_vrfobjcore DtExternalCommModel : public DtCommModel
00027 {
00028 private:
00030 
00031    DtExternalCommModel();
00032    DtExternalCommModel(const DtExternalCommModel& orig);
00033    DtExternalCommModel& operator=(const DtExternalCommModel& orig);
00035 
00036 protected:
00038    DtExternalCommModel(DtCommModelCreationParams& params);
00040    virtual bool init();
00041 
00042 public:
00045    static DtCommModel* create(DtCommModelCreationParams& params);
00046 
00047    virtual ~DtExternalCommModel();
00048 
00050    virtual DtString type() const;
00051 
00054    virtual void registerRadio(DtVrfRadio* radio);
00055 
00060    virtual void sendMessage(DtVrfObjectMessage* message, DtVrfRadio* sendingRadio);
00061 
00064    virtual void tick();
00065 
00066 protected:
00067    virtual DtU32 nextMessageId(const DtEntityIdentifier& entityId);
00068 
00070    virtual void passMessageToReceiver(DtVrfObjectMessageConstPtr, const DtEntityIdentifier& receiver);
00071 
00072    static void messageClearToReceiveCallback(const DtExternalCommsProcessMessageData& data, void* usr);
00073    virtual void processMessageClearToReceive(const DtExternalCommsProcessMessageData& data);
00074 
00075    static void messageTimeoutCallback(const DtExternalCommsTimeoutData& data, void* usr);
00076    virtual void processMessageTimeout(const DtExternalCommsTimeoutData& data);
00077 
00078    static void newMessageCallback(const DtExternalCommsMessageTransporter::DtExternalCommsMessageCallbackParams& params, void* usr);
00079    virtual void processNewMessage(const DtExternalCommsMessageTransporter::DtExternalCommsMessageCallbackParams& params);
00080 
00081    static void readyToSendCallback(const DtExternalCommsReadyToSendData& data, void* usr);
00082    virtual void processReadyToSend(const DtExternalCommsReadyToSendData& data);
00083 
00084 protected:
00085    
00086 
00087    struct DtClearToReceiveData
00088    {
00089       DtVrfObjectMessageConstPtr myRadioMessage;
00090       DtEntityIdentifier myReceiver;
00091    };
00092 
00093    DtU32 myLastMessageId;
00094    
00095    typedef std::map<DtU32, DtVrfObjectMessageConstPtr> DtRadioMessageMap;
00098    DtRadioMessageMap mySentMessages;
00099    DtExternalCommsMessageTransporter* myTransporter;
00100 
00103    typedef std::deque<DtClearToReceiveData> DtClearToReceiveDeque;
00104    DtClearToReceiveDeque myClearToReceiveDeque;
00105 
00106    const DtExternalCommModelDescriptor* myExternalCommModelDescriptor;
00107 
00110    typedef std::map<DtU32, DtExternalCommsProcessMessageData> DtExternalCommsMessageDataMap;
00111    DtExternalCommsMessageDataMap myWaitingForMessageMap;
00112 
00115    typedef std::map<DtU32, DtExternalCommsTimeoutData> DtExternalCommsTimeoutMap;
00116    DtExternalCommsTimeoutMap myTimedOutMessageMap;
00117 };
00118 
00119 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)