mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
ParaView-5.0.1: Added the source-tree to ThirdParty-dev and patched as described in the README file
Resolves bug-report http://bugs.openfoam.org/view.php?id=2098
This commit is contained in:
134
ParaView-5.0.1/VTK/Parallel/Core/vtkSocketController.h
Normal file
134
ParaView-5.0.1/VTK/Parallel/Core/vtkSocketController.h
Normal file
@ -0,0 +1,134 @@
|
||||
/*=========================================================================
|
||||
|
||||
Program: Visualization Toolkit
|
||||
Module: vtkSocketController.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 vtkSocketController - Process communication using Sockets
|
||||
// .SECTION Description
|
||||
// This is a concrete implementation of vtkMultiProcessController.
|
||||
// It supports one-to-one communication using sockets. Note that
|
||||
// process 0 will always correspond to self and process 1 to the
|
||||
// remote process. This class is best used with ports.
|
||||
|
||||
// .SECTION Bugs
|
||||
// Note that because process 0 will always correspond to self, this class breaks
|
||||
// assumptions usually implied when using ad-hoc polymorphism. That is, the
|
||||
// vtkSocketController will behave differently than other subclasses of
|
||||
// vtkMultiProcessController. If you upcast vtkSocketController to
|
||||
// vtkMultiProcessController and send it to a method that does not know that the
|
||||
// object is actually a vtkSocketController, the object may not behave as
|
||||
// intended. For example, if that oblivious class chose to identify a "root"
|
||||
// based on the local process id, then both sides of the controller will think
|
||||
// they are the root (and that will probably lead to deadlock). If you plan to
|
||||
// upcast to vtkMultiProcessController, you should probably use the
|
||||
// CreateCompliantController instead.
|
||||
|
||||
// .SECTION see also
|
||||
// vtkMultiProcessController vtkSocketCommunicator vtkInputPort vtkOutputPort
|
||||
|
||||
#ifndef vtkSocketController_h
|
||||
#define vtkSocketController_h
|
||||
|
||||
#include "vtkParallelCoreModule.h" // For export macro
|
||||
#include "vtkMultiProcessController.h"
|
||||
|
||||
class vtkSocketCommunicator;
|
||||
|
||||
class VTKPARALLELCORE_EXPORT vtkSocketController : public vtkMultiProcessController
|
||||
{
|
||||
public:
|
||||
static vtkSocketController *New();
|
||||
vtkTypeMacro(vtkSocketController,vtkMultiProcessController);
|
||||
void PrintSelf(ostream& os, vtkIndent indent);
|
||||
|
||||
// Description:
|
||||
// This method is for initialiazing sockets.
|
||||
// One of these is REQUIRED for Windows.
|
||||
virtual void Initialize(int* argc, char*** argv, int)
|
||||
{ this->Initialize(argc,argv); }
|
||||
virtual void Initialize(int* argc, char*** argv);
|
||||
virtual void Initialize()
|
||||
{ this->Initialize(0,0); }
|
||||
|
||||
// Description:
|
||||
// Does not apply to sockets. Does nothing.
|
||||
void Finalize() {}
|
||||
void Finalize(int) {}
|
||||
|
||||
// Description:
|
||||
// Does not apply to sockets. Does nothing.
|
||||
void SingleMethodExecute() {}
|
||||
|
||||
// Description:
|
||||
// Does not apply to sockets. Does nothing.
|
||||
void MultipleMethodExecute() {}
|
||||
|
||||
// Description:
|
||||
// Does not apply to sockets. Does nothing.
|
||||
void CreateOutputWindow() {}
|
||||
|
||||
// Description:
|
||||
// Wait for connection on a given port, forwarded
|
||||
// to the communicator
|
||||
virtual int WaitForConnection(int port);
|
||||
|
||||
// Description:
|
||||
// Close a connection, forwarded
|
||||
// to the communicator
|
||||
virtual void CloseConnection();
|
||||
|
||||
// Description:
|
||||
// Open a connection to a give machine, forwarded
|
||||
// to the communicator
|
||||
virtual int ConnectTo(const char* hostName, int port );
|
||||
|
||||
int GetSwapBytesInReceivedData();
|
||||
|
||||
// Description:
|
||||
// Set the communicator used in normal and rmi communications.
|
||||
void SetCommunicator(vtkSocketCommunicator* comm);
|
||||
|
||||
// Description:
|
||||
// FOOLISH MORTALS! Thou hast forsaken the sacred laws of ad-hoc polymorphism
|
||||
// when thou broke a critical assumption of the superclass (namely, each
|
||||
// process has thine own id). The time frame to fix thy error has passed.
|
||||
// Too much code has come to rely on this abhorrent behavior. Instead, we
|
||||
// offer this gift: a method for creating an equivalent communicator with
|
||||
// correct process id semantics. The calling code is responsible for
|
||||
// deleting this controller.
|
||||
vtkMultiProcessController *CreateCompliantController();
|
||||
|
||||
//BTX
|
||||
|
||||
enum Consts {
|
||||
ENDIAN_TAG=1010580540, // 0x3c3c3c3c
|
||||
IDTYPESIZE_TAG=1027423549, // 0x3d3d3d3d
|
||||
VERSION_TAG=1044266558, // 0x3e3e3e3e
|
||||
HASH_TAG=0x3f3f3f3f
|
||||
};
|
||||
|
||||
//ETX
|
||||
|
||||
protected:
|
||||
|
||||
vtkSocketController();
|
||||
~vtkSocketController();
|
||||
|
||||
// Initialize only once, finialize on destruction.
|
||||
static int Initialized;
|
||||
private:
|
||||
vtkSocketController(const vtkSocketController&); // Not implemented.
|
||||
void operator=(const vtkSocketController&); // Not implemented.
|
||||
};
|
||||
|
||||
|
||||
#endif // vtkSocketController_h
|
||||
Reference in New Issue
Block a user