X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FJoins.cc;h=b8ce2d6763db2e95440f7d2915d3822b78efda6f;hb=6927c87144ca23845065e3c23e37c75f5f059cf3;hp=fb8defdb2e7b6b94e4e2d9c0b2101854cd5bc96a;hpb=416cdd1c85cdf2669785e93a71426a3206166758;p=senf.git diff --git a/PPI/Joins.cc b/PPI/Joins.cc index fb8defd..b8ce2d6 100644 --- a/PPI/Joins.cc +++ b/PPI/Joins.cc @@ -1,8 +1,8 @@ // $Id$ // -// Copyright (C) 2007 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Copyright (C) 2007 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -42,10 +42,10 @@ //////////////////////////////////////// // private members -prefix_ senf::ppi::connector::GenericPassiveInput & senf::ppi::module::PassiveJoin::newInput() +prefix_ senf::ppi::connector::PassiveInput<> & senf::ppi::module::PassiveJoin::newInput() { - inputs_.push_back(new connector::GenericPassiveInput()); - connector::GenericPassiveInput & input (inputs_.back()); + inputs_.push_back(new connector::PassiveInput<>()); + connector::PassiveInput<> & input (inputs_.back()); noroute(input); input.onRequest(boost::bind(&PassiveJoin::request,this,boost::ref(input))); @@ -80,10 +80,19 @@ prefix_ void senf::ppi::module::PassiveJoin::onUnthrottle() //////////////////////////////////////// // private members -prefix_ senf::ppi::connector::GenericActiveInput & senf::ppi::module::PriorityJoin::newInput() +prefix_ senf::ppi::connector::ActiveInput<> & +senf::ppi::module::PriorityJoin::newInput(int priority) { - inputs_.push_back(new connector::GenericActiveInput()); - connector::GenericActiveInput & input (inputs_.back()); + if (priority > int(inputs_.size())) + priority = inputs_.size(); + else if (priority < 0) { + priority = inputs_.size() + priority + 1; + if (priority < 0) + priority = 0; + } + + connector::ActiveInput<> & input ( + *inputs_.insert(inputs_.begin()+priority, new connector::ActiveInput<>())); noroute(input); input.onThrottle(&PriorityJoin::onThrottle);