示例#1
0
			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
			}
示例#2
0
            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
            }