Author: spadkins
Date: Wed Sep 12 14:40:39 2007
New Revision: 9940

Modified:
   p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm

Log:
possible fix for the C cancel mystery problem (repeating subrequests getting 
run immediately after a cancel, Mantis #0000492), needs verification

Modified: p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm        (original)
+++ p5ee/trunk/App-Context/lib/App/Context/POE/Server.pm        Wed Sep 12 
14:40:39 2007
@@ -332,6 +332,9 @@
 
     $state .= $self->_state_poe();
 
+    ### THIS DOESN'T WORK YET
+    #$state .= $self->_state_q();
+
     $state .= $self->SUPER::_state();
 
     &App::sub_exit($state) if ($App::trace);
@@ -360,6 +363,28 @@
     return $state;
 }
 
+### THIS DOESN'T WORK YET, THROWS AN EXCEPTION
+sub _state_q {
+    my $self = @_;
+    my $HOTEL_SITE_QNAME    = "q-hotel_site";
+    my $HOTEL_COMPUTE_QNAME = "q-hotel_compute";
+    my $state = "";
+
+    for my $qname ("q-hotel_site", "q-hotel_compute") {
+        $state .= "$qname\n";
+        ### EXCEPTION IS THROWN HERE
+        my $q = $self->work_queue($qname);
+        my $entries = $q->{data};
+        foreach my $entry (@$entries) {
+            $state .= sprintf("   {", join("|",%$entry), "}\n");
+        }
+        $state .= "\n";
+    }
+    $state .= "\n";
+
+    return $state;
+}
+
 # TODO: Implement this as a fork() or a context-level message to a node to 
fork().
 #       i.e. messages such as "EVENT:" and "EVENT-OK:"
 #       Save the callback_event according to an event_token.
@@ -659,7 +684,10 @@
         #$self->log({level=>2}, "S: abort_running_async_event : 
async_event=[$async_event]\n");
         $self->{num_async_events}--;
         delete $self->{running_async_event}{$runtime_event_token};
-        unshift(@$pending_async_events, $async_event);
+        ### TODO: This line was causing the mysterious Cancel and then re-run 
of 
+        ### events when passed a "C" Cancel request, discuss with SPA
+        ### ZWR doesn't think it is necessary
+        #unshift(@$pending_async_events, $async_event);
         $self->_abort_running_async_event($runtime_event_token, @$async_event);
     }
     &App::sub_exit($async_event) if ($App::trace);

Reply via email to