/usr/include/vtk-6.1/vtkSocketController.h is in libvtk6-dev 6.1.0+dfsg2-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 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
|