Chris Jacobson wrote:
Hello,

I am attempting to write a system which allows output filters to be dynamicaly pushed on the output filter stack at the end of a PerlResponseHandler.

That doesn't make any sense, Chris. By the end of the PerlResponseHandler the response is gone and there is nothing to filter. You can only add it *before* you start sending any data.

These output filters are generated from a master factory object.
....
my $FilterType = "Foo";
my $FilterObject = My::FilterFactory->new($FilterType); # Class::Factory subclassed module # This will generate a My::Filter::Foo object which inherits methods from the factory object and overrides them as necessary $r->add_output_filter($FilterObject->handler); # This call will Seg Fault the server

You can't call the filter, you need to pass the name of the subroutine or a reference to it. Please see:
http://perl.apache.org/docs/2.0/api/Apache2/Filter.html#C_add_output_filter_

The fact that you get a segfault is not good, we should take care of that. regardless you code is incorrect.

I can not seem to get anything to work here except a simple coderef. This defeats my entire purpose of dynamically pushing filter handlers, if they can only be a simple subroutine. Is there any possible way to use an object as a filter handler, or can it only be a monolithic subroutine code reference?

Filter handlers are very similar to all other mod_perl handlers, so whatever works for mod_perl handlers works should work for filters. I haven't tried using objects as filter handlers. May be in a few days unless someone beats me to it.

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

Reply via email to