[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: What replaces scm_register_module_xxx (Doc update?)
From: |
Neil Jerram |
Subject: |
Re: What replaces scm_register_module_xxx (Doc update?) |
Date: |
17 Aug 2002 12:59:47 +0100 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 |
>>>>> "rm" == rm <address@hidden> writes:
rm> Apache (the application) loads mod_guile (an apache module). mod_guile
rm> registers some callback functions with apache. Apache then calls theses
rm> functions whenever it thinks that a certain part of a request
(authrntication,
rm> authorization, URL-rewrite, content delivery etc.) should be handled by
rm> guile (as can be customized in apaches configuration file). mod_guile
then
rm> calls the function that is supposed to handle this part of a request
rm> (again, the module and name of the function can be specified in the
server
rm> configuration files). To ba able to do something usefull, these
functions
rm> need to be able to access the data structures of the server/request.
rm> Each hander function is passed a request-record structure (a SMOB
arround
rm> apaches 'real' datastructure) as a parameter - this structure has fields
rm> that point to the server and connection record structures as well.
rm> Since all of these structures have quite a lot of fields we end up with
rm> a lot of functions (getters/setters). All of these functions are defined
rm> in mod_guile but of course should go into separate guile modules. Right
rm> now (as you can see, i got it working ;-) the following modules are
rm> defined: (apache request), (apache server), (apache connection),
rm> (apache tables), (mod-guile utils).
OK, so the idea is:
HTTP request for some URL --->
mapped by Apache config file to generic mod_guile handler,
with parameters indicating the module in which the appropriate
handler proc lives, and perhaps the proc name as well (?)
mod_guile handler uses the module and calls the handler proc from that
module (how do you handle handler procs with the same name in
different modules? perhaps by not actually importing them)
Now we're into Scheme code, that has a SMOB in its hand and wants to
use the utility functions defined in (apache request) etc. to play
with it, which it does using use-module in the usual way.
And the problem was: how do you export the C definitions for (apache
request) etc. into their respective modules?
I presume that Marius's docs for the C module API have given you one
answer, using scm_c_define, scm_c_with_module etc. Another
possibility would be to write a C function per module to register its
definitions as Guile primitives:
void mg_register_apache_request_primitives ()
{
scm_c_define_gsubr (...);
...
}
Then at the top of apache/request.scm, you can call this using either
load-extension or the dynamic-* functions:
(define-module (apache request)
...)
(load-extension "libmg" "mg_register_apache_request_primitives")
Does this cover everything, and would you mind if I reworked this into
another example for the manual?
Regards,
Neil
- What replaces scm_register_module_xxx (Doc update?), rm, 2002/08/08
- Re: What replaces scm_register_module_xxx (Doc update?), Dale P. Smith, 2002/08/08
- Re: What replaces scm_register_module_xxx (Doc update?), Dale P. Smith, 2002/08/08
- Re: What replaces scm_register_module_xxx (Doc update?), Rob Browning, 2002/08/08
- Re: What replaces scm_register_module_xxx (Doc update?), Marius Vollmer, 2002/08/08
- Re: What replaces scm_register_module_xxx (Doc update?), Neil Jerram, 2002/08/08
- Re: What replaces scm_register_module_xxx (Doc update?), rm, 2002/08/09
- Re: What replaces scm_register_module_xxx (Doc update?),
Neil Jerram <=
- Re: What replaces scm_register_module_xxx (Doc update?), rm, 2002/08/19
- Re: What replaces scm_register_module_xxx (Doc update?), Matthias Koeppe, 2002/08/09
- Re: What replaces scm_register_module_xxx (Doc update?), rm, 2002/08/09
- Re: What replaces scm_register_module_xxx (Doc update?), Matthias Koeppe, 2002/08/09
- Re: What replaces scm_register_module_xxx (Doc update?), rm, 2002/08/09
- Re: What replaces scm_register_module_xxx (Doc update?), Marius Vollmer, 2002/08/10
- Re: What replaces scm_register_module_xxx (Doc update?), Marius Vollmer, 2002/08/11
- Re: What replaces scm_register_module_xxx (Doc update?), Dirk Herrmann, 2002/08/17
- Re: What replaces scm_register_module_xxx (Doc update?), Neil Jerram, 2002/08/19
- Re: What replaces scm_register_module_xxx (Doc update?), Dirk Herrmann, 2002/08/24