Example #1
0
 public RefCountedAppDomain GetAppDomain(SandboxCasPolicySettings casSettings)
 {
     lock (this)
     {
         if (this.m_lastDispensedAppDomain != null && !this.IsLastAppDomainReusable(casSettings))
         {
             try
             {
                 this.m_lastDispensedAppDomain.Dispose();
             }
             finally
             {
                 this.m_lastDispensedAppDomain = null;
             }
         }
         if (this.m_lastDispensedAppDomain == null)
         {
             DateTime            now                 = DateTime.Now;
             AppDomain           appDomain           = this.CreateAppDomain(now, casSettings);
             RefCountedAppDomain refCountedAppDomain = new RefCountedAppDomain(appDomain);
             if (this.m_areAppDomainsReusable)
             {
                 this.m_lastDispensedAppDomain            = refCountedAppDomain.CreateNewReference();
                 this.m_lastAppDomainCreationTime         = now;
                 this.m_settingsForLastDispensedAppDomain = casSettings.Copy();
             }
             return(refCountedAppDomain);
         }
         return(this.m_lastDispensedAppDomain.CreateNewReference());
     }
 }
Example #2
0
        private AppDomain CreateAppDomain(DateTime timeStamp, SandboxCasPolicySettings casSettings)
        {
            if (this.m_policyChanged)
            {
                lock (this)
                {
                    this.m_policyChanged = false;
                }
            }
            string appDomainName = "Local Processing " + timeStamp.ToString(CultureInfo.InvariantCulture);

            return(this.m_policyManager.CreateAppDomainWithPolicy(appDomainName, this.m_evidence, casSettings));
        }
Example #3
0
        private bool IsLastAppDomainReusable(SandboxCasPolicySettings casSettings)
        {
            if (this.m_policyChanged)
            {
                return(false);
            }
            if (!object.Equals(this.m_settingsForLastDispensedAppDomain, casSettings))
            {
                return(false);
            }
            TimeSpan t = DateTime.Now - this.m_lastAppDomainCreationTime;

            if (t < TimeSpan.FromMinutes(1.0))
            {
                return(t >= TimeSpan.FromMinutes(0.0));
            }
            return(false);
        }
Example #4
0
        public SandboxCasPolicySettings Copy()
        {
            SandboxCasPolicySettings sandboxCasPolicySettings = new SandboxCasPolicySettings();

            if (this.m_basePermissions != null)
            {
                sandboxCasPolicySettings.m_basePermissions = this.m_basePermissions.Copy();
            }
            if (this.m_fullTrustAssemblies != null)
            {
                {
                    foreach (StrongName fullTrustAssembly in this.m_fullTrustAssemblies)
                    {
                        sandboxCasPolicySettings.AddFullTrustAssembly(fullTrustAssembly);
                    }
                    return(sandboxCasPolicySettings);
                }
            }
            return(sandboxCasPolicySettings);
        }
Example #5
0
        public override bool Equals(object obj)
        {
            SandboxCasPolicySettings sandboxCasPolicySettings = obj as SandboxCasPolicySettings;

            if (sandboxCasPolicySettings == null)
            {
                return(false);
            }
            if (!object.Equals(this.m_basePermissions, sandboxCasPolicySettings.m_basePermissions))
            {
                return(false);
            }
            if (this.m_fullTrustAssemblies == null)
            {
                if (sandboxCasPolicySettings.m_fullTrustAssemblies != null)
                {
                    return(false);
                }
            }
            else
            {
                if (sandboxCasPolicySettings.m_fullTrustAssemblies == null)
                {
                    return(false);
                }
                int count = this.m_fullTrustAssemblies.Count;
                if (count != sandboxCasPolicySettings.m_fullTrustAssemblies.Count)
                {
                    return(false);
                }
                for (int i = 0; i < count; i++)
                {
                    if (!object.Equals(this.m_fullTrustAssemblies[i], sandboxCasPolicySettings.m_fullTrustAssemblies[i]))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
 public abstract AppDomain CreateAppDomainWithPolicy(string appDomainName, Evidence evidence, SandboxCasPolicySettings casSettings);