Re: [capnproto] Wikipedia "Comparison of data-serialization formats" entry

2022-10-17 Thread 'Kenton Varda' via Cap'n Proto
(Oops, your emails weren't going through from this address because they
were landing in the Google Groups moderation queue. I just went and cleared
it out (resulting in these dupes, sorry) and allowlisted this address so it
won't be moderated in the future.)

-Kenton

On Mon, Oct 17, 2022 at 12:08 PM Christophe Alexandre <
christophe.a...@gmail.com> wrote:

> I took the initiative to add/restore the Cap'n Proto line.
> Please tell me if anything is wrong of if more links/references are needed.
>
> Thanks
> Christophe
>
> Le vendredi 30 septembre 2022 à 01:49:22 UTC+2, ken...@cloudflare.com a
> écrit :
>
>> It used to be there, but someone removed it, with the comment "clean list
>> of less notable formats".
>>
>>
>> https://en.wikipedia.org/w/index.php?title=Comparison_of_data-serialization_formats=revision=907829979=907825303
>>
>> At the time, there was no stand-alone Cap'n Proto article. It's possible
>> the editor decided that anything not notable enough to have its own article
>> should be removed from the table.
>>
>> Since that time, it looks like someone added an article:
>>
>> https://en.wikipedia.org/wiki/Cap%27n_Proto
>>
>> So maybe it makes sense to restore the row in the table now?
>>
>> I suspect Wikipedia rules prohibit me from doing this personally.
>>
>> -Kenton
>>
>> On Thu, Sep 29, 2022 at 1:45 PM Niels Andersen 
>> wrote:
>>
>>> It would be great if someone could add Cap'n Proto to this page
>>> https://en.wikipedia.org/wiki/Comparison_of_data-serialization_formats
>>> - I don't have enough knowledge to do it.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Cap'n Proto" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to capnproto+...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/capnproto/0480d668-00b7-4503-b9fd-836946f8035en%40googlegroups.com
>>> 
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Cap'n Proto" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to capnproto+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/capnproto/9b949d2f-a713-4af8-bcd6-d6b351da6d3en%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/CAJouXQnEOS5PuntRVQmrAVfDhp5ZN%2BbrAEEn4HmpCg5dx0v5tg%40mail.gmail.com.


Re: [capnproto] Wikipedia "Comparison of data-serialization formats" entry

2022-10-17 Thread Christophe Alexandre
I took the initiative to add/restore the Cap'n Proto line. 
Please tell me if anything is wrong of if more links/references are needed.

Thanks
Christophe

Le vendredi 30 septembre 2022 à 01:49:22 UTC+2, ken...@cloudflare.com a 
écrit :

> It used to be there, but someone removed it, with the comment "clean list 
> of less notable formats".
>
>
> https://en.wikipedia.org/w/index.php?title=Comparison_of_data-serialization_formats=revision=907829979=907825303
>
> At the time, there was no stand-alone Cap'n Proto article. It's possible 
> the editor decided that anything not notable enough to have its own article 
> should be removed from the table.
>
> Since that time, it looks like someone added an article:
>
> https://en.wikipedia.org/wiki/Cap%27n_Proto
>
> So maybe it makes sense to restore the row in the table now?
>
> I suspect Wikipedia rules prohibit me from doing this personally.
>
> -Kenton
>
> On Thu, Sep 29, 2022 at 1:45 PM Niels Andersen  
> wrote:
>
>> It would be great if someone could add Cap'n Proto to this page 
>> https://en.wikipedia.org/wiki/Comparison_of_data-serialization_formats - 
>> I don't have enough knowledge to do it. 
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Cap'n Proto" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to capnproto+...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/capnproto/0480d668-00b7-4503-b9fd-836946f8035en%40googlegroups.com
>>  
>> 
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/9b949d2f-a713-4af8-bcd6-d6b351da6d3en%40googlegroups.com.


Re: [capnproto] Wikipedia "Comparison of data-serialization formats" entry

2022-10-17 Thread Christophe Alexandre
I took the initiative to restore the Cap'n Proto line. Please tell me if 
anything is wrong or if you want me to add references.

Thanks
Christophe
Le vendredi 30 septembre 2022 à 01:49:22 UTC+2, ken...@cloudflare.com a 
écrit :

> It used to be there, but someone removed it, with the comment "clean list 
> of less notable formats".
>
>
> https://en.wikipedia.org/w/index.php?title=Comparison_of_data-serialization_formats=revision=907829979=907825303
>
> At the time, there was no stand-alone Cap'n Proto article. It's possible 
> the editor decided that anything not notable enough to have its own article 
> should be removed from the table.
>
> Since that time, it looks like someone added an article:
>
> https://en.wikipedia.org/wiki/Cap%27n_Proto
>
> So maybe it makes sense to restore the row in the table now?
>
> I suspect Wikipedia rules prohibit me from doing this personally.
>
> -Kenton
>
> On Thu, Sep 29, 2022 at 1:45 PM Niels Andersen  
> wrote:
>
>> It would be great if someone could add Cap'n Proto to this page 
>> https://en.wikipedia.org/wiki/Comparison_of_data-serialization_formats - 
>> I don't have enough knowledge to do it. 
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Cap'n Proto" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to capnproto+...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/capnproto/0480d668-00b7-4503-b9fd-836946f8035en%40googlegroups.com
>>  
>> 
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/aca1122a-7563-4b2b-a07e-c347987452abn%40googlegroups.com.


Re: [capnproto] Best practice for dynamic_cast equivalent method for extended interfaces

2022-10-17 Thread Christophe Alexandre
Thanks again Ken !

One step at a time...  Seems I'm now falling in the trap described 
here: https://groups.google.com/g/capnproto/c/9J_AOQzSEbU/m/qpuEjQXhBAAJ
So I'm wondering now if there is an available example of C++ implementation 
of a RPC schema using inheritance, similar to the Calculator example.

Thanks
Christophe

Le vendredi 14 octobre 2022 à 22:48:28 UTC+2, ken...@cloudflare.com a 
écrit :

> Hi Christophe,
>
> The problem is here:
>
> On Mon, Oct 10, 2022 at 5:41 AM Christophe Alexandre <
> christophe...@zellij.io> wrote:
>
>> auto objectInfo = promise.getObjectInfo(); 
>>
> auto object = objectInfo.getObject();
>>
>
> Note that you are operating on a promise here. The RPC has not actually 
> completed yet. The `object` you have obtained here is a promised future 
> object. You can start calling methods on it before the original call has 
> actually completed. This is called "promise pipeline" -- or, jokingly, 
> "time travel", on the web site. https://capnproto.org/rpc.html
>  
>
>> bool isA = objectInfo.getIsA(); //not implemented
>>
>
> This part doesn't work because pipelining on a boolean value is not 
> supported. Instead, you need to wait for the promise to complete, and then 
> you can access the boolean value on the result:
>
> auto promise2 = promise.then([](auto response) {
>   bool isA = response.getObjectInfo().getIsA();
> });
>
> Or, if you have a WaitScope:
>
> auto response = promise.wait(waitScope);
> bool isA = response.getObjectInfo().getIsA();
>
> -Kenton
>  
>
>>
>> Is it because of the Bool type ?
>>
>> Thanks !
>> Christophe
>>
>> Le samedi 8 octobre 2022 à 15:26:42 UTC+2, Christophe Alexandre a écrit :
>>
>>> Thanks a lot for your very clear answer.
>>>
>>> Christophe
>>>
>>> Le vendredi 7 octobre 2022 à 22:42:04 UTC+2, ken...@cloudflare.com a 
>>> écrit :
>>>
 Hi Christophe,

 There is no built-in mechanism for this. Instead, you have to build 
 this into your interface.

 Note that a `Client` object can be "safely" cast to any type using 
 `client.castAs()`. I say "safely" meaning: you won't 
 violate C++ memory safety by this cast, even if the server doesn't 
 actually 
 implement the type. Instead, if you cast to the wrong type, method calls 
 on 
 that type will fail with UNIMPLEMENTED exceptions. The exception is 
 produced on the server side; the client side does not actually know the 
 destination type so cannot predict whether the method is supported.

 To that end, one way to query the type would be to simply try to call a 
 method on `ConcreteA` or `ConcreteB` and see if it fails with 
 `exception.getType() == kj::Exception::Type::UNIMPLEMENTED`.

 But if you'd like to avoid the round trip, then I would suggest that 
 `getAbstracts()` should return a list that contains not just the interface 
 pointers, but also associated metadata identifying what type it is.

 -Kenton

 On Fri, Oct 7, 2022 at 5:05 AM Christophe Alexandre <
 christophe...@zellij.io> wrote:

> Hi,
> Sorry for the newbie question.
>
> I've read the following thread and this is related to the same kind of 
> question.
> https://groups.google.com/g/capnproto/c/XLo5RPLpVBg/m/LI_sGi72AgAJ
>
> With following schema example:
> interface Abstract {} 
> interface ConcreteA extends(Abstract) {} 
> interface ConcreteB extends(Abstract) {} 
> interface Object { 
>   getAbstracts @0 () -> (abstracts :List(Abstract)); 
> }
>
> When implementing getAbstracts on the server side, only ConcreteA or 
> ConcreteB objects are constructed and returned.
> My question is: on the client side, what is the best practice for 
> determining the Abstract object concrete type and casting it to ConcreteA 
> or ConcreteB. Something equivalent to C++ dynamic_cast.
>
> Thanks !
> Christophe Alexandre
>
> -- 
> You received this message because you are subscribed to the Google 
> Groups "Cap'n Proto" group.
> To unsubscribe from this group and stop receiving emails from it, send 
> an email to capnproto+...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/capnproto/1613eaaf-6025-4eb0-90c3-a7f4a98a2e21n%40googlegroups.com
>  
> 
> .
>
 -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Cap'n Proto" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to capnproto+...@googlegroups.com.
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/capnproto/76ba9ec6-578f-443f-8ef3-75e66ab3e86an%40googlegroups.com
>>  
>> 

Re: [capnproto] Wikipedia "Comparison of data-serialization formats" entry

2022-10-17 Thread 'Kenton Varda' via Cap'n Proto
Thanks.

FWIW I'd argue that Cap'n Proto should have a "no" under "Supports
references?". Although the binary encoding uses pointers, implementations
generally forbid the message structure to be anything other than
tree-shaped. You're not supposed to ever have multiple pointers pointing at
the same object, even if it's technically possible to encode, because
(among other things) supporting duplicate references and cycles would make
the copy algorithm much more complicated.

-Kenton

On Sun, Oct 16, 2022 at 5:45 AM Christophe Alexandre <
christophe.alexan...@zellij.io> wrote:

> I took the initiative to restore/add the Cap'n Proto line.
> Please tell me if everything is correct and if there are references to add.
> Thanks
> Christophe
>
>
> Le vendredi 30 septembre 2022 à 01:49:22 UTC+2, ken...@cloudflare.com a
> écrit :
>
>> It used to be there, but someone removed it, with the comment "clean list
>> of less notable formats".
>>
>>
>> https://en.wikipedia.org/w/index.php?title=Comparison_of_data-serialization_formats=revision=907829979=907825303
>>
>> At the time, there was no stand-alone Cap'n Proto article. It's possible
>> the editor decided that anything not notable enough to have its own article
>> should be removed from the table.
>>
>> Since that time, it looks like someone added an article:
>>
>> https://en.wikipedia.org/wiki/Cap%27n_Proto
>>
>> So maybe it makes sense to restore the row in the table now?
>>
>> I suspect Wikipedia rules prohibit me from doing this personally.
>>
>> -Kenton
>>
>> On Thu, Sep 29, 2022 at 1:45 PM Niels Andersen 
>> wrote:
>>
>>> It would be great if someone could add Cap'n Proto to this page
>>> https://en.wikipedia.org/wiki/Comparison_of_data-serialization_formats
>>> - I don't have enough knowledge to do it.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Cap'n Proto" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to capnproto+...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/capnproto/0480d668-00b7-4503-b9fd-836946f8035en%40googlegroups.com
>>> 
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Cap'n Proto" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to capnproto+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/capnproto/135238ba-8d5e-4cb7-bbc8-c2fc4a5a86e4n%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/CAJouXQmK-LeDaopH7UkQpoANO%3DAXuexMnxxiD56AvEst0aG7pQ%40mail.gmail.com.