XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network, surf, "Logging specific to the SURF network module");
-/*********
- * C API *
- *********/
-
-extern "C" {
-
- const char* sg_link_name(Link *link) {
- return link->getName();
- }
- Link * sg_link_by_name(const char* name) {
- return Link::byName(name);
- }
-
- int sg_link_is_shared(Link *link){
- return link->sharingPolicy();
- }
- double sg_link_bandwidth(Link *link){
- return link->bandwidth();
- }
- double sg_link_latency(Link *link){
- return link->latency();
- }
- void* sg_link_data(Link *link) {
- return link->getData();
- }
- void sg_link_data_set(Link *link,void *data) {
- link->setData(data);
- }
- int sg_link_count() {
- return Link::linksCount();
- }
- Link** sg_link_list() {
- return Link::linksList();
- }
- void sg_link_exit() {
- Link::linksExit();
- }
-
-}
-
-/*****************
- * List of links *
- *****************/
-
namespace simgrid {
namespace surf {
+ /* List of links */
std::unordered_map<std::string, LinkImpl*>* LinkImpl::links = new std::unordered_map<std::string, LinkImpl*>();
+
LinkImpl* LinkImpl::byName(const char* name)
{
if (links->find(name) == links->end())
return nullptr;
return links->at(name);
- }
- /** @brief Returns the amount of links in the platform */
- int LinkImpl::linksCount()
- {
- return links->size();
+ }
+ /** @brief Returns the amount of links in the platform */
+ int LinkImpl::linksCount()
+ {
+ return links->size();
}
/** @brief Returns a list of all existing links */
LinkImpl** LinkImpl::linksList()
************/
LinkImpl::LinkImpl(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint)
- : Resource(model, name, constraint)
+ : Resource(model, name, constraint), piface_(Link(this))
{
+
if (strcmp(name,"__loopback__"))
xbt_assert(!LinkImpl::byName(name), "Link '%s' declared several times in the platform.", name);
bool LinkImpl::isUsed()
{
- return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
+ return lmm_constraint_used(model()->getMaxminSystem(), constraint());
}
double LinkImpl::latency()
int LinkImpl::sharingPolicy()
{
- return lmm_constraint_sharing_policy(getConstraint());
+ return lmm_constraint_sharing_policy(constraint());
}
void LinkImpl::turnOn()
}
void LinkImpl::setStateTrace(tmgr_trace_t trace)
{
- xbt_assert(stateEvent_ == nullptr, "Cannot set a second state trace to Link %s", getName());
+ xbt_assert(stateEvent_ == nullptr, "Cannot set a second state trace to Link %s", cname());
stateEvent_ = future_evt_set->add_trace(trace, 0.0, this);
}
void LinkImpl::setBandwidthTrace(tmgr_trace_t trace)
{
- xbt_assert(bandwidth_.event == nullptr, "Cannot set a second bandwidth trace to Link %s", getName());
+ xbt_assert(bandwidth_.event == nullptr, "Cannot set a second bandwidth trace to Link %s", cname());
bandwidth_.event = future_evt_set->add_trace(trace, 0.0, this);
}
void LinkImpl::setLatencyTrace(tmgr_trace_t trace)
{
- xbt_assert(latency_.event == nullptr, "Cannot set a second latency trace to Link %s", getName());
+ xbt_assert(latency_.event == nullptr, "Cannot set a second latency trace to Link %s", cname());
latency_.event = future_evt_set->add_trace(trace, 0.0, this);
}