geoff       2003/11/25 10:56:34

  Modified:    xs/maps  apache_functions.map modperl_functions.map
               xs/tables/current/ModPerl FunctionTable.pm
  Added:       t/response/TestAPI mpm_query.pm show_mpm.pm
               xs/Apache/MPM Apache__MPM.h
  Log:
  add Apache::MPM class, along with show_mpm() and mpm_query() functions
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/response/TestAPI/mpm_query.pm
  
  Index: mpm_query.pm
  ===================================================================
  package TestAPI::mpm_query;
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestUtil;
  use Apache::TestTrace;
  
  use Apache::MPM ();
  
  use Apache::Const -compile => qw(OK :mpmq);
  
  sub handler {
      my $r = shift;
  
      plan $r, tests => 3;
  
      # ok, this isn't particularly pretty, but I can't think
      # of a better way to do it
      # all of these attributes I pulled right from the C sources
  
      my $mpm = lc Apache::MPM::show_mpm;
  
      if ($mpm eq 'prefork') {
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_THREADED);
  
              ok t_cmp(Apache::MPMQ_NOT_SUPPORTED,
                       $query,
                       "MPMQ_IS_THREADED ($mpm)");
          }
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_FORKED);
  
              ok t_cmp(Apache::MPMQ_DYNAMIC,
                       $query,
                       "MPMQ_IS_FORKED ($mpm)");
          }
  
          # the underlying call for Apache::MPM_IS_THREADED is ap_mpm_query
          # so might as well test is here...
  
          t_debug('Apache::MPM_IS_THREADED returned ' . Apache::MPM_IS_THREADED);
          ok (! Apache::MPM_IS_THREADED);
  
      }
      elsif ($mpm eq 'worker') {
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_THREADED);
  
              ok t_cmp(Apache::MPMQ_STATIC,
                       $query,
                       "MPMQ_IS_THREADED ($mpm)");
          }
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_FORKED);
  
              ok t_cmp(Apache::MPMQ_DYNAMIC,
                       $query,
                       "MPMQ_IS_FORKED ($mpm)");
          }
  
          t_debug('Apache::MPM_IS_THREADED returned ' . Apache::MPM_IS_THREADED);
          ok (Apache::MPM_IS_THREADED);
  
      }
      elsif ($mpm eq 'leader') {
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_THREADED);
  
              ok t_cmp(Apache::MPMQ_STATIC,
                       $query,
                       "MPMQ_IS_THREADED ($mpm)");
          }
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_FORKED);
  
              ok t_cmp(Apache::MPMQ_DYNAMIC,
                       $query,
                       "MPMQ_IS_FORKED ($mpm)");
          }
  
          t_debug('Apache::MPM_IS_THREADED returned ' . Apache::MPM_IS_THREADED);
          ok (Apache::MPM_IS_THREADED);
  
      }
      elsif ($mpm eq 'winnt') {
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_THREADED);
  
              ok t_cmp(Apache::MPMQ_STATIC,
                       $query,
                       "MPMQ_IS_THREADED ($mpm)");
          }
  
          {
              my $query = Apache::MPM::mpm_query(Apache::MPMQ_IS_FORKED);
  
              ok t_cmp(Apache::MPMQ_NOT_SUPPORTED,
                       $query,
                       "MPMQ_IS_FORKED ($mpm)");
          }
  
          t_debug('Apache::MPM_IS_THREADED returned ' . Apache::MPM_IS_THREADED);
          ok (Apache::MPM_IS_THREADED);
  
      }
      else {
          skip "skipping MPMQ_IS_THREADED test for $mpm MPM", 0;
          skip "skipping MPMQ_IS_FORKED test for $mpm MPM", 0;
          skip "skipping Apache::MPM_IS_THREADED test for $mpm MPM", 0;
      }
  
      Apache::OK;
  }
  
  1;
  
  
  
  1.1                  modperl-2.0/t/response/TestAPI/show_mpm.pm
  
  Index: show_mpm.pm
  ===================================================================
  package TestAPI::show_mpm;
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestUtil;
  
  use Apache::MPM ();
  
  use Apache::Const -compile => 'OK';
  
  sub handler {
      my $r = shift;
  
      plan $r, tests => 1;
  
      my $mpm = Apache::Test::config->{server}->{mpm};
  
      ok t_cmp(qr!$mpm!i,
               Apache::MPM::show_mpm,
               'Apache::MPM::show_mpm()');
  
      Apache::OK;
  }
  
  1;
  
  
  
  1.1                  modperl-2.0/xs/Apache/MPM/Apache__MPM.h
  
  Index: Apache__MPM.h
  ===================================================================
  static MP_INLINE
  int mpxs_Apache__MPM_mpm_query(int query)
  {
      int mpm_query_info;
  
      apr_status_t retval = ap_mpm_query(query, &mpm_query_info);
  
      if (retval == APR_SUCCESS) {
          return mpm_query_info;
      }
  
      /* XXX hmm... what to do here.  die?
       * APR_ENOTIMPL should be sufficiently large
       * that comparison tests fail... I think...
       */
      return (int) retval;
  }
  
  
  
  1.65      +23 -23    modperl-2.0/xs/maps/apache_functions.map
  
  Index: apache_functions.map
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- apache_functions.map      12 Jun 2003 23:27:03 -0000      1.64
  +++ apache_functions.map      25 Nov 2003 18:56:34 -0000      1.65
  @@ -488,28 +488,28 @@
   !MODULE=Apache::XML
    ap_xml_parse_input
   
  -!MODULE=Apache::MPM
  +MODULE=Apache::MPM
    ap_mpm_query
   >ap_mpm_run
  - ap_os_create_privileged_process
  - ap_wait_or_timeout
  - ap_graceful_stop_signalled
  - ap_process_child_status
  - ap_reclaim_child_processes
  - ap_sock_disable_nagle
  - ap_gname2id
  - ap_uname2id
  - ap_lingering_close
  - ap_mpm_pod_check
  - ap_mpm_pod_close
  - ap_mpm_pod_killpg
  - ap_mpm_pod_open
  - ap_mpm_pod_signal
  - ap_mpm_set_accept_lock_mech
  - ap_mpm_set_coredumpdir
  - ap_mpm_set_lockfile
  - ap_mpm_set_max_requests
  - ap_mpm_set_pidfile
  - ap_mpm_set_scoreboard
  -?ap_show_mpm
  - ap_listen_pre_config
  +?ap_os_create_privileged_process
  +?ap_wait_or_timeout
  +?ap_graceful_stop_signalled
  +?ap_process_child_status
  +?ap_reclaim_child_processes
  +?ap_sock_disable_nagle
  +?ap_gname2id
  +?ap_uname2id
  +?ap_lingering_close
  +?ap_mpm_pod_check
  +?ap_mpm_pod_close
  +?ap_mpm_pod_killpg
  +?ap_mpm_pod_open
  +?ap_mpm_pod_signal
  +?ap_mpm_set_accept_lock_mech
  +?ap_mpm_set_coredumpdir
  +?ap_mpm_set_lockfile
  +?ap_mpm_set_max_requests
  +?ap_mpm_set_pidfile
  +?ap_mpm_set_scoreboard
  + ap_show_mpm
  +?ap_listen_pre_config
  
  
  
  1.60      +3 -0      modperl-2.0/xs/maps/modperl_functions.map
  
  Index: modperl_functions.map
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- modperl_functions.map     6 Nov 2003 11:22:02 -0000       1.59
  +++ modperl_functions.map     25 Nov 2003 18:56:34 -0000      1.60
  @@ -134,3 +134,6 @@
   
   MODULE=Apache::CmdParms
    mpxs_Apache__CmdParms_info
  +
  +MODULE=Apache::MPM
  + mpxs_Apache__MPM_mpm_query
  
  
  
  1.131     +10 -0     modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
  
  Index: FunctionTable.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
  retrieving revision 1.130
  retrieving revision 1.131
  diff -u -r1.130 -r1.131
  --- FunctionTable.pm  17 Nov 2003 23:27:11 -0000      1.130
  +++ FunctionTable.pm  25 Nov 2003 18:56:34 -0000      1.131
  @@ -6898,6 +6898,16 @@
         }
       ]
     },
  +  {
  +    'return_type' => 'int',
  +    'name' => 'mpxs_Apache__MPM_mpm_query',
  +    'args' => [
  +      {
  +        'type' => 'int',
  +        'name' => 'query'
  +      }
  +    ]
  +  },
   ];
   
   
  
  
  

Reply via email to