Author: dylan
Date: 2005-12-10 00:46:31 -0500 (Sat, 10 Dec 2005)
New Revision: 951

Modified:
   trunk/
   trunk/perl/server/TODO
   trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
   trunk/perl/server/lib/Haver/Server/Wheel/Login.pm
   trunk/perl/server/lib/Haver/Server/Wheel/Main.pm
Log:
address is now masked; full-address doesn't exist yet, pending a reworking of 
how "info" works and ACLs.
OPEN/CLOSE should now work as per the specs.
The specs should be updates to reflect what to expect from CLOSE...


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
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/winch/trunk:43192
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1684
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
1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/winch/trunk:43192
27e50396-46e3-0310-8b22-ae223a1f35ce:/local:212
e9404bb1-7af0-0310-a7ff-e22194cd388b:/haver/local:1689
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238

Modified: trunk/perl/server/TODO
===================================================================
--- trunk/perl/server/TODO      2005-12-10 04:58:45 UTC (rev 950)
+++ trunk/perl/server/TODO      2005-12-10 05:46:31 UTC (rev 951)
@@ -1,5 +1,6 @@
 * Integrate the config file stuff. Everything that can be configured should be.
 * Add an unlisten state to the Listener.
 * Add rate limits, using a token bucket (bd_)
+* Add Reaper object, that makes sure an object is returned to the store when 
it is no longer needed.
 * Implement ATTR.
 * Implement ACL.

Modified: trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm 2005-12-10 04:58:45 UTC 
(rev 950)
+++ trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm 2005-12-10 05:46:31 UTC 
(rev 951)
@@ -12,11 +12,23 @@
 field sid      => undef;
 field _access  => {};
 field passcode => undef;
-field address  => '0.0.0.*';
+field full_address  => '0.0.0.0';
 field version  => 'unknown';
 field email    => '';
 field authenticated   => 0;
 
+sub address {
+       my ($self, $addr) = @_;
+
+       if (@_ == 2) {
+               $self->full_address($addr);
+       } else {
+               my @ip = split(/\./, $self->full_address);
+               $ip[3] = '*';
+               join('.', @ip);
+       }
+}
+
 sub initialize {
        my ($self) = @_;
        if (not exists $self->{passcode}) {

Modified: trunk/perl/server/lib/Haver/Server/Wheel/Login.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Login.pm   2005-12-10 04:58:45 UTC 
(rev 950)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Login.pm   2005-12-10 05:46:31 UTC 
(rev 951)
@@ -7,6 +7,7 @@
 use Haver::Server::Wheel -base;
 use Haver::Server::Wheel::Auth;
 use Haver::Server::Wheel::Reg;
+use Haver::Server::Wheel::Attr;
 use Haver::Util qw( :name );
 
 our $VERSION = 0.02;
@@ -111,6 +112,7 @@
        $heap->{loader}->unload_wheel(__PACKAGE__);
        $heap->{loader}->load_wheel('Haver::Server::Wheel::Main');
        $heap->{loader}->load_wheel('Haver::Server::Wheel::Reg');
+       $heap->{loader}->load_wheel('Haver::Server::Wheel::Attr');
 }
 
 

Modified: trunk/perl/server/lib/Haver/Server/Wheel/Main.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Main.pm    2005-12-10 04:58:45 UTC 
(rev 950)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Main.pm    2005-12-10 05:46:31 UTC 
(rev 951)
@@ -86,14 +86,43 @@
        $lobby->add(
                new Haver::Server::Entity::Channel (
                        name  => $name,
-                       owner => 'bob',
+                       owner => $heap->{user}->name,
                )
        );
        $heap->{client}->put(['OPEN', $name]);
-       $kernel->yield('msg_JOIN', [$name]);
 
 }
 
+sub msg_CLOSE {
+       my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
+       my $lobby = $heap->{lobby};
+       my $user  = $heap->{user};
+       my ($name) = @$args; 
+
+       unless (is_valid_name($name)) {
+               call('fail', "invalid.name", $name);
+               return;
+       }
+       unless ($lobby->contains('channel', $name)) {
+               call('fail', 'unknown.channel', $name);
+               return;
+       }
+       my $chan = $lobby->get('channel', $name);
+       if ($chan->owner ne $user->name) {
+               call('fail', 'not-owner', $chan->owner, $user->name);
+               return;
+       }
+
+       $lobby->remove('channel', $name);
+       $chan->put(['CLOSE', $name]);
+       if (not $chan->contains('user', $user->name)) {
+               $heap->{client}->put(['CLOSE', $name]);
+       }
+       
+
+
+}
+
 sub msg_PART {
        my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
        my $lobby  = $heap->{lobby};


Reply via email to