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 $| */