SIMPL open source project... / Send/Receive/Reply message passing
bob
ican-rZHaEmXdJNJWk0Htik3J/w at public.gmane.org
Thu Jun 22 20:27:02 UTC 2006
On Thursday 22 June 2006 01:57 pm, Jason Spiro wrote:
> On 6/22/06, bob <ican-rZHaEmXdJNJWk0Htik3J/w at public.gmane.org> wrote:
> > The SIMPL open source project aims to bring Send/Receive/Reply (QNX
> > style) message passing to Linux.
>
> Excuse my ignorance, but what is Send/Receive/Reply message passing?
There is a brief description of S/R/R on the SIMPL project website at:
http://users.netrover.com/~ican/simpl/srr.html
and also at:
http://users.netrover.com/~ican/simpl/simpl_paradigm.html
In reality the SIMPL API is really just 5 main functions:
name_attach() - to register a process name
name_locate() - to open a communication channel to a process found by
name
Send() - throw off a message and wait for a response
Reply() - respond to a message
Receive() - wait for a message to be thrown your way
In my view API's can't get any easier than that.
In reality if you've ever coded a simple function you've already used S/R/R
albeit within the confines of a single process and using the stack as a
message transfer medium. However, all the elements of an S/R/R
transaction are present in a function call. The function name is the
equivalent of the SIMPL name. The main code outside the function is
equivalent to the SIMPL sender ... the act of calling the function the
equivalent of a name_locate() and a Send() wrapped in one. Once the
function is called, the code execution "blocks" waiting for the function to
execute and return ... the return in the function is the equivalent of a
Reply(). Upon that function return the main code (equivalent to SIMPL
sender) unblocks and resumes execution. The function code itself is
equivalent to the SIMPL receiver ... with the function definition line being
the equivalent of a SIMPL Receive(). The function code can be thought to
"block" waiting for some code to call it.
The only aspect of SIMPL which doesn't have an analog in the function call
scenerio is the name_attach() ... although starting up the executable might
be the equivalent of that.
If you continue with the analogy the softwareICs in SIMPL are like objects in
an OOP program with full encapsulation and methods ... albeit without all the
fancy inheritance capabilities.
What SIMPL does is expand this notion of blocking "function calls" to the
sphere of interprocess communication. This allows for good encapsulation
and deployable executable testability as well as the possibility to disperse
those executables transparently across any networking medium unchanged.
In addition you can write your SIMPL modules in whatever language is most
appropriate, with the choice of C, C++, JAVA, Tcl/Tk or Python at last
count. Furthermore a SIMPL application can easily consist of modules
written in different languages and as long as they agree on the message
format they can happily coexist and cooperate.
Finally, in the case of Tcl/Tk the SIMPL paradagm has been extended
transparently across OSs. ie. Tcl/Tk SIMPL code can run and Windows and
talk to other SIMPL code on Linux ... or in at least one instance directly
into a deeply embedded network appliance.
QNX was the first commercial OS to embrace this S/R/R paradigm for
encapsulating complexity of software applications. They did this way back
in the very early days of PC's in the early 80's. In fact QNX predates
Microsoft.
While SIMPL doesn't have the all the polish, raw speed and feature set of a
QNX, it is certainly "good enough" for lots of sophisticated applications on
modern processors.
bob
--
The Toronto Linux Users Group. Meetings: http://tlug.ss.org
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml
More information about the Legacy
mailing list