X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FJoins.cc;h=b8ce2d6763db2e95440f7d2915d3822b78efda6f;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=3f15955540ad89e22f5e1f6d22fcf4e8ec56f3e5;hpb=69255c0f1669fc80b0e4a2bf524715f336b127ad;p=senf.git diff --git a/PPI/Joins.cc b/PPI/Joins.cc index 3f15955..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 @@ -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);