Beispiel #1
0
        public void ClearStrCache()
        {
            var cache = new StringCache("Test:Str");
            int cnt   = cache.Count();

            if (cnt > 0)
            {
                cache.Clear();
            }
        }
Beispiel #2
0
 public void UpdateText(string text)
 {
     if (text != Text)
     {
         Text = text;
         StringCache.Clear();
         for (int i = 0; i < Text.Length; i++)
         {
             //get teh size of the character
             StringCache.Add(text[i].ToString());
         }
     }
 }
Beispiel #3
0
 /// <summary>
 /// Cleans up the instance of ResourceStaticAnalysis. Used to flush all referenced objects to make sure memory doesn't grow indefinitely.
 /// </summary>
 public override void Cleanup()
 {
     StringCache.Clear();
     StringCache.Resize(0);
     if (EngineCleanup != null)
     {
         Trace.TraceInformation("Firing EngineCleanup event.");
         EngineCleanup(this, new EventArgs());
     }
     else
     {
         Trace.TraceWarning("No listeners of EngineCleanup event. Event not fired.");
     }
 }
Beispiel #4
0
        /// <summary>
        /// Constructor to initialize the ResourceStaticAnalysis Engine by configuration
        /// </summary>
        /// <param name="configuration">the enging config</param>
        /// <param name="preLoadedCOs">Initialize the engine to accept preloaded COs instead of data sources</param>
        public ResourceStaticAnalysisEngine(EngineConfig configuration, bool preLoadedCOs)
        {
            _engineConfiguration  = configuration;
            AsimoAssemblyResolver = new AssemblyResolver(configuration.AssemblyResolverPaths == null ? null : _engineConfiguration.AssemblyResolverPaths.ToArray());
            AsimoAssemblyResolver.Init();

            Monitor = new EngineMonitor(this);

            //clear string cache
            StringCache.Clear();
            try
            {
                //Don't need to load objects when using preloaded COs.
                if (preLoadedCOs)
                {
                    _usePreLoadedCOs = true;
                    //Register ClassificationObject types
                    RegisterCOTypes();
                    //Create instances of output writers
                    RegisterOutputWriters();
                }
                else
                {
                    Trace.TraceInformation("Initializing engine from {0}.", System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase);
                    Trace.TraceInformation("Engine configuration: {0}.", configuration.ToString());
                    //Create instances of datasource providers
                    RegisterDataSourceProviders();
                    //Create instances of property adapters to be used by CO adapters
                    RegisterPropertyAdapters();
                    //Create instances of data adapters
                    RegisterCOAdapters();
                    //Create instances of output writers
                    RegisterOutputWriters();
                    //Register ClassificationObject types
                    RegisterCOTypes();
                    //normalize dataPackages. if two DataSourcePackages contain the same DataSourceInfo then
                    //link them to single DataSourceInfo. otherwise two instances of the same DataSourceInstance
                    //will be created when these packages are accessed.
                    _engineConfiguration.DataSourcePkgs.Normalize();

                    _dataSourcePackages = new Queue <DataSourcePackage>(_engineConfiguration.DataSourcePkgs);
                    Trace.TraceInformation("Found {0} data source packages.", this._dataSourcePackages.Count);
                }

                //load rules from assemblies modules
                Trace.TraceInformation("Loading rules from containers.");
                if (_engineConfiguration.RuleContainers == null)
                {
                    throw new ResourceStaticAnalysisEngineConfigException("At least one Rule Container must be specified in config.");
                }

                Trace.TraceInformation("Adding rules into RuleManager.");
                configuration.RuleContainers.ForEach(CurrentRuleManager.LoadRulesFromContainer);
                Trace.TraceInformation("Disabling rules based on config.");
                if (_engineConfiguration.DisabledRules != null)
                {
                    configuration.DisabledRules.ForEach(f => CurrentRuleManager.DisableRule(f));
                }

                if (preLoadedCOs)
                {
                    Trace.TraceInformation("RuleManager has {0} rules registered.", CurrentRuleManager.RuleCount);
                }
                else
                {
                    Trace.TraceInformation("Found {0} data source packages. RuleManager has {1} rules registered.",
                                           this._dataSourcePackages.Count, CurrentRuleManager.RuleCount);
                }
            }
            catch (Exception e)
            {
                string message = String.Format(CultureInfo.CurrentCulture, "Initializing ResourceStaticAnalysis Engine failed.");
                throw new ResourceStaticAnalysisEngineInitializationException(message, e);
            }
            _preProcessedInput = new List <ClassificationObject>(1000);
            Trace.TraceInformation("Engine finished initializing.");
        }