*********/
extern NetworkCm02ModelPtr surf_network_model;
-
+void net_define_callbacks(void);
/*********
* Model *
*********/
class NetworkCm02Model : public Model {
+private:
+ void initialize();
public:
- NetworkCm02Model(string name);
- NetworkCm02Model();
+ NetworkCm02Model(int i) : Model("network") {
+ f_networkSolve = lmm_solve;
+ m_haveGap = false;
+ };//FIXME: add network clean interface
+ NetworkCm02Model(string name) : Model(name) {
+ this->initialize();
+ }
+ NetworkCm02Model() : Model("network") {
+ this->initialize();
+ }
//FIXME:NetworkCm02LinkPtr createResource(string name);
NetworkCm02LinkLmmPtr createResource(const char *name,
double bw_initial,
xbt_dict_t properties);
void updateActionsStateLazy(double now, double delta);
virtual void gapAppend(double size, const NetworkCm02LinkLmmPtr link, NetworkCm02ActionLmmPtr action) {};
- NetworkCm02ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
+ virtual ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
double size, double rate);
xbt_dynar_t getRoute(RoutingEdgePtr src, RoutingEdgePtr dst); //FIXME: kill field? That is done by the routing nowadays
//FIXME: virtual void addTraces() =0;
- void (*f_networkSolve)(lmm_system_t) = lmm_solve;
- double latencyFactor(double size);
- double bandwidthFactor(double size);
- double bandwidthConstraint(double rate, double bound, double size);
- bool m_haveGap = false;
+ void (*f_networkSolve)(lmm_system_t);
+ virtual double latencyFactor(double size);
+ virtual double bandwidthFactor(double size);
+ virtual double bandwidthConstraint(double rate, double bound, double size);
+ bool m_haveGap;
};
/************
NetworkCm02Link(){};
NetworkCm02Link(NetworkCm02ModelPtr model, const char* name, xbt_dict_t properties) : Resource(model, name, properties) {};
virtual double getBandwidth()=0;
- double getLatency();
+ virtual double getLatency();
virtual bool isShared()=0;
/* Using this object with the public part of
model does not make sense */
class NetworkCm02LinkLmm : public ResourceLmm, public NetworkCm02Link {
public:
+ NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char* name, xbt_dict_t properties)
+ : ResourceLmm(), NetworkCm02Link(model, name, properties) {};
NetworkCm02LinkLmm(NetworkCm02ModelPtr model, const char *name, xbt_dict_t props,
lmm_system_t system,
double constraint_value,