After some more digging, I've pretty much come to the conclusion that what I'm trying to do can't be done without mucking around with POE internals....
Here is the code I finally came up with, though I would prefer there were a way to do it without the monkey-patch. On the other hand though, monkey-patching seems to be part of the core for POE. :)
# NOTE: This hasn't really had any testing yet... package POE::Resource::Sessions::GCIgnore; use strict; use warnings; our $VERSION = '0.01'; # monkey-patch into POE::Kernel package POE::Kernel; sub _data_ses_collect_garbage { my ( $self, $session ) = @_; # snipping out the ASSERT_DATA/TRACE_REFCOUNT stuff # that was just copied from POE::Resource::Sessions... my $count = $kr_sessions{ $session }->[ SS_REFCOUNT ]; if ( $session->can( 'gc_ignore' ) ) { $count -= $session->gc_ignore; } return if $count > 0; $self->_data_ses_stop( $session ); }
| We're not surrounded, we're in a target-rich environment! |
|---|
In reply to Re^3: Telling POE to ignore a filehandle for garbage collection purposes?
by jasonk
in thread Telling POE to ignore a filehandle for garbage collection purposes?
by jasonk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |