[poe-commits] poe/POE Kernel.pm,1.269,1.270
Brought to you by:
rcaputo
From: <rc...@us...> - 2003-12-13 05:37:32
|
Update of /cvsroot/poe/poe/POE In directory sc8-pr-cvs1:/tmp/cvs-serv27611/POE Modified Files: Kernel.pm Log Message: Event loops. Look for POE::XS::Loop::$something before POE::Loop::$something. It should be possible to include arbitrary event loops now (Gtk2, for example). Likewise, now people can start writing XS versions of event loops. Index: Kernel.pm =================================================================== RCS file: /cvsroot/poe/poe/POE/Kernel.pm,v retrieving revision 1.269 retrieving revision 1.270 diff -C2 -d -r1.269 -r1.270 *** Kernel.pm 12 Dec 2003 04:05:05 -0000 1.269 --- Kernel.pm 13 Dec 2003 05:37:29 -0000 1.270 *************** *** 335,344 **** foreach my $file (keys %INC) { my $pared_file = $file; $pared_file =~ s/^IO\///; ! next unless -e "$base_path/$pared_file"; my $module = $pared_file; substr($module, -3) = ""; if (defined $used_first) { die( --- 335,367 ---- foreach my $file (keys %INC) { my $pared_file = $file; + # Remove IO/ so we can load POE::Loop::Poll instead of + # POE::Loop::IO/Poll. + # + # TODO - A better convention would be to replace the path + # separators with hyphens and rename Loop/Poll.pm to + # Loop/IO-Poll.pm. Foresight > Hindsight. $pared_file =~ s/^IO\///; ! next if $pared_file =~ /\//; my $module = $pared_file; substr($module, -3) = ""; + # Modules can die with "not really dying" if they've loaded + # something else. This exception prevents the rest of the + # originally used module from being parsed, so the module it's + # handed off to takes over. + + # Try for the XS version first. If it fails, try the plain + # version. If that fails, we're up a creek. + my $mod = "POE::XS::Loop::$module"; + eval "require $mod"; + if ($@ =~ /Can't locate/) { + $mod = "POE::Loop::$module"; + eval "require $mod"; + } + + next if $@ =~ /Can't locate/; + die if $@ and $@ !~ /not really dying/; + if (defined $used_first) { die( *************** *** 350,360 **** } - # Modules can die with "not really dying" if they've loaded - # something else. - eval "require POE::Loop::$module;"; - die if $@ and $@ !~ /not really dying/; - eval "POE::Loop::$module->import();"; - die if $@; - $used_first = $module; } --- 373,376 ---- *************** *** 367,374 **** } ! ############################################################################### # Include resource modules here. Later, when we have the option of XS # versions, we'll adapt this to include them if they're available. - ############################################################################### use POE::Resources; --- 383,389 ---- } ! #------------------------------------------------------------------------------ # Include resource modules here. Later, when we have the option of XS # versions, we'll adapt this to include them if they're available. use POE::Resources; |