![]() |
VR-Forces 4.0.4 Class Documentation
|
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