20 #include <basic/Tracer.hh>
21 #include <basic/options/option.hh>
22 #include <utility/exit.hh>
23 #include <numeric/random/random.hh>
26 #include <basic/options/keys/out.OptionKeys.gen.hh>
32 #include <utility/vector1.hh>
35 static basic::Tracer
TR(
"protocols.jd2.ShuffleFileSystemJobDistributor");
36 static numeric::random::RandomGenerator
RG(10419);
64 if( jobs.size() == 0 )
return 0;
70 for(
int i=0; i < basic::options::option[ basic::options::OptionKeys::out::nstruct ].value() ; i++ ){
83 if((
int)
next_random_job_ > (
int)basic::options::option[ basic::options::OptionKeys::out::nstruct ].value() )
return 0;
88 if( choice <= 0 ) choice = 1;
89 if( choice > jobs.size() ) choice = jobs.size();
90 if( !outputter->job_has_completed( jobs[ choice ] ) ) {
91 while ( ( choice > 1 ) &&
92 ( !outputter->job_has_completed( jobs[ choice-1 ]) ) &&
93 ( jobs[ choice - 1 ]->input_tag() == jobs[ choice ]->input_tag() )
100 if( choice <= 0 ) choice = 1;
101 if( choice > jobs.size() ) choice = jobs.size();
102 if(outputter->job_has_completed( jobs[ choice ] ) ){
103 while ( ( choice <= (jobs.size()-1) ) &&
104 ( outputter->job_has_completed( jobs[ choice ]) )
111 if( choice <= 0 ) choice = 1;
112 if( choice > jobs.size() ) choice = jobs.size();
113 if(outputter->job_has_completed( jobs[ choice ] ) ){
114 while ( ( choice > 1 ) &&
115 ( outputter->job_has_completed( jobs[ choice ]) )
122 if( choice <= 0 ) choice = 1;
123 if( choice > jobs.size() ) choice = jobs.size();
124 if( outputter->job_has_completed( jobs[ choice ] ) ){
125 TR <<
"No more jobs found." << std::endl;
131 if( choice <= 0 ) choice = 1;
132 if( choice > jobs.size() ) choice = jobs.size();
133 if( !outputter->job_has_completed( jobs[ choice ] ) ) {
134 while ( ( choice > 1 ) &&
135 ( !outputter->job_has_completed( jobs[ choice-1 ]) ) &&
136 ( jobs[ choice - 1 ]->input_tag() == jobs[ choice ]->input_tag() )