in reply to Re^2: Telling POE to ignore a filehandle for garbage collection purposes?
in thread Telling POE to ignore a filehandle for garbage collection purposes?

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!
  • Comment on Re^3: Telling POE to ignore a filehandle for garbage collection purposes?
  • Download Code