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