From 333855e79aa65a8fd9ab9f855f60c225fdcd9c22 Mon Sep 17 00:00:00 2001 From: Joshua Roys Date: Tue, 19 Aug 2008 04:43:42 -0400 Subject: [PATCH] Make outgoing messages auto-load required PWP classes --- lib/VCS/Git/Torrent/PWP/Message.pm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/VCS/Git/Torrent/PWP/Message.pm b/lib/VCS/Git/Torrent/PWP/Message.pm index 2d41d74..14d35ed 100644 --- a/lib/VCS/Git/Torrent/PWP/Message.pm +++ b/lib/VCS/Git/Torrent/PWP/Message.pm @@ -125,6 +125,15 @@ requires 'unpack_payload'; requires 'args'; +my %LOADED; + +sub _require { + my $class = shift; + $class =~ s{::}{/}g; + $class .= ".pm"; + require $class unless exists $INC{$class}; +} + =head2 create_io($io) Read a PWP message from $io. @@ -153,13 +162,15 @@ sub create_io { die "Expected ".$_length." bytes, got ".$bytes_read; } + _require $class + unless $LOADED{$class}++; + $class->new( length => $_length, payload => $payload ); } requires 'action'; -my %LOADED; no warnings 'redefine'; =head2 class_for($type) @@ -181,13 +192,6 @@ Create a PWP message to send over the network. =cut -sub _require { - my $class = shift; - $class =~ s{::}{/}g; - $class .= ".pm"; - require $class unless exists $INC{$class}; -} - sub create { my $class = (shift)->class_for(shift); confess "wth?" unless $class; -- 2.11.4.GIT