Example #1
0
		public List<Snapshot> Run(IPolicyEngineFactory agent, ProcessLevel level, RunAt runAt, bool forceGc)
		{
			GC.Collect();
			GC.WaitForPendingFinalizers();
			GC.Collect();

			IContentScanner scanner = agent.CreateContentScanner(null);
			IContentEnforcer enforcer = m_Enforce ? agent.CreateContentEnforcer(null) : null;
			List<Snapshot> snapshots = new List<Snapshot>();

			for (int iteration = 0; iteration < m_Iterations; ++iteration)
			{
				snapshots.Add(new Snapshot("PreLoadRequest", forceGc));
				Request request = ContractSerialization.LoadRequest(m_RequestPath);
				snapshots.Add(new Snapshot("PreScan", forceGc));
				Response response = scanner.Scan(request, null, level, runAt);

				if (enforcer != null)
				{
					snapshots.Add(new Snapshot("PreEnforce", forceGc));
					enforcer.Enforce(request, response);
					snapshots.Add(new Snapshot("PostEnforce", forceGc));
				}
				else
				{
					snapshots.Add(new Snapshot("PostScan", forceGc));
				}
			}

			snapshots.Add(new Snapshot("PostGcFinal", true));

			return snapshots;
		}
		protected override IPolicyCache GetPolicyCache()
		{
			if (null == m_factory)
			{
				m_factory = new PolicyEngineFactory();
			}

			return m_factory.PolicyCacheInstance;
		}
		protected override IContentEnforcer GetContentEnforcer(IProgressCallback eventSink)
		{
			if (null == m_factory)
			{
				m_factory = new PolicyEngineFactory();
			}

			return m_factory.CreateContentEnforcer(eventSink);
		}
		protected override IContentScanner GetContentScanner()
		{
			if (null == m_factory)
			{
				m_factory = new PolicyEngineFactory();
			}

			return m_factory.CreateContentScanner(null);
		}
		private IPolicyCache GetPolicyCache()
		{
			if (null == m_factory)
			{
				m_factory = new PolicyEngineFactory();
			}

			return m_factory.PolicyCacheInstance;
		}
		/// <summary>
		/// Actually initializes the ContentScanner engine
		/// </summary>
		public static void InitializeEngine()
		{
			//m_contentScannerEvents = null;

			//Create an IPolicyCache service interface.
			//Pass it to a policy processor.
			if (null == m_factory)
			{
				m_factory = new PolicyEngineFactory();
			}

		}