CanUseQuickCache() static private method

static private CanUseQuickCache ( CodeGroup group ) : bool
group System.Security.Policy.CodeGroup
return bool
Exemplo n.º 1
0
        internal static void EncodeLevel(PolicyLevel level)
        {
            if (level.Path == null)
            {
                throw new PolicyException(Environment.GetResourceString("Policy_UnableToSave", (object)level.Label, (object)Environment.GetResourceString("Policy_SaveNotFileBased")));
            }
            SecurityElement securityElement1 = new SecurityElement("configuration");
            SecurityElement child1           = new SecurityElement("mscorlib");
            SecurityElement child2           = new SecurityElement("security");
            SecurityElement child3           = new SecurityElement("policy");

            securityElement1.AddChild(child1);
            child1.AddChild(child2);
            child2.AddChild(child3);
            child3.AddChild(level.ToXml());
            try
            {
                StringBuilder   stringBuilder    = new StringBuilder();
                Encoding        utF8             = Encoding.UTF8;
                SecurityElement securityElement2 = new SecurityElement("xml");
                securityElement2.m_type = SecurityElementType.Format;
                securityElement2.AddAttribute("version", "1.0");
                securityElement2.AddAttribute("encoding", utF8.WebName);
                stringBuilder.Append(securityElement2.ToString());
                stringBuilder.Append(securityElement1.ToString());
                byte[]    bytes          = utF8.GetBytes(stringBuilder.ToString());
                string    path           = level.Path;
                byte[]    data           = bytes;
                int       length         = data.Length;
                Exception exceptionForHr = Marshal.GetExceptionForHR(Config.SaveDataByte(path, data, length));
                if (exceptionForHr != null)
                {
                    string str = exceptionForHr != null ? exceptionForHr.Message : string.Empty;
                    throw new PolicyException(Environment.GetResourceString("Policy_UnableToSave", (object)level.Label, (object)str), exceptionForHr);
                }
            }
            catch (Exception ex)
            {
                if (ex is PolicyException)
                {
                    throw ex;
                }
                throw new PolicyException(Environment.GetResourceString("Policy_UnableToSave", (object)level.Label, (object)ex.Message), ex);
            }
            Config.ResetCacheData(level.ConfigId);
            if (!PolicyManager.CanUseQuickCache(level.RootCodeGroup))
            {
                return;
            }
            Config.SetQuickCache(level.ConfigId, PolicyManager.GenerateQuickCache(level));
        }
        internal static void EncodeLevel(PolicyLevel level)
        {
            if (level.Path == null)
            {
                string resourceString = Environment.GetResourceString("Policy_UnableToSave", new object[]
                {
                    level.Label,
                    Environment.GetResourceString("Policy_SaveNotFileBased")
                });
                throw new PolicyException(resourceString);
            }
            SecurityElement securityElement  = new SecurityElement("configuration");
            SecurityElement securityElement2 = new SecurityElement("mscorlib");
            SecurityElement securityElement3 = new SecurityElement("security");
            SecurityElement securityElement4 = new SecurityElement("policy");

            securityElement.AddChild(securityElement2);
            securityElement2.AddChild(securityElement3);
            securityElement3.AddChild(securityElement4);
            securityElement4.AddChild(level.ToXml());
            try
            {
                StringBuilder   stringBuilder    = new StringBuilder();
                Encoding        utf              = Encoding.UTF8;
                SecurityElement securityElement5 = new SecurityElement("xml");
                securityElement5.m_type = SecurityElementType.Format;
                securityElement5.AddAttribute("version", "1.0");
                securityElement5.AddAttribute("encoding", utf.WebName);
                stringBuilder.Append(securityElement5.ToString());
                stringBuilder.Append(securityElement.ToString());
                byte[]    bytes          = utf.GetBytes(stringBuilder.ToString());
                int       errorCode      = Config.SaveDataByte(level.Path, bytes, bytes.Length);
                Exception exceptionForHR = Marshal.GetExceptionForHR(errorCode);
                if (exceptionForHR != null)
                {
                    string text = (exceptionForHR != null) ? exceptionForHR.Message : string.Empty;
                    throw new PolicyException(Environment.GetResourceString("Policy_UnableToSave", new object[]
                    {
                        level.Label,
                        text
                    }), exceptionForHR);
                }
            }
            catch (Exception ex)
            {
                if (ex is PolicyException)
                {
                    throw ex;
                }
                throw new PolicyException(Environment.GetResourceString("Policy_UnableToSave", new object[]
                {
                    level.Label,
                    ex.Message
                }), ex);
            }
            Config.ResetCacheData(level.ConfigId);
            if (PolicyManager.CanUseQuickCache(level.RootCodeGroup))
            {
                Config.SetQuickCache(level.ConfigId, PolicyManager.GenerateQuickCache(level));
            }
        }