MultipleServerConnections
From ParaQ Wiki
Jump to navigationJump to search
Overview
In ParaView, ServerManager works with VTK objects on 3 entities: DataServer, RenderServer or Client. Once connections are established between N RenderServer nodes and first N DataServer nodes, they are bound together. Thus, DataServer and RenderServer always go together. Now, we want to enable the client to connect to multiple such DataServer-RenderServer groups (which we will call ServerCouple). This document discusses the design for enabling the same. For sake of simplicity, we can treat the Client as a special kind of ServerCouple.
Assumptions
- For now, we assume that each ServerCouple is vanilla i.e. it cannot have any VTK objects created on it, when the client connects to it. This assumption ensures that there are no object ID conflicts between the Client and the ServerCouple.
Requirements
- It must be possible for ServerManager to specify which ServerCouple it wants to access.
- It must be possible to query the ProcessModule to determine if a ServerCouple connection is active.
Design
- Each ServerCouple is assigned a Unique Id. The ID cannot merely be the index of the ServerCouple connection since this would make it difficult to detect case when a ServerCouple disconnects and another one connects. Hence, we assure that when a ServerCouple disconnects, its ID is not reused until max(vtkIdType) (or whatever datatype we use for the Id) ServerCouples connect with the client.