You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@apache.org on 2001/01/21 22:23:01 UTC

cvs commit: modperl-2.0/src/modules/perl modperl_apache_xs.c

dougm       01/01/21 13:23:01

  Modified:    src/modules/perl modperl_apache_xs.c
  Log:
  switchability for testing ap_rwrite
  
  Revision  Changes    Path
  1.4       +26 -0     modperl-2.0/src/modules/perl/modperl_apache_xs.c
  
  Index: modperl_apache_xs.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_apache_xs.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- modperl_apache_xs.c	2001/01/02 06:40:19	1.3
  +++ modperl_apache_xs.c	2001/01/21 21:22:59	1.4
  @@ -13,6 +13,26 @@
           MARK++; \
       }
   
  +#if 0
  +#define MP_USE_AP_RWRITE
  +#endif
  +
  +#ifdef MP_USE_AP_RWRITE
  +
  +#define mpxs_ap_rwrite(r,buf,len) \
  +ap_rwrite(buf, len, r)
  +
  +#define mpxs_rwrite_loop(func,obj) \
  +    while (MARK <= SP) { \
  +        STRLEN len; \
  +        char *buf = SvPV(*MARK, len); \
  +        int wlen = func(obj, buf, len); \
  +        bytes += wlen; \
  +        MARK++; \
  +    }
  +
  +#endif
  +
   /*
    * it is not optimal to create an ap_bucket for each element of @_
    * so we use our own mini-buffer to build up a decent size buffer
  @@ -39,6 +59,7 @@
   MP_INLINE apr_size_t modperl_apache_xs_write(pTHX_ I32 items,
                                                SV **MARK, SV **SP)
   {
  +    modperl_srv_config_t *scfg;
       modperl_request_config_t *rcfg;
       apr_size_t bytes = 0;
       request_rec *r;
  @@ -46,8 +67,13 @@
       mpxs_usage_1(r, "$r->write(...)");
   
       rcfg = modperl_request_config_get(r);
  +    scfg = modperl_srv_config_get(r->server);
   
  +#ifdef MP_USE_AP_RWRITE
  +    mpxs_rwrite_loop(mpxs_ap_rwrite, r);
  +#else
       mpxs_write_loop(modperl_wbucket_write, &rcfg->wbucket);
  +#endif
   
       /* XXX: flush if $| */