[Paraview] low level C++ example how to communicate with pvserver

Biddiscombe, John A. biddisco at cscs.ch
Thu Dec 16 04:58:41 EST 2010


Thomas,

>What do you mean by "I manually instantiate the pvserver manager stuff"? Please mention, where

Did you look in the InitServerManager function? you can see how we manually start up a server manager. We tell it that we are a PVBATCH (ie no connection required from a client). All you need to do is poke around with this code and set the application type to a CLIENT, then instantiate a connection.
Once you've done that, the proxy related stuff is all business as usual.

>The only relation to server manager classes (vtkSMProxies) I find in your code is in the files

try ... almost everywhere in DemoCPPipeline. Proxies are used for everything. You must need glasses if you didn't see any of it!
(and yes SMAdapator is just there for me to copy and paste stuff from. Most of the convenience functions in the paraview source code are in pqSMadaptor, but make use of Qt classes which I'm not interested in).

JB

//----------------------------------------------------------------------------
int DemoCPPipeline::InitServerManager(vtkCPDataDescription* DataDescription)
{
  if (this->ServerManagerInitialized) return 1;
  int argc = 0;
  char** argv = new char*[1];
  argv[0] = new char[200];
  string CWD = vtksys::SystemTools::GetCurrentWorkingDirectory();
#ifdef COPROCESSOR_WIN32_BUILD
  strcpy_s(argv[0], strlen(CWD.c_str())+1, CWD.c_str());
#else
  strcpy(argv[0], CWD.c_str());
#endif

  // create the correct options for this process
  vtkPVServerOptions* options = vtkPVServerOptions::New();
  options->SetProcessType(vtkPVOptions::PVBATCH);
  options->SetSymmetricMPIMode(1);
  options->SetUseOffscreenRendering(OFFSCREEN_RENDER);
  // Let pv built in code do all the intialization
  vtkInitializationHelper::Initialize(argc, argv, options);
  this->ServerManagerInitialized = 1;
  //
  this->ConnectionID = 
    vtkProcessModuleConnectionManager::GetRootServerConnectionID();
  // To operate on multiblock data we must use the composite pipeline executive
  vtkSmartPointer<vtkCompositeDataPipeline> exec = vtkSmartPointer<vtkCompositeDataPipeline>::New();
  vtkAlgorithm::SetDefaultExecutivePrototype(exec);

  return 1;
}

-----Original Message-----
From: Thomas Kipling [mailto:kipling_t at yahoo.com] 
Sent: 16 December 2010 10:18
To: Biddiscombe, John A.; paraview at paraview.org
Subject: AW: [Paraview] low level C++ example how to communicate with pvserver

Dear John,
thank you very much for sharing the example. However, I don't see how I can make 
use of it in relation to my original question. I am not sure whether the reason 
is that I am not enough familiar with the Paraview concepts or because the 
actual server manager usage examples that I am looking for are left out in your 
code.

>I manually instantiate the pvserver manager stuff and then access it via  
>proxies (whereas you want to communicate with an existing pvserver). 
>

What do you mean by "I manually instantiate the pvserver manager stuff"? Please 
mention, where this takes place in your code. Can you roughly describe how 
"instantiating the pvserver manager stuff" can be replaced by connecting to a 
running pvserver? Because this was my actual problem.

The only relation to server manager classes (vtkSMProxies) I find in your code 
is in the files SMAdaptor.h and SMAdaptor.cxx, but these are included or linked 
nowhere else.

I am sure your example may give some answers to my initial question, but due to 
my limited knowledge I only see a MPI VTK application without obvious connection 
to pvserver communication. Would you help with further explanations?

Regards,
Thomas





More information about the ParaView mailing list