From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Inter-process communication in Ada with Simple Components v 4.28 Date: Wed, 2 May 2018 18:51:02 +0200 Organization: Aioe.org NNTP Server Message-ID: NNTP-Posting-Host: kQkuQcRDy1QFvWpyB1foYw.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; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 X-Notice: Filtered by postfilter v. 0.8.3 X-Mozilla-News-Host: news://news.aioe.org:119 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:51921 Date: 2018-05-02T18:51:02+02:00 List-Id: The latest version 4.28 of Simple Components introduces inter-process communication primitives. The implementation does not rely networking and is based on shared memory and OS primitives available. Both Linux and Windows are supported. No configuration is required, no source code generation is used either. The interface packages are OS-independent. The following synchronization and communication primitives are provided: - Manual set/reset event; - Pulse event; - Re-entrant mutex. A mutex that can be seized by the same task several times without blocking; - Shared object that can be accessed from different processes; - FIFO, first-in, first-out queue with the ends in different processes; - Blackboard for publishing updates in a way that do not block the publisher; - Inter-process stream with the end points in different processes; - Shared memory pool which can be allocated and freed from different processes. The pool supports references which can be converted forth and back access type. The pool reference can be exchanged between processes and stored in the shared memory; - Process call service, that provides remote procedure call facilities. Both synchronous and asynchronous remote calls are supported. Synchronous calls can return back results or update arguments. Exceptions propagated at the callee's side are reported back to the caller and re-raised at the call point. - Manager of the process call services that allow processes involving in RPC exchange to come and go dynamically. The configuration of primitives is based on introspection of the Ada type that describes the shared environment. The primitives are merely components of the shared environment object. The coherence of the shared environment is checked when the process joins other processes. The intended audience is Ada developers of servers, e.g. Gnoga users. Bug reports and feature requests are welcome. P.S. The Distributed Systems Annex E can be supported if there is demand, provided some help with configuring GNAT to respect the pragma Remote Call Interface and use the custom System.RPC. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de