From 0c60e0ab6013df46586bcb6c26f48a850f4c7115 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Fri, 1 Jul 2011 15:14:13 -0700 Subject: [PATCH] Bug fix to OneShotRunner, logging improvements. Change-Id: Ifcbd4fa0147fdc82bb887525fa1d5ccc8d803550 --- .../java/android/filterfw/core/Filter.java | 2 +- .../java/android/filterfw/core/FilterFactory.java | 10 ++++-- .../java/android/filterfw/core/LogMCA.java | 40 ---------------------- .../android/filterfw/core/OneShotScheduler.java | 2 +- .../java/android/filterfw/core/SyncRunner.java | 18 +++++++++- 5 files changed, 26 insertions(+), 46 deletions(-) delete mode 100644 mca/filterfw/java/android/filterfw/core/LogMCA.java diff --git a/mca/filterfw/java/android/filterfw/core/Filter.java b/mca/filterfw/java/android/filterfw/core/Filter.java index 87187c9c..68d9711c 100644 --- a/mca/filterfw/java/android/filterfw/core/Filter.java +++ b/mca/filterfw/java/android/filterfw/core/Filter.java @@ -64,7 +64,7 @@ public abstract class Filter { private int mSleepDelay; private boolean mLogVerbose; - private final String TAG = "Filter"; + private static final String TAG = "Filter"; public Filter(String name) { mName = name; diff --git a/mca/filterfw/java/android/filterfw/core/FilterFactory.java b/mca/filterfw/java/android/filterfw/core/FilterFactory.java index 545a6bd7..aad4487a 100644 --- a/mca/filterfw/java/android/filterfw/core/FilterFactory.java +++ b/mca/filterfw/java/android/filterfw/core/FilterFactory.java @@ -33,15 +33,19 @@ public class FilterFactory { private static FilterFactory mSharedFactory; private HashSet mPackages = new HashSet(); + private boolean mLogVerbose; + private static final String TAG = "FilterFactory"; + public static FilterFactory sharedFactory() { if (mSharedFactory == null) { mSharedFactory = new FilterFactory(); + mSharedFactory.mLogVerbose = Log.isLoggable(TAG, Log.VERBOSE); } return mSharedFactory; } public void addPackage(String packageName) { - Log.i("FilterFactory", "Adding package " + packageName); + if (mLogVerbose) Log.v(TAG, "Adding package " + packageName); /* Package pkg = Package.getPackage(packageName); if (pkg == null) { @@ -52,14 +56,14 @@ public class FilterFactory { } public Filter createFilterByClassName(String className, String filterName) { - Log.i("FilterFactory", "Looking up class " + className); + if (mLogVerbose) Log.v(TAG, "Looking up class " + className); Class filterClass = null; // Get context's classloader; otherwise cannot load non-framework filters ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); // Look for the class in the imported packages for (String packageName : mPackages) { try { - Log.i("FilterFactory", "Trying "+packageName + "." + className); + if (mLogVerbose) Log.v(TAG, "Trying "+packageName + "." + className); filterClass = contextClassLoader.loadClass(packageName + "." + className); } catch (ClassNotFoundException e) { continue; diff --git a/mca/filterfw/java/android/filterfw/core/LogMCA.java b/mca/filterfw/java/android/filterfw/core/LogMCA.java deleted file mode 100644 index e88d2e91..00000000 --- a/mca/filterfw/java/android/filterfw/core/LogMCA.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package android.filterfw.core; - -import android.util.Log; - -/** - * Settings for MCA-specific logging. - * - * @hide - */ -public class LogMCA { - - // Set this to true to enable per-frame logging. - public static final boolean LOG_EVERY_FRAME = false; - - public static final String TAG = "MCA"; - - public static final void perFrame(String message) { - if (LOG_EVERY_FRAME) { - Log.v(TAG, message); - } - } - -} diff --git a/mca/filterfw/java/android/filterfw/core/OneShotScheduler.java b/mca/filterfw/java/android/filterfw/core/OneShotScheduler.java index 2d305b7c..3edb61f0 100644 --- a/mca/filterfw/java/android/filterfw/core/OneShotScheduler.java +++ b/mca/filterfw/java/android/filterfw/core/OneShotScheduler.java @@ -28,7 +28,7 @@ import java.util.HashMap; * @hide */ public class OneShotScheduler extends RoundRobinScheduler { - private HashMap scheduled; + private HashMap scheduled = new HashMap(); public OneShotScheduler(FilterGraph graph) { super(graph); diff --git a/mca/filterfw/java/android/filterfw/core/SyncRunner.java b/mca/filterfw/java/android/filterfw/core/SyncRunner.java index 0c31fb48..7b18a60a 100644 --- a/mca/filterfw/java/android/filterfw/core/SyncRunner.java +++ b/mca/filterfw/java/android/filterfw/core/SyncRunner.java @@ -18,6 +18,7 @@ package android.filterfw.core; import android.os.ConditionVariable; +import android.util.Log; import java.lang.reflect.Constructor; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -36,11 +37,17 @@ public class SyncRunner extends GraphRunner { private StopWatchMap mTimer = null; + private final boolean mLogVerbose; + private final static String TAG = "SyncRunner"; // TODO: Provide factory based constructor? public SyncRunner(FilterContext context, FilterGraph graph, Class schedulerClass) { super(context); + mLogVerbose = Log.isLoggable(TAG, Log.VERBOSE); + + if (mLogVerbose) Log.v(TAG, "Initializing SyncRunner"); + // Create the scheduler if (Scheduler.class.isAssignableFrom(schedulerClass)) { try { @@ -64,6 +71,8 @@ public class SyncRunner extends GraphRunner { mTimer = new StopWatchMap(); + if (mLogVerbose) Log.v(TAG, "Setting up filters"); + // Setup graph filters graph.setupFilters(); } @@ -90,11 +99,14 @@ public class SyncRunner extends GraphRunner { public void close() { // Close filters + if (mLogVerbose) Log.v(TAG, "Closing graph."); getGraph().closeFilters(mFilterContext); } @Override public void run() { + if (mLogVerbose) Log.v(TAG, "Beginning run."); + // Preparation beginProcessing(); assertReadyToStep(); @@ -111,8 +123,10 @@ public class SyncRunner extends GraphRunner { // Call completion callback if set if (mDoneListener != null) { + if (mLogVerbose) Log.v(TAG, "Calling completion listener."); mDoneListener.onRunnerDone(determinePostRunState()); } + if (mLogVerbose) Log.v(TAG, "Run complete"); } @Override @@ -135,11 +149,12 @@ public class SyncRunner extends GraphRunner { } protected void processFilterNode(Filter filter) { - LogMCA.perFrame("Processing " + filter); + if (mLogVerbose) Log.v(TAG, "Processing filter node"); filter.performProcess(mFilterContext); if (filter.getStatus() == Filter.STATUS_ERROR) { throw new RuntimeException("There was an error executing " + filter + "!"); } else if (filter.getStatus() == Filter.STATUS_SLEEPING) { + if (mLogVerbose) Log.v(TAG, "Scheduling filter wakeup"); scheduleFilterWake(filter, filter.getSleepDelay()); } } @@ -179,6 +194,7 @@ public class SyncRunner extends GraphRunner { // Core internal methods /////////////////////////////////////////////////////////////////////// boolean performStep() { + if (mLogVerbose) Log.v(TAG, "Performing one step."); Filter filter = mScheduler.scheduleNextNode(); if (filter != null) { mTimer.start(filter.getName()); -- 2.11.0