private bool OurTimeoutHandler () { if (sw == null) { sw = new Stopwatch (); sw.Start (); } Beagle.RequestMessage request; request = new Beagle.DaemonInformationRequest (); Beagle.ResponseMessage response = null; try { response = request.Send (); } catch { } if (response == null) { ++failure_count; // FIXME: we should abort if we have too many failures if (failure_count > 9) Log.Info ("Status request attempt {0} failed", failure_count); return true; // wait a bit, then try again } string status_str; status_str = ((Beagle.DaemonInformationResponse) response).HumanReadableStatus; if (status_str.IndexOf ("Waiting on empty queue") == -1) { if (busy_count == 0) Log.Spew ("Waiting for daemon to become idle"); ++busy_count; if (busy_count % 10 == 0) Log.Spew ("Still waiting for daemon to become idle..."); return true; // wait a bit, then try again } if (failure_count > 0 || busy_count > 0) Log.Spew ("Daemon is idle after {0}", sw); else Log.Spew ("Daemon is idle"); if (! optimized) { Log.Spew ("Requesting index optimization"); optimized = true; failure_count = 0; busy_count = 0; sw.Reset (); request = new Beagle.OptimizeIndexesRequest (); try { request.Send (); } catch { Log.Failure ("Optimize request failed"); // FIXME: we should probably terminate here, or something } return true; // wait for optimize to finish } if (idle != null) idle (); return false; // all done }
private bool OurTimeoutHandler() { if (sw == null) { sw = new Stopwatch(); sw.Start(); } Beagle.RequestMessage request; request = new Beagle.DaemonInformationRequest(); Beagle.ResponseMessage response = null; try { response = request.Send(); } catch { } if (response == null) { ++failure_count; // FIXME: we should abort if we have too many failures if (failure_count > 9) { Log.Info("Status request attempt {0} failed", failure_count); } return(true); // wait a bit, then try again } string status_str; status_str = ((Beagle.DaemonInformationResponse)response).HumanReadableStatus; if (status_str.IndexOf("Waiting on empty queue") == -1) { if (busy_count == 0) { Log.Spew("Waiting for daemon to become idle"); } ++busy_count; if (busy_count % 10 == 0) { Log.Spew("Still waiting for daemon to become idle..."); } return(true); // wait a bit, then try again } if (failure_count > 0 || busy_count > 0) { Log.Spew("Daemon is idle after {0}", sw); } else { Log.Spew("Daemon is idle"); } if (!optimized) { Log.Spew("Requesting index optimization"); optimized = true; failure_count = 0; busy_count = 0; sw.Reset(); request = new Beagle.OptimizeIndexesRequest(); try { request.Send(); } catch { Log.Failure("Optimize request failed"); // FIXME: we should probably terminate here, or something } return(true); // wait for optimize to finish } if (idle != null) { idle(); } return(false); // all done }