<div dir="ltr"><div><div><div><div>Well, I see that I'll need some more debug sessions to get this solved.<br><br>>Why not make M aware of the code that needs to be executed and then<br>>just trigger those through higher level messages from S? This is like<br>>your first option, but you're only sending coarse messages eg. "Do<br>>Action1" etc to M.<br><br></div><div>Yes, this would be my option 2). "Make M aware of the code" means that I need some interpreted language that I send from S to M. (I would probably not use a separate message to execute the transmitted code, but rather execute it as soon as it has completely arrived. But this is a minor detail.)<br></div><div><br></div>What I don't understand is why only the master is allowed to add sources etc. My attempts run fine if I start ParaView as master and then add sources through my custom (slave) clients. Is the missing thread safety in VTK the problem, so that I could run into synchronization issues if several clients request changes on the server "at the same time"? (If so, I'd suggest that the server rejects messages which are not originating from the master.)<br><br></div>There is this one remaining problem that ParaView seems not to initialize correctly if a different master has set up a pipeline earlier. Did you have a chance to look into this issue? I might also file a bug report, if you prefer.<br><br></div>Thanks<br></div>Peter<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-06-20 16:03 GMT+02:00 Utkarsh Ayachit <span dir="ltr"><<a href="mailto:utkarsh.ayachit@kitware.com" target="_blank">utkarsh.ayachit@kitware.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Peter,<br>
<span class=""><br>
<br>
> Or does additional<br>
> documentation (design documents, message exchange protocols, ...) exist?<br>
<br>
</span>Sorry my friend. Nothing more than what I previously mentioned on the<br>
mailing list.<br>
<br>
<a href="http://www.paraview.org/ParaView/images/2/24/ParaViewCollaborationChanges.pdf" rel="noreferrer" target="_blank">http://www.paraview.org/ParaView/images/2/24/ParaViewCollaborationChanges.pdf</a><br>
<a href="http://www.paraview.org/ParaView/index.php/ProcessModule_2.0" rel="noreferrer" target="_blank">http://www.paraview.org/ParaView/index.php/ProcessModule_2.0</a><br>
<a href="http://www.paraview.org/ParaView/index.php/ServerManager_2.0" rel="noreferrer" target="_blank">http://www.paraview.org/ParaView/index.php/ServerManager_2.0</a><br>
<span class=""><br>
<br>
> So, although the concept of promoting different clients as master is obvious<br>
> from the video above, something more is needed to allow any slave to change<br>
> the pipeline automatically by permission of the master: the slave (S) must<br>
> request to be promoted as master to the current master (M), M must promote S<br>
> as master, S operates on the pipeline, and S must promote M as master again.<br>
<br>
</span>(My knowledge on how several of these things is quite rusty  -- so<br>
bear with me). I'd suggest look at pqCollaborationManager and see how<br>
it implements chat messages. You should be able to extend that concept<br>
to add support for custom messages.<br>
<span class=""><br>
<br>
> After some thoughts, my suggested option 2) may be easier and more secure: S<br>
> would send its intended operations to M, and M executes them. Here, the<br>
> question is whether I have to invent a new streaming language to encode<br>
> pipeline changes that S wants to send to M? Or can S just build the pipeline<br>
> as intended and use some available serialization to send this pipeline state<br>
> to M?<br>
<br>
</span>Why not make M aware of the code that needs to be executed and then<br>
just trigger those through higher level messages from S? This is like<br>
your first option, but you're only sending coarse messages eg. "Do<br>
Action1" etc to M.<br>
<span class=""><br>
> Any of the options requires some additional messages to be send between<br>
> slaves and master. This is what I am trying to figure out. The --cslog<br>
> options looks very useful, but a short overview which classes are involved<br>
> in sending custom messages including an encoded pipeline state would be even<br>
> more helpful.<br>
<br>
</span>Follow the code path  from  pqCollaborationManager::onChatMessage().<br>
It calls pqServer::sendToOtherClients(...) with a vtkSMMessage object<br>
created.<br>
<span class="HOEnZb"><font color="#888888"><br>
Utkarsh<br>
</font></span></blockquote></div><br></div>