Author: dylan
Date: 2005-06-25 00:25:22 -0400 (Sat, 25 Jun 2005)
New Revision: 817
Modified:
trunk/
trunk/perl/server/lib/Haver/Server.pm
trunk/perl/server/lib/Haver/Server/Config.pm
trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm
trunk/perl/server/lib/Haver/Server/Store.pm
trunk/perl/server/lib/Haver/Server/Talker.pm
Log:
[EMAIL PROTECTED]: dylan | 2005-06-25 00:25:10 -0400
API changes in Config; must call load() now.
More debugging prints.
Entity::Lobby now stores any channels it contains, as well as loading them.
Store now passes itself to the entity's dump() method to facilitate
Entity::Lobby's
behavior. Talker now uses the Entity::* list() and get() methods rather than
contents()
and fetch(), as the later two are deprecated.
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1176
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
+ 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43089
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk:11166
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local/trunk-merge-10131:11178
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1181
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
Modified: trunk/perl/server/lib/Haver/Server/Config.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Config.pm 2005-06-25 03:57:07 UTC
(rev 816)
+++ trunk/perl/server/lib/Haver/Server/Config.pm 2005-06-25 04:25:22 UTC
(rev 817)
@@ -7,7 +7,6 @@
use Haver::Config -base;
our $VERSION = 0.01;
-our $File = 'haverd.yml';
our $Merge = {
listen => [
{
@@ -21,10 +20,6 @@
sub initialize {
my $self = shift;
- if (not $self->file) {
- $self->file($File);
- }
- $self->load($self->file);
$self->merge($Merge);
}
Modified: trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm 2005-06-25 03:57:07 UTC
(rev 816)
+++ trunk/perl/server/lib/Haver/Server/Entity/Lobby.pm 2005-06-25 04:25:22 UTC
(rev 817)
@@ -17,10 +17,17 @@
}
sub dump {
- my ($self) = shift;
+ my ($self, $store) = @_;
my $data = super;
- $data->{channels} = $self->names('channel');
+ my @chans = $self->list('channel');
+ my @names;
+
+ foreach my $chan (@chans) {
+ $store->insert($chan);
+ push @names, $chan->name;
+ }
+ $data->{channels} = [EMAIL PROTECTED];
return $data;
}
Modified: trunk/perl/server/lib/Haver/Server/Store.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Store.pm 2005-06-25 03:57:07 UTC (rev
816)
+++ trunk/perl/server/lib/Haver/Server/Store.pm 2005-06-25 04:25:22 UTC (rev
817)
@@ -32,7 +32,7 @@
sub insert {
my ($self, $entity) = @_;
- my $data = $entity->dump;
+ my $data = $entity->dump($self);
my $file = $self->filename($entity->namespace, $entity->name);
$self->_save_file($file, ref($entity), $data);
@@ -59,7 +59,7 @@
sub filename {
my ($self, $ns, $name) = @_;
- File::Spec->catfile($self->storedir, $ns, $name)
+ File::Spec->catfile($self->storedir, $ns, lc $name)
}
sub dirname {
Modified: trunk/perl/server/lib/Haver/Server/Talker.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Talker.pm 2005-06-25 03:57:07 UTC
(rev 816)
+++ trunk/perl/server/lib/Haver/Server/Talker.pm 2005-06-25 04:25:22 UTC
(rev 817)
@@ -133,9 +133,9 @@
$lobby->remove($user->namespace, $user->name);
my %seen;
foreach my $name ($user->channels) {
- my $chan = $lobby->fetch('channel', $name);
+ my $chan = $lobby->get('channel', $name);
$user->part($chan);
- foreach my $u ($chan->contents('user')) {
+ foreach my $u ($chan->list('user')) {
unless ($seen{ $u->name }++) {
$u->put(['QUIT', $user->name,
@why]);
}
Modified: trunk/perl/server/lib/Haver/Server.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server.pm 2005-06-25 03:57:07 UTC (rev
816)
+++ trunk/perl/server/lib/Haver/Server.pm 2005-06-25 04:25:22 UTC (rev
817)
@@ -27,9 +27,11 @@
use Haver::Server::Entity::Channel;
use Haver::Server::Entity::Lobby;
use Haver::Server::Config;
+use Haver::Server::Store;
our $VERSION = 0.08;
our $Alias = 'Server';
+our $Config = 'haverd.yml';
sub states {
return [qw(
@@ -38,7 +40,7 @@
}
sub create {
- my $self = shift;
+ my $this = shift;
Log('debug', "Booting Haver::Server v$VERSION");
super;
}
@@ -48,23 +50,53 @@
$kernel->alias_set($Alias);
Log('debug', "$Alias starts.");
- my $config = new Haver::Server::Config;
- my $lobby = new Haver::Server::Entity::Lobby;
+ my $config = new Haver::Server::Config (
+ load => $opt->{config} || $Config,
+ );
+
+ # Configure the Store.
+ my $dir = $config->storedir;
+ mkdir $dir or die "mkdir $dir: $!" unless -e $dir;
+ my $store = new Haver::Server::Store (
+ storedir => $dir,
+ );
+
+ # Add &lobby to the Store if not already there.
+ unless ($store->exists('lobby', '&lobby')) {
+ my $lobby = new Haver::Server::Entity::Lobby;
+ $store->insert($lobby);
+ }
+
+ # Fetch the lobby
+ Log('debug', "Fetching &lobby");
+ my $lobby = $store->fetch('lobby', '&lobby');
+
+ Log('debug', "Channels: ", join(", ", $lobby->names('channel')));
+
create Haver::Server::Listener (
config => $config,
talker => sub {
create Haver::Server::Talker(@_,
lobby => $lobby,
config => $config,
+ store => $store,
)
}
);
$heap->{config} = $config;
+ $heap->{store} = $store;
+ $heap->{lobby} = $lobby;
}
sub _stop {
my ($kernel, $heap) = @_[KERNEL, HEAP];
+
+ Log('debug', "Saving config");
+ $heap->{config}->save;
+ Log('debug', "Storing &lobby");
+ $heap->{store}->insert($heap->{lobby});
+
Log('debug', "$Alias stops");
}