VTK  9.3.1
vtkDIYDataExchanger.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
18 #ifndef vtkDIYDataExchanger_h
19 #define vtkDIYDataExchanger_h
20 
21 #include "vtkObject.h"
22 #include "vtkParallelDIYModule.h" // for export macros
23 #include "vtkSmartPointer.h" // for vtkSmartPointer
24 
25 #include <vector> // for std::vector
26 
27 VTK_ABI_NAMESPACE_BEGIN
28 class vtkDataSet;
30 
31 class VTKPARALLELDIY_EXPORT vtkDIYDataExchanger : public vtkObject
32 {
33 public:
34  static vtkDIYDataExchanger* New();
36  void PrintSelf(ostream& os, vtkIndent indent) override;
37 
39 
43  void SetController(vtkMultiProcessController*);
44  vtkGetObjectMacro(Controller, vtkMultiProcessController);
46 
76  bool AllToAll(const std::vector<vtkSmartPointer<vtkDataSet>>& sendBuffer,
77  const std::vector<int>& sendCounts, std::vector<vtkSmartPointer<vtkDataSet>>& recvBuffer,
78  std::vector<int>& recvCounts);
79 
80 protected:
82  ~vtkDIYDataExchanger() override;
83 
84 private:
86  void operator=(const vtkDIYDataExchanger&) = delete;
87 
88  vtkMultiProcessController* Controller;
89 };
90 
91 VTK_ABI_NAMESPACE_END
92 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:51
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:52
a simple class to control print indentation
Definition: vtkIndent.h:28
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
exchange data-object among ranks.
Multiprocessing communication superclass.