[gambit-list] Some high level questions about open-tcp-client

Mikael mikael.rcv at gmail.com
Tue Jul 8 07:57:14 EDT 2014


Rob, I don't know if this contributes to answering your question but,
(1) you can get the OS FD:s out of the Gambit TCP server and client ports,
(2) note that (at least the client) ports' FD:s are set up in asynchronous
mode at the level of OS FD so your reads & writes will be nonblocking
unless you change that setting and supposedly you don't want to do that, and
(3) you can have Gambit do typical select() work for you on port objects
using the ##wait-for-input! & -output! procedures i.e. your Gambit and C
code can cooperate this way i.e. Gambit code waits for FD readiness and
then your C code does the IO. Last,
(4) there's some procedure in Gambit to import an OS FD and make a port
object out of it.
Mikael



2014-07-07 23:32 GMT+02:00 Rob Kellock <sales at creditscore.co.nz>:

> Hi,
>
> Quite some time ago I managed to successfully interface with a C library
> using FFI.  Now I'm having another go, but this time I want to connect
> to it using native Scheme code.  The C library is the interface to a
> select based TCP socket server, so I figure I should be able to connect
> to it directly using open-tcp-client and forgo the whole FFI thing.
>
> The way the C library works is that a C struct is sent to the receiving
> socket first so that it knows the length of the message buffer that will
> follow and some other information specific to the socket server's
> operation. This is immediately followed up by the message buffer which
> is in binary format.
>
> So far... I think I've managed to work out that I should be using
> u8vector data structure for both the C struct and the message buffer,
> although I don't yet understand what kind of encoding is going on in
> there. That will come after I've looked at some examples.
>
> My plan is to extend the existing web-server.scm example to produce a
> web app that talks to it's relational database using native Scheme. I'm
> going down this route because I want to extend web-server.scm using the
> GSI.  If I use the FFI I'm restricted to the GSC which prevents the
> whole interactive development scenario I want where I can keep the
> browser running, the database running and just stop and start the GSI as
> I hack code.
>
> What I want to know first though is if I use open-tcp-client inside
> Gambit's threads will the native Scheme calls out to the external socket
> server block?  If they don't then am I on the right track to use u8vector?
>
> Thanks,
>
> Rob.
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20140708/7d8fd1b9/attachment.htm>


More information about the Gambit-list mailing list