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) = @_;