Author: dylan
Date: 2005-06-19 03:51:01 -0400 (Sun, 19 Jun 2005)
New Revision: 773

Modified:
   trunk/
   trunk/main/server/lib/Haver/Server/Talker.pm
   trunk/main/server/lib/Haver/Server/Wheel/Main.pm
Log:
 [EMAIL PROTECTED]:  dylan | 2005-06-19 03:50:52 -0400
 added LIST; fixed a bug where users were not removed from the Lobby.
 Implemation note: &lobby does not show up in the contents of itself.
 This is a) easier to code and b) the expected behavior (at least for me).
 
 



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43050
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:1099
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
   + 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/havercurs-objc:43050
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:1101
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238

Modified: trunk/main/server/lib/Haver/Server/Talker.pm
===================================================================
--- trunk/main/server/lib/Haver/Server/Talker.pm        2005-06-19 07:36:52 UTC 
(rev 772)
+++ trunk/main/server/lib/Haver/Server/Talker.pm        2005-06-19 07:51:01 UTC 
(rev 773)
@@ -127,6 +127,9 @@
        Log('info', "Shutting down talker for $heap->{address}:$heap->{port}");
        
        $heap->{shutdown} = 1;
+       if (my $user = $heap->{user}) {
+               $lobby->remove($user->namespace, $user->name);
+       }
        unless ($heap->{error}) {
                eval {
                        my $user = delete $heap->{user};
@@ -145,9 +148,6 @@
                Log('error', $@) if $@;
        }
 
-       if (my $user = $heap->{user}) {
-               $lobby->remove($user->namespace, $user->name);
-       }
        $kernel->alarm_remove_all();
 }
 

Modified: trunk/main/server/lib/Haver/Server/Wheel/Main.pm
===================================================================
--- trunk/main/server/lib/Haver/Server/Wheel/Main.pm    2005-06-19 07:36:52 UTC 
(rev 772)
+++ trunk/main/server/lib/Haver/Server/Wheel/Main.pm    2005-06-19 07:51:01 UTC 
(rev 773)
@@ -15,6 +15,7 @@
        $self->msg('OPEN');
        $self->msg('PART');
        $self->msg('BYE');
+       $self->msg('LIST');
 }
 
 sub msg_JOIN {
@@ -139,6 +140,28 @@
        $chan->put(['IN', $chan->name, $user->name, $type, @$args]);
 }
 
+sub msg_LIST {
+       my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
+       my $lobby = $heap->{lobby};
+       my ($name, $ns) = @$args;
+       
+       unless (is_valid_name($name)) {
+               $kernel->yield('fail', "invalid.name", $name);
+               return;
+       }
+       unless ($lobby->contains('channel', $name)) {
+               $kernel->yield('fail', 'unknown.channel');
+               return;
+       }
+       unless ($ns and ($ns eq 'user' or $ns eq 'channel' or $ns eq 
'service')) {
+               $kernel->yield('fail', 'unknown.namespace', $ns);
+               return;
+       }
+       my $chan = $lobby->fetch('channel', $name);
+       my @items = $chan->contents($ns);
+       $heap->{client}->put(['LIST', $name, $ns, map { $_->name } @items]);
+}
+
 sub msg_BYE {
        my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
        $kernel->yield('shutdown', 'bye', $args->[0]);


Reply via email to