Author: dylan
Date: 2005-06-20 22:49:41 -0400 (Mon, 20 Jun 2005)
New Revision: 785

Modified:
   trunk/
   trunk/perl/server/lib/Haver/Server/Entity/User.pm
   trunk/perl/server/lib/Haver/Server/Listener.pm
   trunk/perl/server/lib/Haver/Server/Talker.pm
   trunk/perl/server/lib/Haver/Server/Wheel.pm
   trunk/perl/server/lib/Haver/Server/Wheel/Main.pm
Log:
 [EMAIL PROTECTED]:  dylan | 2005-06-20 22:48:32 -0400
 added BEGIN {} around the sub creation in Entity::User,
 some other insignifcant changes in Listener and Talker,
 Haver::Server::Wheel::msg() now takes multiple arguments,
 which makes Haver::Server::Wheel::Main look cleaner.
 
 Biggest change is the server will only send PINGs to clients that haven't 
recently sent
 a message (command). I think.



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:1117
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:1123
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238

Modified: trunk/perl/server/lib/Haver/Server/Entity/User.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/User.pm   2005-06-20 21:21:42 UTC 
(rev 784)
+++ trunk/perl/server/lib/Haver/Server/Entity/User.pm   2005-06-21 02:49:41 UTC 
(rev 785)
@@ -23,7 +23,7 @@
        $self->remove_channel($chan->name);
 }
 
-{
+BEGIN {
        no strict 'refs';
        foreach my $word (qw( channel friend )) {
                my $field = "_$word";

Modified: trunk/perl/server/lib/Haver/Server/Listener.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Listener.pm      2005-06-20 21:21:42 UTC 
(rev 784)
+++ trunk/perl/server/lib/Haver/Server/Listener.pm      2005-06-21 02:49:41 UTC 
(rev 785)
@@ -21,7 +21,6 @@
        )];
 }
 
-
 sub _start {
        my ($kernel, $heap, $opt) = @_[KERNEL, HEAP, ARG0];
 

Modified: trunk/perl/server/lib/Haver/Server/Talker.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Talker.pm        2005-06-20 21:21:42 UTC 
(rev 784)
+++ trunk/perl/server/lib/Haver/Server/Talker.pm        2005-06-21 02:49:41 UTC 
(rev 785)
@@ -4,9 +4,8 @@
 
 use Haver::Session -base;
 use Haver::Protocol::Filter;
+use Haver::Server;
 use Haver::Wheel::Loader;
-
-use Haver::Server;
 use Haver::Server::Wheel::Login;
 use Haver::Server::Wheel::Main;
 
@@ -77,7 +76,7 @@
 }
 
 sub input {
-       my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
+       my ($kernel, $heap, $args, $session) = @_[KERNEL, HEAP, ARG0, SESSION];
        
        my @copy = @$args;
        return if $heap->{plonk};
@@ -89,7 +88,8 @@
        
        Log('info', "Command: '$cmd'");
        $heap->{cmd} = $cmd;
-       $kernel->call($_[SESSION], $event, $args, $cmd);
+       $kernel->call($session, 'schedule_ping');
+       $kernel->call($session, $event, $args, $cmd);
 }
 
 sub fail {

Modified: trunk/perl/server/lib/Haver/Server/Wheel/Main.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Main.pm    2005-06-20 21:21:42 UTC 
(rev 784)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Main.pm    2005-06-21 02:49:41 UTC 
(rev 785)
@@ -10,15 +10,13 @@
 
 sub setup {
        my $self = shift;
-       $self->msg('TO');
-       $self->msg('IN');
-       $self->msg('JOIN');
-       $self->msg('OPEN');
-       $self->msg('PART');
-       $self->msg('BYE');
-       $self->msg('LIST');
-       $self->msg('POKE');
-       $self->msg('PONG');
+       $self->msg(
+               qw(
+                       TO IN BYE POKE PONG
+                       JOIN OPEN PART LIST
+               )
+       );
+
        $self->provide('ping', 'on_ping');
        $self->provide('schedule_ping', 'on_schedule_ping');
 }
@@ -35,9 +33,6 @@
        if (defined $heap->{alarm_send_ping}) {
                $kernel->alarm_remove($heap->{alarm_send_ping});
        }
-       if (defined $heap->{alarm_ping_out}) {
-               $kernel->alarm_remove($heap->{alarm_ping_out});
-       }
        
        $heap->{alarm_send_ping} = $aid;
 }
@@ -196,12 +191,18 @@
 sub msg_POKE {
        my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
        $heap->{client}->put(['OUCH', $args->[0]]);
+       $kernel->yield('schedule_ping');
 }
 
 sub msg_PONG {
        my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG0];
        
-       $kernel->yield('schedule_ping');
+       if (defined $heap->{alarm_ping_out}) {
+               $kernel->alarm_remove($heap->{alarm_ping_out});
+               $kernel->yield('schedule_ping');
+       } else {
+               Log('error', "PONG without PING!");
+       }
 }
 
 sub msg_BYE {

Modified: trunk/perl/server/lib/Haver/Server/Wheel.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel.pm 2005-06-20 21:21:42 UTC (rev 
784)
+++ trunk/perl/server/lib/Haver/Server/Wheel.pm 2005-06-21 02:49:41 UTC (rev 
785)
@@ -10,8 +10,11 @@
 our @EXPORT_BASE = 'Log';
 
 sub msg {
-       my ($self, $word) = @_;
-       $self->provide("msg_$word", "msg_$word");
+       my $self = shift;
+
+       foreach my $word (@_) {
+               $self->provide("msg_$word", "msg_$word");
+       }
 }
 
 


Reply via email to