ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/bin/tracer
(Generate patch)

Comparing kgsueme/bin/tracer (file contents):
Revision 1.2 by pcg, Mon Jul 21 13:39:02 2003 UTC vs.
Revision 1.3 by pcg, Tue Jul 22 02:36:17 2003 UTC

4 4
5use KGS::Protocol; 5use KGS::Protocol;
6use KGS::Messages; 6use KGS::Messages;
7 7
8use KGS::Listener::Debug; 8use KGS::Listener::Debug;
9
10use Fcntl;
11use FileHandle;
9 12
10my $l = new IO::Socket::INET LocalPort => 2379, Listen => 1, ReuseAddr => 1; 13my $l = new IO::Socket::INET LocalPort => 2379, Listen => 1, ReuseAddr => 1;
11 14
12my $prot = new KGS::Protocol; 15my $prot = new KGS::Protocol;
13my $sgen = new KGS::Protocol::Generator; 16my $sgen = new KGS::Protocol::Generator;
15(my $listener = mylistener->new)->listen ($prot, "*"); 18(my $listener = mylistener->new)->listen ($prot, "*");
16 19
17print "connect with cgoban2 to localhost:2379 to see a protocol dump.\n"; 20print "connect with cgoban2 to localhost:2379 to see a protocol dump.\n";
18print "ready.\n"; 21print "ready.\n";
19 22
23sysopen TRACE, "cgoban2.trace", O_CREAT|O_APPEND|O_WRONLY
24 or die "cgoban2.trace: $!";
25TRACE->autoflush(1);
26
20while (my $l = $l->accept) { 27while (my $l = $l->accept) {
21 if (fork == 0) { 28 if (fork == 0) {
29 printf TRACE "$$ + %d\n", int time;
30
22 my $r = new IO::Socket::INET PeerHost => "kgs.kiseido.com:2379"; 31 my $r = new IO::Socket::INET PeerHost => "kgs.kiseido.com:2379";
23 $prot->handshake ($r); 32 $prot->handshake ($r);
24 { 33 {
25 sysread $l, my $buf, 1; 34 sysread $l, my $buf, 1;
26 $buf = chr 3; 35 $buf = chr 3;
37 while (select my $rb = $Rb, undef, undef, undef) { 46 while (select my $rb = $Rb, undef, undef, undef) {
38 if (vec $rb, fileno $l, 1) { 47 if (vec $rb, fileno $l, 1) {
39 last unless sysread $l, my $buf, 8192; 48 last unless sysread $l, my $buf, 8192;
40 syswrite $r, $buf, 8192; 49 syswrite $r, $buf, 8192;
41 50
51 printf TRACE "$$ C %d %4d %s\n", int time, length $buf, unpack "H*", $buf;
52
42 $sbuf .= $buf; 53 $sbuf .= $buf;
43
44 54
45 for (;;) { 55 for (;;) {
46 if (!$rlen and 2 <= length $sbuf) { 56 if (!$rlen and 2 <= length $sbuf) {
47 $rlen = ($sgen->{client_state} >> 24) ^ unpack "v", $sbuf; 57 $rlen = ($sgen->{client_state} >> 24) ^ unpack "v", $sbuf;
48 } 58 }
58 $msg = $msg->(substr $pkt, 4); 68 $msg = $msg->(substr $pkt, 4);
59 69
60 $prot->{generator}->set_server_seed ($msg->{name}) if $msg->{type} eq "login"; 70 $prot->{generator}->set_server_seed ($msg->{name}) if $msg->{type} eq "login";
61 71
62 print "\npackage type received from CLIENT:\n"; 72 print "\npackage type received from CLIENT:\n";
73 open XTYPE, "|xtype"; printf XTYPE "%16d%s", (length $pkt), $pkt; close XTYPE;
63 print KGS::Listener::Debug::dumpval $msg; 74 print KGS::Listener::Debug::dumpval $msg;
64 } else { 75 } else {
65 print "\007\n\nUNKNOWN PACKAGE TYPE RECEIVED FROM CLIENT:\n"; 76 print "\007\n\nUNKNOWN PACKAGE TYPE RECEIVED FROM CLIENT:\n";
66 open XTYPE, "|xtype"; printf XTYPE "%16d%s", (length $pkt), $pkt; close XTYPE; 77 open XTYPE, "|xtype"; printf XTYPE "%16d%s", (length $pkt), $pkt; close XTYPE;
67 } 78 }
73 } 84 }
74 } 85 }
75 if (vec $rb, fileno $r, 1) { 86 if (vec $rb, fileno $r, 1) {
76 last unless sysread $r, my $buf, 8192; 87 last unless sysread $r, my $buf, 8192;
77 syswrite $l, $buf, 8192; 88 syswrite $l, $buf, 8192;
89
90 printf TRACE "$$ S %d %4d %s\n", int time, length $buf, unpack "H*", $buf;
91
78 eval { 92 eval {
79 $prot->feed_data ($buf); 93 $prot->feed_data ($buf);
80 }; 94 };
81 warn "ERROR: $@" if $@; 95 warn "ERROR: $@" if $@;
82 } 96 }
95 109
96 print "received msg from SERVER\n"; 110 print "received msg from SERVER\n";
97 print KGS::Listener::Debug::dumpval $msg; 111 print KGS::Listener::Debug::dumpval $msg;
98} 112}
99 113
114

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines