use IO::Socket::INET;
use IO::Socket::SSL; # qw(debug3);
use Sherlock::Object;
+use POSIX;
sub new($) {
my $user = $ENV{"USER"} or die "Environment variable USER not set\n";
my $mo = "$home/.mo";
my $root = $ENV{"MO_ROOT"} or die "Environment variable MO_ROOT not set\n";
my $self = {
- "Server" => "localhost:8888",
- "Key" => "$mo/key.pem",
+ "Contest" => "CPSPC 2007",
+ "Server" => "kamzice.ms.mff.cuni.cz:8888",
+ "Key" => "$mo/key.pem", # Keys and certificates
"Cert" => "$mo/cert.pem",
"CACert" => "$mo/ca-cert.pem",
"Trace" => defined $ENV{"MO_SUBMIT_TRACE"},
+ "Checks" => 1,
+# "History" => "$home/.history", # Keep submission history in this directory
+ "RefreshTimer" => 60000, # How often GUI sends STATUS commands [ms]
+ "root" => $root,
"user" => $user,
"sk" => undef,
"error" => undef,
sub log($$) {
my ($self, $msg) = @_;
- print STDERR "LOG: $msg\n" if $self->{"Trace"};
+ print STDERR "SUBMIT: $msg\n" if $self->{"Trace"};
}
sub err($$) {
sub connect($) {
my $self = shift @_;
$self->disconnect;
+
$self->log("Connecting to submit server");
my $sk = new IO::Socket::INET(
PeerAddr => $self->{"Server"},
}
}
$self->{"sk"} = $sk;
+ $sk->autoflush(0);
$self->log("Logging in");
my $req = new Sherlock::Object("U" => $self->{"user"});
sub request($$) {
my ($self, $obj) = @_;
my $sk = $self->{"sk"};
- $obj->write($sk); ### FIXME: Flushing
+ ## $SIG{'PIPE'} = 'ignore';
+ $obj->write($sk);
+ print $sk "\n";
+ $sk->flush();
if ($sk->error) {
$self->err("Connection broken");
return undef;
}
- print $sk "\n";
return $self->reply;
}
return $self->reply;
}
+sub local_submit($$$$$) {
+ my ($self, $task, $part, $ext, $filename) = @_;
+ my $hist = $self->{"History"};
+ -d $hist or mkdir $hist or return "Unable to create $hist: $!";
+ ### FIXME: Unfinished
+}
+
1;