Subject: [Anima] Hackathon, GRASP and C: a challenge to the WG

From: Brian E Carpenter <[email-masked]>
Date: Tue, 21 Feb 2017 17:48:54 +1300

Hi,

I've been entertaining myself by putting together an IPC interface to 
the GRASP Python prototype. (As of today, it seems to be working,
but the code is not fit to publish yet.)

Why? Because this is what we need for multiple independent ASAs
to call a single instance of the GRASP core. 

How? To make the solution portable (not efficient, because this is
a prototype), I simply use TCP as the IPC mechanism. This would also
make it rather trivial to turn the thing into a genuine RPC.

Like any RPC solution, I needed to serialise the calls and the
returns. How? I decided to use CBOR. The details get a bit ugly,
but it works. (Primitive ASCII art below.)

The advantage of using CBOR is that although so far everything is
in Python, the serialised calls and returns are "just" CBOR/TCP.
So a smart C programmer, using one of the CBOR libraries, could
put together an API in C that could then issue GRASP API calls
via the IPC mechanism.

I am not a smart C programmer. So here's the challenge: who would
like to work on this? Before the hackathon, or during the hackathon.

If someone puts their hand up, I would have to do a bit more
work to document the ugly details. So please put your hand up
soon. And the result should be open source, of course.

(In theory, the approach would apply to any language that has
CBOR support, but C seems the obvious lowest common denominator.
Or maybe C++?)

Who wants in?

    Brian

ASA <=> Local <=> IPC  <=> CBOR/TCP <=> IPC  <=> Main <=> GRASP
        API       client                server   API      core

---

From: Brian E Carpenter <[email-masked]>
Date: Tue, 28 Feb 2017 17:02:21 +1300

I said:

> ... I would have to do a bit more

I did a very rough documentation job and posted the very rough
code. Look at https://www.cs.auckland.ac.nz/~brian/graspy/remotes/
starting with the README.

As an added bonus, I included a rough draft of the C header file
for a GRASP API. All we need now is a C programmer to do the rest.

Regards
   Brian