gozer 2004/08/17 16:51:46 Modified: src/docs/2.0/api/Apache Module.pod Log: Various improvements for Apache::Module. Revision Changes Path 1.8 +87 -87 modperl-docs/src/docs/2.0/api/Apache/Module.pod Index: Module.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/api/Apache/Module.pod,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Module.pod 15 Aug 2004 00:52:44 -0000 1.7 +++ Module.pod 17 Aug 2004 23:51:45 -0000 1.8 @@ -8,7 +8,8 @@ =head1 Synopsis use Apache::Module (); - + + # iterate over the whole module list for (my $modp = Apache::Module->top_module; $modp; $modp = $modp->next) { my $name = $modp->name; my $version = $modp->version; @@ -17,23 +18,44 @@ my $commands = $modp->cmds; } + # find a specific module + my $module = Apache::Module::find_linked_module('mod_ssl.c'); + + # access module configuration from a directive sub MyDirective { my ($self, $parms, $args) = @_; my $srv_cfg = Apache::Module->get_config($self, $parms->server); [...] } + + # test if an Apache module is loaded + if (Apache::Module::loaded('mod_ssl.c')) { + [...] + } + + # test if a Perl module is loaded + if (Apache::Module::loaded('Apache::Status')) { + [...] + } + + + + =head1 Description -The API provided by this module opens up access to Apache's internal module -list. It can be used to find and query currently enabled/loaded modules. +C<Apache::Module> provides the Perl API for creating and working with +Apache modules See L<Apache Server Configuration Customization in Perl|docs::2.0::user::config::custom>. + + + =head1 API C<Apache::Module> provides the following functions and/or methods: @@ -45,17 +67,17 @@ =head2 C<cmds> -Get an C<L<Apache::Command|docs::2.0::api::Apache::Command>> object +The C<L<Apache::Command|docs::2.0::api::Apache::Command>> object that describes all of the directives this module defines. - $cmd_rec = $module->cmds(); + $commands = $module->cmds(); =over 4 =item obj: C<$module> ( C<L<Apache::Module object|docs::2.0::api::Apache::Module>> ) -=item ret: C<$cmd_rec> +=item ret: C<$commands> ( C<L<Apache::Command object|docs::2.0::api::Apache::Command>> ) =item since: 1.99_12 @@ -71,25 +93,34 @@ =head2 C<get_config> Retrieves a module's configuration. Used by configuration directives. - - $cfg = Apache::Module->get_config($self, $parms->server); - $cfg = Apache::Module->get_config($self, $r->server, $r->per_dir_config); + + $cfg = Apache::Module->get_config($class, $server, [$dir_config]); + $cfg = $self->get_config($server, [$dir_config]); =over 4 -=item obj: C<$self> ( string or ref ) +=item obj: C<$module> +( C<L<Apache::Module object|docs::2.0::api::Apache::Module>> ) -The name of the Perl module this configuration is for +=item arg1: C<$class> ( string ) -=item obj: C<$server> +The perl package this configuration is for + +=item arg1: C<$server> ( C<L<Apache::ServerRec object|docs::2.0::api::Apache::ServerRec>> ) -=item obj: C<$dir_config> +The current server, typically C<$r-E<gt>server> or C<$parms-E<gt>server> + +=item opt arg1: C<$dir_config> ( C<L<Apache::ConfVector object|docs::2.0::api::Apache::ConfVector>> ) -=item ret: C<$cfg> (HASH) +By default, the configuration returned is the server level one. To retrieve +the per directory configuration, use C<$r-E<gt>per_dir_config> as a last +argument. -The hash holding the module configuration data. +=item ret: C<$cfg> (HASH reference) + +A reference to the hash holding the module configuration data. =back @@ -104,18 +135,18 @@ Find a module based on the name of the module - $modp = Apache::Module::find_linked_module($name); + $module = Apache::Module::find_linked_module($name); =over 4 -=item obj: C<$name> ( string ) +=item arg1: C<$name> ( string ) -the name of the module +The name of the module ending in C<.c> -=item ret: C<$modp> +=item ret: C<$module> ( C<L<Apache::Module object|docs::2.0::api::Apache::Module>> ) -the module structure if found, undef otherwise +The module object if found, undef otherwise =item since: 1.99_12 @@ -129,30 +160,51 @@ Determines if a certain module is loaded - if (Apache::Module->loaded($module)) { - [...] - } - - if (Apache::Module->loaded('Apache::Status')) { - [...] - } - -The argument to this function can be many things. If the module ends in -'.c', true will be returned if that module is loaded If the module ends -in '.so', true will be returned if that module is loaded and was loaded -as a DSO with LoadModule. Otherwise, true will be returned if that Perl -module is loaded. + $loaded = Apache::Module->loaded($module); =over 4 =item name: C<$module> ( string ) -the name of the module +The name of the module to search for. + +If C<$module> ends with C<.c>, search all the modules, +statically compiled and dynamically loaded. -=item ret: ( boolean ) +If C<$module> ends with C<.so>, search only the dynamically +loaded modules. + +If C<$module> doesn't contain a C<.>, search the loaded Perl +modules. + +=item ret: C<$loaded> ( boolean ) + +Returns true if the module is loaded, false otherwise. =back +For example, to test if this server supports ssl: + + if(Apache::Module::loaded('mod_ssl.c')) { + [...] + } + +To test is this server dynamically loaded mod_perl: + + if(Apache::Module::loaded('mod_perl.so')) { + [...] + } + +To test if C<L<Apache::Status>> is loaded: + + if(Apache::Module::loaded('Apache::Status')) { + [...] + } + + + + + =head2 C<minor_version> API minor version. Provides API feature milestones. Not checked @@ -234,58 +286,6 @@ =item since: 1.99_12 =back - - - - - - - - -=head2 C<remove_loaded_module> - -Remove a module from the chained modules list and the list of loaded -modules - - $module->remove_loaded_module(); - -=over 4 - -=item obj: C<$module> -( C<L<Apache::Module object|docs::2.0::api::Apache::Module>> ) - - -=item ret: no return value - -=item since: 1.99_12 - -=back - - - -=head2 C<remove_module> - -Remove a module from the server. There are some caveats: -when the module is removed, its slot is lost so all the current -per-dir and per-server configurations are invalid. So we should -only ever call this function when you are invalidating almost -all our current data. I.e. when doing a restart. - - $module->remove_module(); - -=over 4 - -=item obj: C<$module> -( C<L<Apache::Module object|docs::2.0::api::Apache::Module>> ) - -the module structure of the module to remove - -=item ret: no return value - -=item since: 1.99_12 - -=back -
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]