mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
125 lines
4.7 KiB
C++
125 lines
4.7 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkClientServerMoveData.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkClientServerMoveData - Moves data from the server root node
|
|
// to the client.
|
|
// .SECTION Description
|
|
// This class moves all the input data available at the input on the root
|
|
// server node to the client node. If not in server-client mode,
|
|
// this filter behaves as a simple pass-through filter.
|
|
// This can work with any data type, the application does not need to set
|
|
// the output type before hand.
|
|
// .SECTION Warning
|
|
// This filter may change the output in RequestData().
|
|
|
|
#ifndef vtkClientServerMoveData_h
|
|
#define vtkClientServerMoveData_h
|
|
|
|
#include "vtkPVClientServerCoreRenderingModule.h" //needed for exports
|
|
#include "vtkDataObjectAlgorithm.h"
|
|
|
|
class vtkMultiProcessController;
|
|
class vtkMultiProcessController;
|
|
|
|
class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkClientServerMoveData : public vtkDataObjectAlgorithm
|
|
{
|
|
public:
|
|
static vtkClientServerMoveData* New();
|
|
vtkTypeMacro(vtkClientServerMoveData, vtkDataObjectAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Controls the output type. This is required because processes receiving
|
|
// data cannot know their output type in RequestDataObject without
|
|
// communicating with other processes. Since communicating with other
|
|
// processes in RequestDataObject is dangerous (can cause deadlock because
|
|
// it may happen out-of-sync), the application has to set the output
|
|
// type. The default is VTK_POLY_DATA. Make sure to call this before any
|
|
// pipeline updates occur.
|
|
vtkSetMacro(OutputDataType, int);
|
|
vtkGetMacro(OutputDataType, int);
|
|
|
|
// Description:
|
|
// Controls the output WHOLE_EXTENT. This is required because processes
|
|
// receiving data cannot know their WHOLE_EXTENT in RequestInformation
|
|
// without communicating with other processes. Since communicating with
|
|
// other processes in RequestInformation is dangerous (can cause deadlock
|
|
// because it may happen out-of-sync), the application has to set the
|
|
// output type. Make sure to call this before any pipeline updates occur.
|
|
vtkSetVector6Macro(WholeExtent, int);
|
|
vtkGetVector6Macro(WholeExtent, int);
|
|
|
|
// Description:
|
|
// Optionally, set the process type. If set to AUTO, then the process type is
|
|
// tried to be determined using the active connection.
|
|
vtkSetMacro(ProcessType, int);
|
|
vtkGetMacro(ProcessType, int);
|
|
|
|
// Description:
|
|
// Get/Set the controller to use. This is optional and needed only when
|
|
// ProcessType is set to something other than AUTO. If AUTO, then the
|
|
// controller is obtained from the active session.
|
|
void SetController(vtkMultiProcessController*);
|
|
vtkGetObjectMacro(Controller, vtkMultiProcessController);
|
|
//BTX
|
|
enum ProcessTypes
|
|
{
|
|
AUTO=0,
|
|
SERVER=1,
|
|
CLIENT=2
|
|
};
|
|
|
|
protected:
|
|
vtkClientServerMoveData();
|
|
~vtkClientServerMoveData();
|
|
|
|
// Overridden to mark input as optional, since input data may
|
|
// not be available on all processes that this filter is instantiated.
|
|
virtual int FillInputPortInformation(int port, vtkInformation *info);
|
|
|
|
virtual int RequestData(vtkInformation* request,
|
|
vtkInformationVector** inputVector,
|
|
vtkInformationVector* outputVector);
|
|
|
|
// Create an output of the type defined by OutputDataType
|
|
virtual int RequestDataObject(vtkInformation* request,
|
|
vtkInformationVector** inputVector,
|
|
vtkInformationVector* outputVector);
|
|
|
|
// If there is an input call superclass' RequestInformation
|
|
// otherwise set the output WHOLE_EXTENT() to be WholeExtent
|
|
virtual int RequestInformation(vtkInformation* request,
|
|
vtkInformationVector** inputVector,
|
|
vtkInformationVector* outputVector);
|
|
|
|
virtual int SendData(vtkDataObject*, vtkMultiProcessController*);
|
|
virtual vtkDataObject* ReceiveData(vtkMultiProcessController*);
|
|
|
|
enum Tags {
|
|
TRANSMIT_DATA_OBJECT = 23483
|
|
};
|
|
|
|
int OutputDataType;
|
|
int WholeExtent[6];
|
|
int ProcessType;
|
|
vtkMultiProcessController* Controller;
|
|
|
|
private:
|
|
vtkClientServerMoveData(const vtkClientServerMoveData&); // Not implemented.
|
|
void operator=(const vtkClientServerMoveData&); // Not implemented.
|
|
//ETX
|
|
};
|
|
|
|
#endif
|