From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.8 required=3.0 tests=BAYES_00,PLING_QUERY autolearn=no autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: 2dsa | !2dsa ? Date: Mon, 11 Jan 2021 16:32:22 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <2fa5a097-a0a6-4614-b990-ee70b89ab470n@googlegroups.com> NNTP-Posting-Host: 5WHqCw2XxjHb2npjM9GYbw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61097 List-Id: 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