#ifndef ETHERNETCONTROLLER_H_
#define ETHERNETCONTROLLER_H_

#include "EthernetNode.h"

namespace cosi {

namespace library {

namespace wiredbas {

class EthernetController  : public EthernetNode  {
public:
	EthernetController();
	virtual ~EthernetController();
	cosi::commstruct::wiredbas::PlatformInstance* GetPlatformInstance(int V,
			Position pP);
	cosi::commstruct::wiredbas::Implementation* GetImplementationInstance(
			int V, Position pP, ThreadSet pThreads, TransferTable pT);

	RealDelay GetDelay(Vertex NodeId,
			cosi::commstruct::wiredbas::Implementation* pI, Vertex Src,
			Vertex Dest);
	double GetDelayValue(Vertex NodeId,
			cosi::commstruct::wiredbas::Implementation* pI, Vertex Src,
			Vertex Dest);

	 RealDelay GetDelay(Vertex NodeId,
			cosi::commstruct::wiredbas::Implementation* pI, Vertex Src,
			std::string Dest) {return RealDelay(0);};
	 double GetDelayValue(Vertex NodeId,
			cosi::commstruct::wiredbas::Implementation* pI, Vertex Src,
			std::string Dest) {return 0;};

	double GetCost();

	std::string ComponentName;
	std::string ComponentType;
};

}

}

}

#endif /*ETHERNETCONTROLLER_H_*/
