------------------------------------------------------------------------------
| 244 | |
| 245 | //------------------------------------------------------------------------------ |
| 246 | vtkMultiProcessController* vtkMultiProcessController::CreateSubController(vtkProcessGroup* group) |
| 247 | { |
| 248 | if (group->GetCommunicator() != this->Communicator) |
| 249 | { |
| 250 | vtkErrorMacro(<< "Invalid group for creating a sub controller."); |
| 251 | return nullptr; |
| 252 | } |
| 253 | |
| 254 | if (group->FindProcessId(this->GetLocalProcessId()) < 0) |
| 255 | { |
| 256 | // The group does not contain this process. Just return nullptr. |
| 257 | return nullptr; |
| 258 | } |
| 259 | |
| 260 | vtkSubCommunicator* subcomm = vtkSubCommunicator::New(); |
| 261 | subcomm->SetGroup(group); |
| 262 | |
| 263 | // We only need a basic implementation of vtkMultiProcessController for the |
| 264 | // subgroup, so we just use vtkDummyController here. It's a bit of a misnomer |
| 265 | // and may lead to confusion, but I think it's better than creating yet |
| 266 | // another class we have to maintain. |
| 267 | vtkDummyController* subcontroller = vtkDummyController::New(); |
| 268 | subcontroller->SetCommunicator(subcomm); |
| 269 | subcontroller->SetRMICommunicator(subcomm); |
| 270 | |
| 271 | subcomm->Delete(); |
| 272 | |
| 273 | return subcontroller; |
| 274 | } |
| 275 | |
| 276 | //------------------------------------------------------------------------------ |
| 277 | vtkMultiProcessController* vtkMultiProcessController::PartitionController( |
no test coverage detected