Author: dylan
Date: 2004-12-17 00:05:29 -0500 (Fri, 17 Dec 2004)
New Revision: 423
Modified:
trunk/main/server/lib/Haver/Server/Plugin.pm
Log:
API changes.
Actually, this maybe should go into common.
Modified: trunk/main/server/lib/Haver/Server/Plugin.pm
===================================================================
--- trunk/main/server/lib/Haver/Server/Plugin.pm 2004-12-17 03:51:19 UTC
(rev 422)
+++ trunk/main/server/lib/Haver/Server/Plugin.pm 2004-12-17 05:05:29 UTC
(rev 423)
@@ -1,4 +1,4 @@
-# vim: set ft=perl ts=4 sw=4:
+# vim: set ft=perl ts=4 sw=4 expandtab ai si sta tw=104:
# Haver::Server::Commands - description
#
# Copyright (C) 2004 Dylan William Hardison.
@@ -22,8 +22,9 @@
use Carp;
use base 'Haver::Base';
+use Haver::Preprocessor;
+
our $VERSION = '0.01';
-my $Kernel = $POE::Kernel::poe_kernel;
sub initialize {
my ($me) = @_;
@@ -32,8 +33,8 @@
croak __PACKAGE__ . " is a virtual base class!";
}
- $me->{provides} = [];
- $me->{states} = {};
+ $me->{provided} = [];
+ $me->{registry} = {};
$me->setup();
@@ -45,35 +46,22 @@
sub setup {
my ($me) = @_;
- $me->provide('on_', $me->states);
}
-sub provide_prefix_both {
- my ($me, $prefix, @states) = @_;
+sub provide {
+ my $me = shift;
- foreach my $state (@states) {
- $me->provide("$prefix$state");
- }
+ foreach my $thing (@_) {
+ # ASSERT: $thing eq 'ARRAY' or not ref $thing;
+ push(@{ $me->{provided} }, ref $thing ? $thing : [ $thing ]);
+ }
}
-sub provide_prefix {
- my ($me, $prefix, @states) = @_;
-
- foreach my $state (@states) {
- $me->provide($state, "$prefix$state");
- }
+sub provided {
+ my $me = shift;
+ return @{ $me->{provided} };
}
-sub provide {
- my ($me, $state, $method) = @_;
-
- foreach my $state (@states) {
- push @{ $me->{provides} }, [ $state, $method ];
- }
-
- return $me;
-}
-
sub load {
my ($me) = @_;
@@ -92,16 +80,21 @@
}
}
+sub registered {
+ my $me = shift;
+ return keys %{ $me->{registry} };
+}
sub register {
my ($me, $state, $method) = @_;
+ my $kernel = $POE::Kernel::poe_kernel;
- if (exists $me->{states}{$state}) {
+ if (exists $me->{registry}{$state}) {
croak "Can't register $state, already registered!";
}
- $me->{states}{$state} = 1;
- $Kernel->state(
+ $me->{registry}{$state} = 1;
+ $kernel->state(
$state,
not($me->{package}) ? $me : ref($me),
$method,
@@ -110,30 +103,16 @@
sub unregister {
my ($this, $state) = @_;
+ my $kernel = $POE::Kernel::poe_kernel;
- if (not exists $me->{states}{$state}) {
+ if (not exists $me->{registry}{$state}) {
croak "Can't unregister $state, it is not registered!";
}
- delete $me->{states}{$state};
- $Kernel->state($state);
+ delete $me->{registry}{$state};
+ $kernel->state($state);
}
-sub registered {
- my ($me) = @_;
-
- return keys %{ $me->{states} };
-}
-
-# Returns: List of arrays.
-# Example:
-# (['state'], ['state', 'method']);
-sub provided {
- my ($me) = @_;
-
- return @{ $me->{provides} };
-}
-
sub finalize {
my ($me) = @_;