00001
00002
00003
00004
00005
00006
00007
00008 #ifndef ETHERNETSUBNETWORK_H_
00009 #define ETHERNETSUBNETWORK_H_
00010
00011 #include <string>
00012 #include "libraries/wiredbas/common/SubNetwork.h"
00013 #include "rules/wiredbas/link/WiringRule.h"
00014 #include "rules/wiredbas/node/EthernetNetworkRule.h"
00015 #include "models/wiredbas/common/WireCost.h"
00016 #include "models/wiredbas/common/LinkDelayModel.h"
00017 #include "models/wiredbas/node/EthernetNetworkCost.h"
00018 #include "models/wiredbas/node/EthernetNetworkDelay.h"
00019 #include "libraries/wiredbas/common/InstantiableLink.h"
00020 #include "libraries/wiredbas/common/InstantiableNode.h"
00021
00022 namespace cosi {
00023
00024 namespace library {
00025
00026 namespace wiredbas {
00027
00028 class EthernetSubNetwork : public SubNetwork {
00029
00030 cosi::rules::wiredbas::WiringRule* mWiringRule;
00031 cosi::rules::wiredbas::EthernetNetworkRule* mEthernetRule;
00032 cosi::models::wiredbas::WireCost* mWireCost;
00033 cosi::models::wiredbas::EthernetNetworkCost* mNetCost;
00034 cosi::models::wiredbas::LinkDelayModel* mLinkDelay;
00035 cosi::models::wiredbas::EthernetNetworkDelay* mNetDelay;
00036
00037 public:
00038 EthernetSubNetwork(cosi::rules::wiredbas::WiringRule* Wr,
00039 cosi::rules::wiredbas::EthernetNetworkRule* Er,
00040 cosi::models::wiredbas::WireCost* Wc,
00041 cosi::models::wiredbas::EthernetNetworkCost* Nc,
00042 cosi::models::wiredbas::LinkDelayModel* Ld,
00043 cosi::models::wiredbas::EthernetNetworkDelay* Nd,
00044 std::map<std::string, cosi::library::wiredbas::InstantiableNode*> N,
00045 std::map<std::string, cosi::library::wiredbas::InstantiableLink*> L);
00046 virtual ~EthernetSubNetwork();
00047 void AddNode(string Name, Vertex V, Position pP, ThreadSet pThreads,
00048 TransferTable pT) ;
00049 void AddLink(string Name, Vertex U, Vertex V, WiringPath pPath) ;
00050 double LatencyValue(cosi::commstruct::wiredbas::Implementation* pNet,
00051 Vertex Src, std::string Dest, Vertex SrcId, Vertex DestId);
00052 bool Satisfies(cosi::commstruct::wiredbas::Specification* pSpec ,cosi::commstruct::wiredbas::Implementation* pNet);
00053 double GetCost(cosi::commstruct::wiredbas::Implementation* pNet);
00054 };
00055
00056 }
00057
00058 }
00059
00060 }
00061
00062 #endif