ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Branko ─îibej <br...@apache.org>
Subject Re: C++ marshalling.
Date Tue, 26 May 2015 20:43:43 GMT
Why don't you just use an existing IDL? Something like Thrift or
Protobufs or ... there are quite a few of them out there. Inventing your
own marshalling is a waste of time.

-- Brane


On 26.05.2015 22:12, Vladimir Ozerov wrote:
> SFINAE could be a way to perform compile-time introspection:
> http://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error
>
> On Tue, May 26, 2015 at 5:40 PM, Denis Magda <dmagda@gridgain.com> wrote:
>
>> Yeap, it's not so easy to marshall/unmarshall data in C++.
>>
>> Take a look at these slides from NVIDIA:
>>
>> http://on-demand.gputechconf.com/gtc/2012/presentations/S0377-C++-Data-Marshalling-Best-Practices.pdf
>>
>> The slides are quite high level but probably they will expose a solution
>> to p.2.
>>
>> --
>> Denis
>>
>>
>> On 5/26/2015 12:09 PM, Vladimir Ozerov wrote:
>>
>>> Igniters,
>>>
>>> C++ doesn't have reflection/introspection. For this reason we have to map
>>> user structs/classes to their marshal/unmarshal handlers (functions)
>>> somehow.
>>>
>>> Various approaches for this are available:
>>> 1) Predefined map [type ID -> marshal/unmarshal functions] which is
>>> configured at runtime before Grid is started.
>>> 2) Provide serializers in runtime. E.g. the following will set specific
>>> serializers on cache projection:
>>> ICache* cache = grid.cache(KeySerializer* k, ValSerialzier* v).
>>>
>>> I think we should start with p.1 as it is flexible and will not require
>>> users to change their existing types. The drawback is that user will have
>>> to write marshalling logic by hand. But we can introduce some
>>> code-generation facility later (e.g. like Gigaspaces does this).
>>>
>>> Thoughts and ideas are welcomed.
>>>
>>> Vladimir.
>>>
>>>


Mime
View raw message