Embedding in C
[1/1] from: koopmans::itr::ing::nl at: 17-Sep-2001 12:59
Hi,
See below a recipe for being able to call Rebol from C.
I thought I'd forward it. Using libwww from w3c.org it should be easily done.
Any C hackers out there willing to do it?
--Maarten
---------- Forwarded Message ----------
Hi Karl,
Integrating it with C should not be that hard if you use no security:
This is the rebol how-to for the Rugby message format, you can easily
translate it into C.
There are two flavors, one TCP, one HTTP;
First, here is TCP:
- You create a message:
mold compress mold reduce [checksum/secure mold do mold msg msg]
- You determine the length of the message, at most 99.999.999 bytes, filled
with zeros (8byte fixed, i.e. 00023456)
- You send the length, you send the message, and then at least one extra
byte. The extra byte is to keep the server I/O engine running.
The tricky parts here may be C equivalents of compress and checksum/secure.
If you have a C lib to create HTTP requests using POST (and from the top of
my head, they are available on w3.org), you are better of doing that.
If you look at tunnel.r in the distribution you see how the http requests are
created in 10 lines of Rebol code. This is what happens:
- create a http post with two fields: 1) rugby-rq , you actual request, and
2) xtra-info , a fixed 18-byte field string. Corresponds to the extra byte
when using TCP.
- Field 1, rugby-rq , should have a content in the following format:
[***[your-request-here]***] it is block wrapped in [*** and ***].
- Field 2, xtra-info may be filled with whatever you like, as long as it is
at least 18 bytes.
The built-in HTTP proxy knows how to parse these requests. As these requests
are more easy to construct, you should be able to do this easily in C (this
is in fact why the HTTP post format is kept "REBOL free"). If you do, please
send me the code! It may be very useful for others as well.