]> mj.ucw.cz Git - moe.git/commitdiff
Parts of local history.
authorMartin Mares <mj@ucw.cz>
Wed, 6 Jun 2007 13:52:32 +0000 (15:52 +0200)
committerMartin Mares <mj@ucw.cz>
Wed, 6 Jun 2007 13:52:32 +0000 (15:52 +0200)
submit/MO/Submit.pm
submit/contest

index 15e6d7c3584030291c0123b4d23045ac13a9ee64..a375058cc07176f2eea79bacf2b245fbf1931c55 100644 (file)
@@ -9,6 +9,7 @@ use warnings;
 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";
@@ -18,10 +19,12 @@ sub new($) {
        my $self = {
                "Contest" => "CPSPC 2007",
                "Server" => "localhost:8888",
-               "Key" => "$mo/key.pem",
+               "Key" => "$mo/key.pem",         # Keys and certificates
                "Cert" => "$mo/cert.pem",
                "CACert" => "$mo/ca-cert.pem",
                "Trace" => defined $ENV{"MO_SUBMIT_TRACE"},
+               "History" => "$home/.history";  # Keep submission history in this directory
+               "RefreshTimer" => 5000,         # How often GUI sends STATUS commands [ms]
                "user" => $user,
                "sk" => undef,
                "error" => undef,
@@ -159,4 +162,11 @@ sub send_file($$$) {
        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;
index 0246cadf680d33b4793d61b08750928d147cb435..0c2e0227a98528727a41b675f90ea7fdc67fcae6 100755 (executable)
@@ -159,7 +159,7 @@ sub start_refresh_timer($) {
        my ($go) = @_;
        stop_refresh_timer();
        refresh() if $go;
-       $refresh_timer_id = Glib::Timeout->add(5000, \&timed_refresh);
+       $refresh_timer_id = Glib::Timeout->add($conn->{"RefreshTimer}, \&timed_refresh);
 }
 
 sub stop_refresh_timer() {
@@ -308,8 +308,19 @@ sub submit_failed($) {
 }
 
 sub run_submit() {
+       my ($task, $part) = split /\//, $selected_task;
+       defined $part or $part = $task;
+
+       if (defined $conn->{"History"}) {
+               busy("Submitting locally");
+               my $err = $conn->local_submit($task, $part, $submit_extension, $submit_filename);
+               if (defined $err) {
+                       submit_failed("Recording to local history failed\n($err)");
+                       return;
+               }
+       }
+
        if ($conn->is_connected) {
-               ### FIXME: Busy cursor should be started earlier
                busy("Checking server status...");
                my $r = new Sherlock::Object("!" => "STATUS");  ### FIXME: use a NOP command
                $r = $conn->request($r);
@@ -319,13 +330,11 @@ sub run_submit() {
                if (!$conn->connect) {
                        ready($conn->{"error"});
                        submit_failed("Unable to connect to the server");       ### FIXME: Mention local submit
+                       return;
                }
        }
        busy("Submitting...");
 
-       my ($task, $part) = split /\//, $selected_task;
-       defined $part or $part = $task;
-
        my $fh = new IO::File($submit_filename);
        if (!$fh) {
                submit_failed("Unable to open $submit_filename\n($!)");