comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: 2dsa | !2dsa ?
Date: Mon, 11 Jan 2021 16:32:22 +0100	[thread overview]
Message-ID: <rthr24$1la0$1@gioia.aioe.org> (raw)
In-Reply-To: bb8af574-1525-4c50-a308-4ae2e9dec2f4n@googlegroups.com

On 2021-01-11 15:59, Shark8 wrote:
> On Thursday, December 24, 2020 at 6:30:59 AM UTC-7, Dmitry A. Kazakov wrote:
>> On 2020-12-24 13:02, Maxim Reznik wrote:
>>> I forked a older (Garlic) GNAT DSA implementation and found it quite hackable. :)
>>> My idea is to implement a WebSocket/WebRTC transport and compile it by GNAT-LLVM to WebAssembly to have distributed Ada applications in a browser. I have a working proof of concept demo already :)
>>>
>>> https://github.com/reznikmm/garlic/tree/web_socket
>> My question is how to proceed without GLADE/Garlic etc. I have DSA
>> implemented, e.g. System.RPC. I need GNAT to accept it as such.
> What do you mean by this?
> How is GNAT "not accepting" it?

It does not invoke the provided DSA implementation for remote calls.

> More, you mentioned the possibility of using a set of tagged-types, "like Storage_Pool", elsethread; is this how you implemented them, or a suggestion for a new standard interface?

It was a suggestion. The current way is System.RPC see ARM E.5. It seems 
that merely replacing it is not enough for GNAT.

>> In a more distant perspective I need a work-around of stream attributes.
>> They are non-portable, so there must an option to replace them for DSA
>> and/or provide a non-stream parameter marshaling when the transport is a
>> higher-level protocol, e.g. CANopen, EtherCAT, ASN.1, AMQP etc. For
>> these you must map Ada types into the types defined by the protocol.
> I have some ideas on how this could be achieved.
> I'll make a note for my To-Do list on Byron, but I was thinking that a good method to achieve this for an OS (WRT ASN.1) would be to have at the base a SOM-like system with the base meta-object having a serialize/deserialize pair of methods (with one parameter being the encoding scheme)...

The problem is that

1. They must doubly dispatch on the object type and on the container 
type, since there could be any number of containers = encoding/decoding 
schema.

2. They must support chunking. E.g. deserialize cannot be a function. 
This will get you a whole bunch of nasty problems with partial 
serialization and indefinite types. [I do not see these resolved without 
properly done constructors and co-routines.]

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2021-01-11 15:32 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-22 20:00 2dsa | !2dsa ? Rod Kay
2020-12-23  1:32 ` Randy Brukardt
2020-12-23  8:44   ` Dmitry A. Kazakov
2020-12-24 12:02     ` Maxim Reznik
2020-12-24 13:30       ` Dmitry A. Kazakov
2020-12-27 19:30         ` Rod Kay
2020-12-27 19:34           ` Rod Kay
2020-12-28 23:41             ` Randy Brukardt
2020-12-29 14:56               ` Dmitry A. Kazakov
2020-12-29 15:14                 ` Luke A. Guest
2020-12-29 15:51                   ` Dmitry A. Kazakov
2020-12-31 23:43                 ` Randy Brukardt
2021-01-09 15:05                   ` Rod Kay
2021-01-11 14:59         ` Shark8
2021-01-11 15:32           ` Dmitry A. Kazakov [this message]
2021-01-11 20:35             ` Shark8
2021-01-11 21:46               ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox