// ---------------------------------------------------------------------- void ExperimentControl:: flash_programs( std::string id, NodeIdVector nodes, IndicesVector indices, FlashProgramVector programs ) throw() { NodeIdVector response_nodes; StatusValueVector response_values; StatusMsgVector response_msgs; IndicesVector::iterator idx_it = indices.begin(); for ( NodeIdVector::iterator it = nodes.begin(); it != nodes.end(); ++it, ++idx_it ) { shawn::Node *node = simulation_controller_w().world_w().find_node_by_label_w( *it ); if ( node ) { TestbedServiceProcessor *proc = node->get_processor_of_type_w<TestbedServiceProcessor>(); if ( proc ) { proc->flash_program( programs.at( *idx_it ) ); response_values.push_back( 1 ); } else response_values.push_back( 0 ); } else response_values.push_back( -1 ); response_nodes.push_back( *it ); response_msgs.push_back( "" ); } controller().send_receive_status( id, response_nodes, response_values, response_msgs ); }
/// Returns true if Prefix is a prefix of longer. That means, Longer has a size /// that is greater than or equal to the size of prefix, and each of the /// elements in Prefix is the same as the corresponding elements in Longer. /// /// This means it also returns true when Prefix and Longer are equal! static bool IsPrefix(const IndicesVector &Prefix, const IndicesVector &Longer) { if (Prefix.size() > Longer.size()) return false; return std::equal(Prefix.begin(), Prefix.end(), Longer.begin()); }