X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FJoins.cc;h=b8ce2d6763db2e95440f7d2915d3822b78efda6f;hb=c45c112ae88196ea8da9c5a9efb0e167196744d2;hp=71428c600109e47e9a3ce352b2227179a238fe86;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/PPI/Joins.cc b/PPI/Joins.cc index 71428c6..b8ce2d6 100644 --- a/PPI/Joins.cc +++ b/PPI/Joins.cc @@ -80,10 +80,19 @@ prefix_ void senf::ppi::module::PassiveJoin::onUnthrottle() //////////////////////////////////////// // private members -prefix_ senf::ppi::connector::ActiveInput<> & senf::ppi::module::PriorityJoin::newInput() +prefix_ senf::ppi::connector::ActiveInput<> & +senf::ppi::module::PriorityJoin::newInput(int priority) { - inputs_.push_back(new connector::ActiveInput<>()); - connector::ActiveInput<> & 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);