… | |
… | |
228 | our $verbose = $ENV{PERL_ANYEVENT_VERBOSE}*1; |
228 | our $verbose = $ENV{PERL_ANYEVENT_VERBOSE}*1; |
229 | |
229 | |
230 | our @REGISTRY; |
230 | our @REGISTRY; |
231 | |
231 | |
232 | my @models = ( |
232 | my @models = ( |
233 | [Coro::Event:: => AnyEvent::Impl::Coro::], |
233 | [Coro::Event:: => AnyEvent::Impl::Coro::], |
234 | [Event:: => AnyEvent::Impl::Event::], |
234 | [Event:: => AnyEvent::Impl::Event::], |
235 | [Glib:: => AnyEvent::Impl::Glib::], |
235 | [Glib:: => AnyEvent::Impl::Glib::], |
236 | [Tk:: => AnyEvent::Impl::Tk::], |
236 | [Tk:: => AnyEvent::Impl::Tk::], |
237 | [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::], |
237 | [AnyEvent::Impl::Perl:: => AnyEvent::Impl::Perl::], |
238 | ); |
238 | ); |
239 | |
239 | |
240 | our %method = map +($_ => 1), qw(io timer condvar broadcast wait DESTROY); |
240 | our %method = map +($_ => 1), qw(io timer condvar broadcast wait DESTROY); |
241 | |
241 | |
242 | sub AUTOLOAD { |
242 | sub AUTOLOAD { |
243 | $AUTOLOAD =~ s/.*://; |
243 | (my $func = $AUTOLOAD) =~ s/.*://; |
244 | |
244 | |
245 | $method{$AUTOLOAD} |
245 | $method{$func} |
246 | or croak "$AUTOLOAD: not a valid method for AnyEvent objects"; |
246 | or croak "$func: not a valid method for AnyEvent objects"; |
247 | |
247 | |
248 | unless ($MODEL) { |
248 | unless ($MODEL) { |
249 | # check for already loaded models |
249 | # check for already loaded models |
250 | for (@REGISTRY, @models) { |
250 | for (@REGISTRY, @models) { |
251 | my ($package, $model) = @$_; |
251 | my ($package, $model) = @$_; |
… | |
… | |
276 | } |
276 | } |
277 | |
277 | |
278 | @ISA = $MODEL; |
278 | @ISA = $MODEL; |
279 | |
279 | |
280 | my $class = shift; |
280 | my $class = shift; |
281 | $class->$AUTOLOAD (@_); |
281 | $class->$func (@_); |
282 | } |
282 | } |
283 | |
283 | |
284 | =head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE |
284 | =head1 SUPPLYING YOUR OWN EVENT MODEL INTERFACE |
285 | |
285 | |
286 | If you need to support another event library which isn't directly |
286 | If you need to support another event library which isn't directly |