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();


Reply via email to