#ifndef BUS_H_
#define BUS_H_

#include "libraries/wiredbas/common/InstantiableBus.h"
#include "networks/wiredbas/WiredBasImplementation.h"

namespace cosi
{

namespace library
{

namespace wiredbas
{

class Bus : public InstantiableBus
{
public:
	Bus();
	virtual ~Bus();
	virtual double BusAccessLatencyValue(cosi::commstruct::wiredbas::Implementation* pBus) =0 ;
	virtual double BusAccessLatencyValue(int pNodeId,cosi::commstruct::wiredbas::Implementation* pBus) =0 ;
	virtual bool Satisfies(cosi::commstruct::wiredbas::Implementation* pBus) =0 ;
	virtual double GetCost(cosi::commstruct::wiredbas::Implementation* pBus) =0;
	virtual double GetBusBandwidthValue(cosi::commstruct::wiredbas::Implementation* pBus) =0;
};

}

}

}

#endif /*BUS_H_*/
