• Main Page
  • Classes
  • Files
  • File List

EvSimNetwork.h

00001 #ifndef EvSimNetwork_H_
00002 #define EvSimNetwork_H_
00003 
00004 #include "EvSimObject.h"
00005 #include "RoutingDelayMap.h"
00006 #include "EventTargetGroupPool.h"
00007 #include "UpdateLinksMap.h"
00008 #include "EvSimObjectPool.h"
00009 #include "SimParameters.h"
00010 
00011 
00012 #include <string>
00013 using std::string;
00014 
00015 class EvSimEngine;
00016 
00034 
00035 
00038 class EvSimNetwork {
00039 
00040 public:
00041         EvSimNetwork(SimParameters sim_params = SimParameters());
00042 
00043         virtual ~EvSimNetwork();
00044 
00046 
00050         EvSimObject::ID create(const EvSimObjectFactory & obj_factory);
00051 
00053         EvSimObject::ID add(EvSimObject * obj);
00054 
00056         EvSimObject::IDVector create(const EvSimObjectFactory & obj_factory, unsigned n);
00057 
00065         void connect(EvSimObject::ID src, port_id_t src_port, EvSimObject::ID dest, port_id_t dest_port, Time delay = 0);
00066 
00068         void causalUpdateLink(EvSimObject::ID src, EvSimObject::ID dest, update_id_t update_id = 0);
00069 
00070         void mount(EvSimObject::ID obj_id, EvSimObject::ID mountpoint);
00071 
00072         EvSimObject::ID mount(const EvSimObjectFactory &obj_factory, EvSimObject::ID mountpoint);
00073 
00074         EvSimObject::ID record(EvSimObject::ID id, const string &var_name);
00075         EvSimObject::ID record(EvSimObject::ID id, const string &var_name, EvSimObject::ID clock_id);
00076 
00077         EvSimObject::ID record(EvSimObject::ID id, port_id_t port_id = 0);
00078 
00079         EvSimObject::IDVector record(EvSimObject::IDVector id_vec, const string &var_name);
00080         EvSimObject::IDVector record(EvSimObject::IDVector id_vec, const string &var_name, EvSimObject::ID clock_id);
00081 
00082         EvSimObject::IDVector record(EvSimObject::IDVector id_vec, port_id_t port_id = 0);
00083 
00084         void setParams(SimParameters sim_params);
00085 
00086         EvSimObject * getObject(EvSimObject::ID oid) const;
00087 
00088         Time getCurrentSimTime();
00089 
00090         void advance(Time sim_time);
00091 
00092         void simulate(Time sim_time);
00093 
00094         void init();
00095 
00096         void reset();
00097 
00098 
00099         void setVariables(EvSimObject::IDVector id_vec, const string &var_name, const std::vector<double> &values );
00100 
00101         std::vector<double> getVariables(EvSimObject::IDVector id_vec, const string &var_name ) const;
00102 
00103         void connect(EvSimObject::IDVector src, port_id_t src_port, EvSimObject::IDVector dest, port_id_t dest_port, Time delay = 0);
00104 
00105 protected:
00106         friend class EvSimEngine;
00107 
00108         void registerOutPorts(EvSimObject *obj);
00109 
00110         EvSimEngine *simengine;
00111 
00112         UpdateLinksMap upd_links_map;
00113 
00114         EvSimObjectPool obj_pool;
00115 
00116         RoutingDelayMap delay_map;
00117 
00118         EventTargetGroupPool etg_pool;
00119 
00120         EvSimObject::ID default_sim_clock_id;
00121 
00122         SimParameters sim_params;
00123 
00124         bool isInitialized;
00125         bool isReset;
00126 };
00127 
00128 
00129 #endif /*EvSimNetwork_H_*/

Generated on Wed Sep 18 2013 11:25:40 for NEVESIM by  doxygen 1.7.1