perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: [mp2] one more pass on mp2/apr read() functions
Date Wed, 09 Jun 2004 17:44:10 GMT
Joe Schaefer wrote:
> Stas Bekman <stas@stason.org> writes:
> 
> 
>>Joe Schaefer wrote:
>>
>>>Stas Bekman <stas@stason.org> writes:
>>>
>>>
>>>>Stas Bekman wrote:
>>>>
>>>>
>>>>>It makes the socket read/write loops similar to filter ones:
>>>>>   while ($socket->recv(my $buff, BUFF_LEN)) {
>>>>>       $socket->send($buff);
>>>>>   }
>>>>
>>>>Sounds like a great idea, Stas!
>>>
>>>+1.  It'd be cool if Apache::(Request|Cookie) also took advantage of
>>>APR::Error.
>>
>>It should be trivial to do. just replace Perl_croak calls with
>>modperl_croak(aTHX_ rc, "function name"); and require mod_perl 1.99_14 as a
>>minimal version. that's ofcourse for those places where you have an rc
>>(which must be apr_status_t).
> 
> 
> No good- modperl_croak() is part of modperl.so.  apreq-dev can either
> 
>   1) reimplement it in apreq_xs_postperl.h (maintenance?),
>   2) call Apache::Error::new() from XS (slow when compared to modperl_croak()),
>   3) get mp2 to export that function (eg. in a static library) along with
>      the other APR:: stubs currently provided by modperl.so.

It will be a part of APR as soon as Randy gets things working on win32. The 
patch that I've posted some time ago (and which works fine on unix) has 
perl_croak decoupled from mod_perl.so. So I guess you just need to wait till 
that happens.

>>I'm also going to add a wrapper to replace the crafty
>>
>>  if (ref $@ eq 'Apache::Error' && $@ == APR::TIMEUP) { ... }
>>
>>with:
>>
>>  if (APR::Error::foo($@, APR::TIMEUP)) { ... }
>>
>>Not sure how to call that wrapper, APR::Error::check()?
> 
> 
> Off the top of my head I'd s/foo/isa/ and use something
> like
> 
>   package APR::Error;
>   sub isa {
>     my ($obj, $error_type) = @_;
>     return unless UNIVERSAL::isa($obj, __PACKAGE__);
>     return $obj == $error_type;
>   }

I thought to call it isa(), but I thought it'll be confusing with UNIVERSAL::usa.

> but somehow I'd rather be attaching handlers to 
> exception classes (like Java & C# do), not dispatching
> on the value of $@ directly.

Example?


-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message