Author: dylan
Date: 2004-10-26 00:14:54 -0400 (Tue, 26 Oct 2004)
New Revision: 408

Modified:
   trunk/
   trunk/main/server/lib/Haver/Server/Commands.pm
   trunk/main/server/lib/Haver/Server/Commands/Connection.pm
   trunk/main/server/lib/Haver/Server/Plugin.pm
Log:
 ----------------------------------------------------------------------
 [EMAIL PROTECTED]:  dylan | 2004-10-25T22:04:51.497080Z
 local copy.
 ----------------------------------------------------------------------
 [EMAIL PROTECTED]:  dylan | 2004-10-26T04:13:38.389246Z
 A few nit-picks.
 ----------------------------------------------------------------------



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
   + 27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238

Modified: trunk/main/server/lib/Haver/Server/Commands/Connection.pm
===================================================================
--- trunk/main/server/lib/Haver/Server/Commands/Connection.pm   2004-10-25 
21:57:05 UTC (rev 407)
+++ trunk/main/server/lib/Haver/Server/Commands/Connection.pm   2004-10-26 
04:14:54 UTC (rev 408)
@@ -23,25 +23,28 @@
 use Haver::Formats qw( :duration   );
 use Digest::SHA1   qw( sha1_base64 );
 use Haver::Server::Registry qw( $Registry );
-
 use base 'Haver::Server::Commands';
 
 our $VERSION = '0.01';
 
-sub setup {
-       my $me = shift;
-
-       $me->SUPER::setup();
-
-       foreach my $state (qw(want accept auth reject unknown_cmd init 
timeout)) {
-               $me->provide($state, "on_$state");
-       }
-
+sub states {
+       qw(
+               want
+               accept
+               auth
+               unknown_cmd
+               init
+               timeout
+       );
 }
 
 sub commands {
        qw(
-               HAVER IDENT CANT AUTH AUTH:PASS
+               HAVER
+               IDENT
+               CANT
+               AUTH
+               AUTH:PASS
        );
 }
 
@@ -55,9 +58,7 @@
        }
        
        eval {
-                       $heap->{client}->put(['HAVER',
-                       "Haver::Server/$Haver::Server::VERSION",
-               ]);
+               $heap->{client}->put(['HAVER', 
"Haver::Server/$Haver::Server::VERSION"]);
        };
        $me->{version} = $client;
        $kernel->yield('want', 'IDENT');
@@ -96,7 +97,8 @@
                $kernel->yield('want', 'IDENT');
                return;
        }
-       
+
+       # Check if we already have a user by that name.
        if ($Registry->contains('user', $id)) {
                $kernel->yield('fail', 'IDENT', 'used.id', [$id]);
                $kernel->yield('want', 'IDENT');
@@ -127,13 +129,12 @@
                return;
        }
        
-       if ($method eq 'pass') {
+       if ($method eq 'PASS') {
                $kernel->yield('want', 'AUTH:PASS');
        } else {
                $kernel->yield('fail', 'AUTH', 'unknown.method', [$method]);
                $kernel->yield('want', 'IDENT');
-       }
-       
+       }       
 }
 
 sub cmd_AUTH_PASS {
@@ -198,7 +199,7 @@
                Login     => sub {
                        since($login_time);
                },
-               _lastmsg => time,
+               _lastmsg => $login_time,
                Idle      => sub {
                        my ($u) = @_;
                        since($u->get('_lastmsg'));
@@ -210,8 +211,4 @@
        $heap->{client}->put(['ACCEPT', $uid]);
 }
 
-
-
-
-
 1;

Modified: trunk/main/server/lib/Haver/Server/Commands.pm
===================================================================
--- trunk/main/server/lib/Haver/Server/Commands.pm      2004-10-25 21:57:05 UTC 
(rev 407)
+++ trunk/main/server/lib/Haver/Server/Commands.pm      2004-10-26 04:14:54 UTC 
(rev 408)
@@ -25,11 +25,12 @@
 sub setup {
        my $me = shift;
 
-       foreach my $cmd ($me->commands) {
-               my $method = $cmd;
-               $method =~ s/:/_/g;
-               $me->provide("cmd_$cmd", "cmd_$method");
+       if (ref($me) eq __PACKAGE__) {
+               croak __PACKAGE__ . " is a virtual base class!";
        }
+
+       $me->SUPER::setup();
+       $me->provide_prefix_both('cmd_', $me->commands);
 }
 
 

Modified: trunk/main/server/lib/Haver/Server/Plugin.pm
===================================================================
--- trunk/main/server/lib/Haver/Server/Plugin.pm        2004-10-25 21:57:05 UTC 
(rev 407)
+++ trunk/main/server/lib/Haver/Server/Plugin.pm        2004-10-26 04:14:54 UTC 
(rev 408)
@@ -19,6 +19,7 @@
 package Haver::Server::Plugin;
 use strict;
 use warnings;
+use Carp;
 use base 'Haver::Base';
 
 our $VERSION = '0.01';
@@ -27,6 +28,10 @@
 sub initialize {
        my ($me) = @_;
 
+       if (ref($me) eq __PACKAGE__) {
+               croak __PACKAGE__ . " is a virtual base class!";
+       }
+
        $me->{provides} = [];
        $me->{states}   = {};
 
@@ -37,7 +42,28 @@
        }
 }
 
+sub setup {
+       my ($me) = @_;
 
+       $me->provide('on_', $me->states);
+}
+
+sub provide_prefix_both {
+       my ($me, $prefix, @states) = @_;
+
+       foreach my $state (@states) {
+               $me->provide("$prefix$state");
+       }
+}
+
+sub provide_prefix {
+       my ($me, $prefix, @states) = @_;
+
+       foreach my $state (@states) {
+               $me->provide($state, "$prefix$state");
+       }
+}
+
 sub provide {
        my ($me, $state, $method) = @_;
 


Reply via email to