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");
+ }
}