VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/commModel.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2007 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: commModel.h,v $ $Revision: 1.6 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef commModel_h
00015 #define commModel_h
00016 
00017 #include "vrfobjcore/vrfobjcoreDefines.h"
00018 #include "tdbutil/stringKeyFactory.h"
00019 #include <map>
00020 #include <vlpi/entityIdentifier.h>
00021 
00022 class DtSimManager;
00023 class DtCommModel;
00024 class DtCommModelDescriptor;
00025 class DtVrfRadio;
00026 class DtVrfObjectMessage;
00027 class DtVrfObject;
00028 
00030 struct DtCommModelCreationParams
00031 {
00032    DtSimManager* simManager;
00033    const DtCommModelDescriptor* commModelDescriptor;
00034 };
00035 
00037 typedef DtStringKeyFactoryWithParam<DtCommModel, DtCommModelCreationParams&> DtCommModelFactory;
00038 
00041 typedef DtCommModelFactory::DtCreatorFcn DtCommModelCreatorFcn;
00042 
00057 class DT_DLL_vrfobjcore DtCommModel
00058 {
00059 private:
00061 
00062    DtCommModel();
00063    DtCommModel(const DtCommModel& orig);
00064    DtCommModel& operator=(const DtCommModel& orig);
00066 
00067 protected:
00069    DtCommModel(DtCommModelCreationParams& params);
00071    virtual bool init();
00072 
00073 public:
00076    static DtCommModel* create(DtCommModelCreationParams& params);
00077 
00078    virtual ~DtCommModel();
00079 
00083    virtual DtString type() const;
00084 
00088    virtual void registerRadio(DtVrfRadio* radio);
00090    virtual void unregisterRadio(DtVrfRadio* radio);
00091 
00097    virtual void sendMessage(DtVrfObjectMessage* message, DtVrfRadio* sendingRadio);
00098 
00101    virtual void tick();
00102 
00104    static void setFactory(DtCommModelFactory* factory);
00106    static DtCommModel* createCommModel(const DtString& typeString, 
00107       DtSimManager* simManager, const DtCommModelDescriptor* descriptor);
00108    
00111    virtual bool publishTransmitters() const;
00112 
00113 protected:
00115    virtual DtVrfRadio* findRadioByObjectName(const DtString& objectName, int radioId) const;
00116 
00118    virtual DtVrfRadio* findRadio(const DtEntityIdentifier& entityId, int radioId) const;
00119 
00125    virtual void deliverMessageToRecipients(const DtVrfObjectMessage* message);
00126 
00129    virtual bool addressMatchesObject(const DtString& addressText, bool addressIsEchelonId,
00130       const DtVrfObject* object);
00131 
00132 protected:
00133    static DtCommModelFactory* theFactory;
00134 
00135    DtSimManager* mySimManager;
00136    const DtCommModelDescriptor* myDescriptor;
00137 
00138    typedef std::multimap<DtEntityIdentifier, DtVrfRadio*> DtRadioMap;
00139    DtRadioMap myRadios;
00140 };
00141 
00142 #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)