Author: dylan
Date: 2006-01-20 11:47:19 -0500 (Fri, 20 Jan 2006)
New Revision: 963
Added:
trunk/perl/server/lib/Haver/Server/Entity/Agent.pm
Modified:
trunk/
trunk/perl/server/lib/Haver/Server.pm
trunk/perl/server/lib/Haver/Server/Entity.pm
trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
trunk/perl/server/lib/Haver/Server/Entity/Channel.pm
trunk/perl/server/lib/Haver/Server/Talker.pm
trunk/perl/server/lib/Haver/Server/Wheel/Attr.pm
trunk/perl/server/lib/Haver/Server/Wheel/Auth.pm
trunk/perl/server/lib/Haver/Server/Wheel/Login.pm
trunk/perl/server/lib/Haver/Server/Wheel/Main.pm
Log:
Added support for agents, somewhat.
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:2387
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:2455
edfcd8bd-4ce7-0310-a97e-bb1efd40edf3:/local:238
Added: trunk/perl/server/lib/Haver/Server/Entity/Agent.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Agent.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Entity/Agent.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -0,0 +1,20 @@
+# vim: set ts=4 sw=4 noexpandtab si ai sta tw=100:
+# This module is copyrighted, see end of file for details.
+package Haver::Server::Entity::Agent;
+use strict;
+use warnings;
+use Haver::Server::Entity::User -base;
+
+
+sub send {
+ my ($self, $lobby, $msg) = @_;
+ my $cmd = shift @$msg;
+
+ if ($cmd eq 'FROM' and $msg->[1] ne $self->name) {
+ my $user = shift @$msg;
+ my $target = $lobby->lookup('user', $user);
+ $target->send($lobby, ['FROM', $self->name, @$msg]);
+ }
+}
+
+1;
Modified: trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Entity/Avatar.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -9,7 +9,6 @@
field -weak => 'wheel';
-field sid => undef;
field _access => {};
field passcode => undef;
field full_address => '0.0.0.0';
@@ -36,14 +35,9 @@
}
}
-sub call {
- my $self = shift;
- $POE::Kernel::poe_kernel->call($self->sid, @_);
-}
+sub send {
+ my ($self, $lobby, $msg) = @_;
-sub put {
- my ($self, $msg) = @_;
-
if (my $w = $self->wheel) {
$w->put($msg);
return 1;
Modified: trunk/perl/server/lib/Haver/Server/Entity/Channel.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity/Channel.pm 2006-01-09
21:19:13 UTC (rev 962)
+++ trunk/perl/server/lib/Haver/Server/Entity/Channel.pm 2006-01-20
16:47:19 UTC (rev 963)
@@ -40,11 +40,11 @@
);
}
-sub put {
- my ($self, $msg) = @_;
+sub send {
+ my ($self, $lobby, $msg) = @_;
foreach my $user ($self->list('user')) {
- $user->put($msg);
+ $user->send($lobby, $msg);
}
}
@@ -60,6 +60,11 @@
}
sub get {
+ carp "get() is depercated";
+ lookup(@_);
+}
+
+sub lookup {
my ($self, $ns, $name) = @_;
$name = lc $name;
Modified: trunk/perl/server/lib/Haver/Server/Entity.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Entity.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Entity.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -8,7 +8,7 @@
field attr => {};
stub 'namespace';
-stub 'put';
+stub 'send';
stub 'info';
sub initialize {
Modified: trunk/perl/server/lib/Haver/Server/Talker.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Talker.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Talker.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -162,7 +162,7 @@
$user->part($chan);
foreach my $u ($chan->list('user')) {
unless ($seen{ $u->name }++) {
- $u->put(['QUIT', $user->name,
@why]);
+ $u->send($lobby, ['QUIT',
$user->name, @why]);
}
}
}
Modified: trunk/perl/server/lib/Haver/Server/Wheel/Attr.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Attr.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Attr.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -32,7 +32,7 @@
}
my $entity = $lobby->get($ns, $name);
- $heap->{client}->put(['ATTR:GOT', $key, $entity->{attr}{$key} || '']);
+ $heap->{client}->put(['ATTR:VAL', $ns, $name, $key,
$entity->{attr}{$key} || '']);
}
sub msg_ATTR_SET {
Modified: trunk/perl/server/lib/Haver/Server/Wheel/Auth.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Auth.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Auth.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -39,6 +39,8 @@
keys %{ $config->digests },
]
);
+ } else {
+ call('shutdown', 'bork', "I don't speak french!");
}
}
Modified: trunk/perl/server/lib/Haver/Server/Wheel/Login.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Login.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Login.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -103,7 +103,6 @@
$user->wheel($heap->{client});
- $user->sid($_[SESSION]->ID);
$user->version($heap->{version});
$user->address($heap->{address});
$lobby->add($user);
Modified: trunk/perl/server/lib/Haver/Server/Wheel/Main.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server/Wheel/Main.pm 2006-01-09 21:19:13 UTC
(rev 962)
+++ trunk/perl/server/lib/Haver/Server/Wheel/Main.pm 2006-01-20 16:47:19 UTC
(rev 963)
@@ -50,7 +50,7 @@
my $lobby = $heap->{lobby};
my ($name) = @$args;
my $user = $heap->{user};
- my $chan = $lobby->get('channel', $name);
+ my $chan = $lobby->lookup('channel', $name);
unless (is_valid_name($name)) {
call('fail', "invalid.name", $name);
@@ -66,7 +66,7 @@
}
$user->join($chan);
- $chan->put(['JOIN', $chan->name, $user->name]);
+ $chan->send($lobby, ['JOIN', $chan->name, $user->name]);
}
sub msg_OPEN {
@@ -107,14 +107,14 @@
call('fail', 'unknown.channel', $name);
return;
}
- my $chan = $lobby->get('channel', $name);
+ my $chan = $lobby->lookup('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]);
+ $chan->send($lobby, ['CLOSE', $name]);
if (not $chan->contains('user', $user->name)) {
$heap->{client}->put(['CLOSE', $name]);
}
@@ -128,7 +128,7 @@
my $lobby = $heap->{lobby};
my ($name) = @$args;
my $user = $heap->{user};
- my $chan = $lobby->get('channel', $name);
+ my $chan = $lobby->lookup('channel', $name);
unless (is_valid_name($name)) {
call('fail', 'invalid.name', $name);
@@ -143,7 +143,7 @@
return;
}
- $chan->put(['PART', $chan->name, $user->name]);
+ $chan->send($lobby, ['PART', $chan->name, $user->name]);
$user->part($chan);
}
@@ -153,7 +153,7 @@
my $lobby = $heap->{lobby};
my ($name, $type) = (shift @$args, shift @$args);
my $user = $heap->{user};
- my $targ = $lobby->get('user', $name);
+ my $targ = $lobby->lookup('user', $name);
unless (is_valid_name($name)) {
@@ -170,7 +170,7 @@
}
- $targ->put(['FROM', $user->name, $type, @$args]);
+ $targ->send($lobby, ['FROM', $user->name, $type, @$args]);
}
sub msg_IN {
@@ -178,7 +178,7 @@
my $lobby = $heap->{lobby};
my ($name, $type) = (shift @$args, shift @$args);
my $user = $heap->{user};
- my $chan = $lobby->get('channel', $name);
+ my $chan = $lobby->lookup('channel', $name);
unless (is_valid_name($name)) {
@@ -194,7 +194,7 @@
return;
}
- $chan->put(['IN', $chan->name, $user->name, $type, @$args]);
+ $chan->send($lobby, ['IN', $chan->name, $user->name, $type, @$args]);
}
sub msg_LIST {
@@ -214,7 +214,7 @@
call('fail', 'unknown.namespace', $ns);
return;
}
- my $chan = $lobby->get('channel', $name);
+ my $chan = $lobby->lookup('channel', $name);
my @items = $chan->list($ns);
$heap->{client}->put(['LIST', $name, $ns, map { $_->name } @items]);
}
@@ -237,7 +237,7 @@
return;
}
- my $entity = $lobby->get($ns, $name);
+ my $entity = $lobby->lookup($ns, $name);
$heap->{client}->put(['INFO', $ns, $name, $entity->info]);
Modified: trunk/perl/server/lib/Haver/Server.pm
===================================================================
--- trunk/perl/server/lib/Haver/Server.pm 2006-01-09 21:19:13 UTC (rev
962)
+++ trunk/perl/server/lib/Haver/Server.pm 2006-01-20 16:47:19 UTC (rev
963)
@@ -24,6 +24,7 @@
use Haver::Server::Listener;
use Haver::Server::Talker;
use Haver::Server::Entity::User;
+use Haver::Server::Entity::Agent;
use Haver::Server::Entity::Channel;
use Haver::Server::Entity::Lobby;
use Haver::Server::Config;
@@ -71,6 +72,8 @@
# Fetch the lobby
Log('debug', "Fetching &lobby");
my $lobby = $store->fetch('lobby', '&lobby');
+ my $echo = new Haver::Server::Entity::Agent (name => '&echo');
+ $lobby->add($echo);
Log('debug', "Channels: ", join(", ", $lobby->names('channel')));