Thanks,
Mike McDonald
mik...@engr.sgi.com
((= msgid *receive-some-stuff*)
;; actually, GetMessage returns a C struct
;; that also contains the size of the
;; associated data string.
(decode-data (read-data clientfd nbytes)))
.... and so on
As far as handling Lisp errors, I use conditions to somehow
recover -- when writing a server, it MUST be able to recover
and continue under all but the most unusual situations -- and
resume the GetMessage loop. No problems so far.
Now that we finally have direct socket handling within Lisp,
I plan to use it to eliminate the shared object library.
But the plan is to use the same message-loop mechanism as
it has proved to be quite robust and reliable for me.
BTW, the front ends were written in C/C++ as well as
Basic (MSVB).
If you have more questions, feel free to e-mail. I don't
feel comfortable in sharing the code as it belongs to my
client, but there should be no problem in sharing the
design and implementation techniques.
--
Pete Grant
Kalevi, Inc.
Software Engineering & development
Has anyone written an application in one of those yucky languages
like C or C++ that communicated to a separate lisp process using pipes
or sockets? Care to share your experiences? How did you handle lisp
errors? How about the flushing of the pipe so that you can tell when
lisp is ready to proceed? Anything else I should consider?
ACL/Win has DDE available for inter-process communication. For example,
there is an interface (Editi) between Win-Emacs and ACL that uses DDE.
There is a free demo version of ACL/Win available, see
http://www.franz.com. I'm not sure whether the demo version includes
DDE support or not; ditto for Editi. There's also a free demo version
of Win-Emacs, see http://www.pearlsoft.com.