Author: dylan
Date: 2005-06-23 06:34:38 -0400 (Thu, 23 Jun 2005)
New Revision: 802
Modified:
trunk/
trunk/perl/server/lib/Haver/Server/Entity.pm
trunk/perl/server/lib/Haver/Server/Entity/Channel.pm
trunk/perl/server/lib/Haver/Server/Entity/Service.pm
trunk/perl/server/lib/Haver/Server/Entity/User.pm
trunk/perl/server/lib/Haver/Server/Talker.pm
Log:
[EMAIL PROTECTED]: dylan | 2005-06-23 05:58:36 -0400
Foobar.
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:1148
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:1150
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
Modified: trunk/perl/server/lib/Haver/Server/Entity/Channel.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Channel.pm 2005-06-23
03:49:50 UTC (rev 801)
+++ trunk/perl/server/lib/Haver/Server/Entity/Channel.pm 2005-06-23
10:34:38 UTC (rev 802)
@@ -30,8 +30,7 @@
my $name = lc $object->name;
croak ref($self) . " can't contain $object!" unless
$self->can_contain($object);
-
-
+
$self->{_contents}{$ns}{$name} = $object;
}
@@ -53,12 +52,22 @@
return delete $self->{_contents}{$ns}{$name};
}
+
sub contents {
my ($self, $ns) = @_;
+ carp "contents() is deprecated. Use list() instead!";
+
+ $self->list($ns);
+}
+
+sub list {
+ my ($self, $ns) = @_;
my @values = ();
if (exists $self->{_contents}{$ns}) {
@values = values %{ $self->{_contents}{$ns} };
+ } else {
+ return ();
}
return wantarray ? @values : [EMAIL PROTECTED];
Modified: trunk/perl/server/lib/Haver/Server/Entity/Service.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Service.pm 2005-06-23
03:49:50 UTC (rev 801)
+++ trunk/perl/server/lib/Haver/Server/Entity/Service.pm 2005-06-23
10:34:38 UTC (rev 802)
@@ -3,8 +3,7 @@
package Haver::Server::Entity::Service;
use strict;
use warnings;
-use Haver::Server::Entity -base;
-use Haver::Server::Avatar -mixin;
+use Haver::Server::Entity::Avatar -base;
const namespace => 'service';
Modified: trunk/perl/server/lib/Haver/Server/Entity/User.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/User.pm 2005-06-23 03:49:50 UTC
(rev 801)
+++ trunk/perl/server/lib/Haver/Server/Entity/User.pm 2005-06-23 10:34:38 UTC
(rev 802)
@@ -3,50 +3,22 @@
package Haver::Server::Entity::User;
use strict;
use warnings;
-use Haver::Server::Entity -base;
-use Haver::Server::Avatar -mixin;
+use Haver::Server::Entity::Avatar -base;
-const namespace => 'user';
-field _channels => {};
-field _friends => {};
+const namespace => 'user';
+field _channels => {};
sub join {
my ($self, $chan) = @_;
$chan->add($self);
- $self->add_channel($chan->name);
+ $self->add_index($chan);
}
sub part {
my ($self, $chan) = @_;
$chan->remove($self->namespace, $self->name);
- $self->remove_channel($chan->name);
+ $self->remove_index($chan);
}
-BEGIN {
- no strict 'refs';
- foreach my $word (qw( channel friend )) {
- my $field = "_$word";
-
- *{"add_$word"} = sub {
- my ($self, $name) = @_;
- $self->{$field}{$name} = 1;
- };
- *{"remove_$word"} = sub {
- my ($self, $name) = @_;
- delete $self->{$field}{$name};
- };
- *{"has_$word"} = sub {
- my ($self, $name) = @_;
- exists $self->{$field}{$name};
- };
- *{$word.'s'} = sub {
- my ($self, $name) = @_;
- my @list = keys %{ $self->{$field} };
- wantarray ? @list : [EMAIL PROTECTED];
- };
- }
-}
-
-
1;
Modified: trunk/perl/server/lib/Haver/Server/Entity.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity.pm 2005-06-23 03:49:50 UTC
(rev 801)
+++ trunk/perl/server/lib/Haver/Server/Entity.pm 2005-06-23 10:34:38 UTC
(rev 802)
@@ -26,4 +26,20 @@
}
+sub load {
+ my ($self, $data) = @_;
+ $self->name($data->{name});
+ $self->attr($data->{attr});
+ return $self;
+}
+
+sub save {
+ my ($self) = @_;
+ return {
+ name => $self->name,
+ attr => $self->attr,
+ };
+}
+
+
1;
Modified: trunk/perl/server/lib/Haver/Server/Talker.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Talker.pm 2005-06-23 03:49:50 UTC
(rev 801)
+++ trunk/perl/server/lib/Haver/Server/Talker.pm 2005-06-23 10:34:38 UTC
(rev 802)
@@ -127,23 +127,25 @@
Log('info', "Shutting down talker for $heap->{address}:$heap->{port}");
$heap->{shutdown} = 1;
- eval {
- if (my $user = $heap->{user}) {
- $lobby->remove($user->namespace, $user->name);
- }
- my $user = delete $heap->{user};
- my %seen;
- foreach my $name ($user->channels) {
- my $chan = $lobby->fetch('channel', $name);
- $user->part($chan);
- foreach my $u ($chan->contents('user')) {
- unless ($seen{ $u->name }++) {
- $u->put(['QUIT', $user->name, @why]);
- }
+ if (not @why) {
+ eval {
+ if (my $user = $heap->{user}) {
+ $lobby->remove($user->namespace, $user->name);
}
- }
- $heap->{client}->put(['BYE', @why]);
- };
+ my $user = delete $heap->{user};
+ my %seen;
+ foreach my $name ($user->channels) {
+ my $chan = $lobby->fetch('channel', $name);
+ $user->part($chan);
+ foreach my $u ($chan->contents('user')) {
+ unless ($seen{ $u->name }++) {
+ $u->put(['QUIT', $user->name,
@why]);
+ }
+ }
+ }
+ $heap->{client}->put(['BYE', @why]);
+ };
+ }
Log('error', $@) if $@;
$kernel->alarm_remove_all();