[Paraview] Send an array from client to server

Biddiscombe, John A. biddisco at cscs.ch
Fri Sep 18 17:50:40 EDT 2015


Utkarsh

Apologies, I didn’t get  chance to try this properly until now, When I
call this 

vtkClientServerStream stream;
  stream << vtkClientServerStream::Invoke
    << VTKOBJECT(proxy)
    << "SetSelectedGIds"
  << numValues;
  stream.InsertArray(data, numValues);
  stream << vtkClientServerStream::End;

Inside my client server generated wrapper is this code

if (!strcmp("SetSelectedGIds",method) && msg.GetNumberOfArguments(0) == 4)
    {
    int      temp0;
    vtkClientServerStreamDataArg<int    > temp1(msg, 0, 3);
    if(msg.GetArgument(0, 2, &temp0) &&
      temp1)
      {
      op->SetSelectedGIds(temp0,temp1);
      return 1;
      }
    }

Which is generated from


  void SetSelectedGIds(int N, const int *Ids);

But when I step though the received message, the msg parameter only has
GetNumberOfArguments == 3


If I adjust the client server wrapped code to accept 3 args instead of 4,
then the numValues looks correct, but the pointer is wrong.

Q1 : why does the message only have 3 params when the wrapper wants 4
Q2 : What should I change? I guess that something else needs to be
inserted into the stream, but after having a poke round, I couldn’t guess
what.

Thanks

JB




On 17/09/15 16:47, "Utkarsh Ayachit" <utkarsh.ayachit at kitware.com> wrote:

>(hit `send` prematurely, ignore previous email)
>
>How big is the array? For 100s of values, I'd say IntVectorProperty is
>still reasonable. Any other approach will mean that those values are
>not going to get saved in state files and such. For a one off push to
>server side for values you don't care to be saved in state files, you
>can directly call API using the vtkClientServerStream on the proxy as
>follows:
>
>  vtkClientServerStream stream;
>  stream << vtkClientServerStream::Invoke
>              << VTKOBJECT(proxy)
>               << SetValues
>               << maxValues;
>stream.InsertArray(values, maxValues);
>stream << vtkClientServerStream::End;
>
>proxy->GetSession()->ExecuteStream(proxy->GetLocation(), stream);
>
>Assuming a server-side API of `void SetValues(int count, int* values);`.
>
>(please confirm the API, but this is pretty close to what it would look
>like)
>
>Utkarsh
>
>
>> On Thu, Sep 17, 2015 at 6:22 AM, Biddiscombe, John A.
>><biddisco at cscs.ch> wrote:
>>>
>>> I’m afraid I’ve forgotten how to write plugins for paraview and I have
>>>a simple-ish question :
>>>
>>>
>>>
>>> I’ve got a vtkUnsignedIntArray in my custom panel and I’d like to set
>>>it as a property on a reader,
>>>
>>> the reader has a member
>>>
>>> vtkSetObjectMacro(SelectedGIDs)
>>>
>>>
>>>
>>> and in the panel I’ve generated a list of IDs, but I cannot recall how
>>>I’m supposed to set them as the proxyproperty for the source.
>>>
>>>
>>>
>>> Is there an example (I do remember that I don’t want to use an
>>>IntVectorProperty, but pass a whole array as a proxy property)
>>>
>>>
>>>
>>> (I’m considering using a vtkSelection, but the GIDs are not the same
>>>as the cell Ids, so I wanted to try a direct array method first)
>>>
>>>
>>>
>>> thanks
>>>
>>>
>>>
>>> JB
>>>
>>>
>>>
>>> --
>>>
>>> John Biddiscombe,                        email:biddisco @.at.@ cscs.ch
>>>
>>> http://www.cscs.ch/
>>>
>>> CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
>>>
>>> Via Trevano 131, 6900 Lugano, Switzerland   | Fax:  +41 (91) 610.82.82
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>>http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the ParaView Wiki at:
>>>http://paraview.org/Wiki/ParaView
>>>
>>> Search the list archives at: http://markmail.org/search/?q=ParaView
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/paraview
>>>
>>



More information about the ParaView mailing list