#!/usr/bin/perl -w


use IPC::Open2;
use Symbol;
use Socket;

$| = 1;


$WRITER = gensym ();
$READER = gensym ();

$delimiter = "send-move-to-server";
$remote = shift;
$port = shift;
$serverpath = shift;
$prog_name = shift;
#$begin_routine = shift;

print $remote;
print $port;
print $serverpath;
print $prog_name;
#print $begin_routine;

#print "Initiating akcl...\n";
#open2 ($READER, $WRITER, "/pkg/akcl/bin/akcl") || die "Couldn't open akcl:  $!\n\n";
open2($READER, $WRITER, "java ". $prog_name. " ".$serverpath. $port) || die "Couldn't open akcl: $!\n\n";
print "Connecting to server...\n";
$iaddr = inet_aton ($remote) or die "No host:  $remote\n";
$paddr = sockaddr_in ($port, $iaddr);
$proto = getprotobyname ('tcp');
socket (SOCK, PF_INET, SOCK_STREAM, $proto) or die "Socket:  $!\n";
connect (SOCK, $paddr) || die "Connect:  $!\n";


print "Ready to Begin\n";
chomp ($filename = <SOCK>);
print $filename;

print $WRITER "(setq output-delimiter '$delimiter)\n";
print $WRITER "(setq board-file \"$filename\")\n";
print $WRITER "(load \"$prog_name\")\n";
#print $WRITER "($begin_routine)\n";

while ($input = <$READER>) {
    ($input =~ /^\W+$delimiter(.*)/i) or next;

    # eliminate possibly empty value resulting from the split
    @move = grep /\d/, join (" ", split /\D+/, $1);
    next unless @move;
    $data = join (" ", split /\D+/, $1) . "\n";
#    print "MOVE => $data";
    syswrite (SOCK, $data, length $data, 0);
}

close $WRITER;
close $READER;
close SOCK;


