diff options
-rw-r--r-- | Tanja.pm | 8 | ||||
-rwxr-xr-x | test.pl | 28 |
2 files changed, 28 insertions, 8 deletions
@@ -303,11 +303,11 @@ sub _recv { # tuple } elsif($cmd eq 'tuple') { $s->{serv}->send($arg[1], !$arg[0] ? undef : sub { - $s->{hdl}->push_write('Tanja::Link::JSON' => $_[0]?'response':'close', $arg[0]+0, $_[0]?$_[0]:()); + $s->{hdl}->push_write('Tanja::Link::JSON' => $_[0]?'reply':'close', $arg[0]+0, $_[0]?$_[0]:()); }, $s); - # response - } elsif($cmd eq 'response') { + # reply + } elsif($cmd eq 'reply') { $s->{ret}{$arg[0]}->reply($arg[1]) if $s->{ret}{$arg[0]}; # close @@ -332,7 +332,7 @@ package Tanja::Link::JSON; use strict; use warnings; -my @num_to_cmd = ('', qw|register unregister tuple response close|); +my @num_to_cmd = ('', qw|register unregister tuple reply close|); my %cmd_to_num = map +($num_to_cmd[$_], $_), keys @num_to_cmd; my $json; @@ -4,6 +4,8 @@ use strict; use warnings; use Test::More; use AnyEvent; +use AnyEvent::Handle; +use Socket; use_ok 'Tanja'; @@ -58,10 +60,10 @@ ok !Tanja::match([2], [1]); # Simple double-session test with return-path -{ - my $serv = Tanja::Server->new; - my $a = $serv->session; - my $b = $serv->session; +sub t_double { + my($sa, $sb) = @_; + my $a = $sa->session; + my $b = $sb->session; my $done = AnyEvent->condvar; $a->reg(["msg"], sub { my($t, $r) = @_; @@ -86,6 +88,24 @@ ok !Tanja::match([2], [1]); is $n, 2; } +{ # same server + my $s = Tanja::Server->new; + t_double($s, $s); +} + +TODO: { # different servers, linked + local $TODO = 'Fundamental flaw in the protocol'; + + my $sa = Tanja::Server->new; + my $sb = Tanja::Server->new; + socketpair my $socka, my $sockb, AF_UNIX, SOCK_STREAM, PF_UNSPEC; + $sa->link(0, AnyEvent::Handle->new(fh => $socka), sub { }); + $sb->link(1, AnyEvent::Handle->new(fh => $sockb), sub { }); + # Currently hangs + #t_double($sa, $sb); +} + + done_testing(); |