[Paraview-developers] RE Plans for changes to ServerManger (Paraview 4.0 or later)

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Thu Jul 15 16:28:40 EDT 2010


Stephane,

>  * Your description assumes that everybody shares the same DOM. How will you deal with plugins? You'll have to make sure that all clients have the same plugins (at least for those that involve server-side classes) before connecting to a remote server where someone else has already started a session, or he will not be able to load the current state properly...

That is correct. Ensuring that the same plugins are available on all
clients will be something that will happen as a part of the handshake
between client and server. A couple of things to note, however:
* the XML definitions are obtained from server, so all clients will
have same definitions
* If we truthfully stick with the design principal of moving all logic
to VTK and not have vtkSMProxy subclasses, then in most cases (except
views/representations that have vtk-objects on client as well), all
proxies can be created on  the clients, whether the plugin is loaded
or not.

>  * Some questions about synchronisation :
>   -You seem to move to an async client/server design, right?

Mmm, you can say that, I suppose. The driving goal was that we need a
design where message from client-A to server, can simply be sent to
client-B and interpreted.

>   -Are the PushState / Invoke calls meant to be atomic, that is you will ensure that you do not need to make 2 or more of those calls to move from one valid state to another (think of the current possibility to link two properties)? The issue is what happens if messages from different clients gets interleaved...

Yes, every push-invoke will be atomic. However pushes from properties
on different proxies are two different pushes, so they are not
guaranteed to be atomic. What was not described in the document was
that in collaboration mode, there is a notion of a "master" client.
For shared proxies, only the master client can make changes i.e.
PushState(), on all other client, PushState() is ignored (except for
non-shared proxies -- but let's not go into that). So for property
linking though two property states may get pushed individually, it
doesn't matter, the other clients will get the new states for the two
properties separately at some point and update themselves.

Utkarsh


More information about the Paraview-developers mailing list