Exemple #1
0
        private static JObject GetJsonContent(string name, CacheItemDetail detail, CacheItemTelemetry telemetry, object value, Uri removeLink, bool expanded)
        {
            var policyContent    = GetJsonPolicyContent(detail);
            var telemetryContent = telemetry != null
                                ? new JObject
            {
                { "memberName", telemetry.Caller.MemberName },
                { "sourceFilePath", telemetry.Caller.SourceFilePath },
                { "sourceLineNumber", telemetry.Caller.SourceLineNumber },
                { "duration", telemetry.Duration },
                { "accessCount", telemetry.AccessCount },
                { "cacheItemStatus", detail.CacheItemStatus.ToString() },
                { "staleAccessCount", telemetry.StaleAccessCount },
                { "lastAccessedOn", telemetry.LastAccessedOn },
                { "isStartup", telemetry.IsStartup },
                { "isAllColumns", telemetry.IsAllColumns },
                { "attributes", new JArray(telemetry.Attributes) }
            }
                                : null;

            var properties = new JObject
            {
                { "name", name },
                { "type", value != null?value.GetType().ToString() : null },
                { "remove", removeLink.AbsoluteUri }
            };

            if (policyContent != null)
            {
                properties.Add("policy", policyContent);
            }

            if (telemetryContent != null)
            {
                properties.Add("telemetry", telemetryContent);
            }

            if (expanded)
            {
                if (value != null)
                {
                    properties.Add("value", JToken.FromObject(value, CrmJsonConvert.CreateJsonSerializer()));
                }

                if (telemetry != null && telemetry.Request != null)
                {
                    properties.Add("request", JToken.FromObject(telemetry.Request, CrmJsonConvert.CreateJsonSerializer()));
                }
            }

            var content = new JObject
            {
                { "properties", properties }
            };

            return(content);
        }
Exemple #2
0
        private static IEnumerable <XElement> GetContent(CacheItemDetail detail, CacheItemTelemetry telemetry)
        {
            if (detail != null && detail.Policy != null)
            {
                yield return(new XElement("policy", GetPolicyContent(detail)));
            }

            if (telemetry != null)
            {
                yield return(new XElement("telemetry", GetTelemetryContent(detail, telemetry)));
            }
        }
Exemple #3
0
        private static IEnumerable <XElement> GetPolicyContent(CacheItemDetail detail)
        {
            yield return(new XElement("isStaleDataAllowed", detail.IsStaleDataAllowed));

            yield return(new XElement("absoluteExpiration", detail.Policy.AbsoluteExpiration));

            yield return(new XElement("slidingExpiration", detail.Policy.SlidingExpiration));

            yield return(new XElement("priority", detail.Policy.Priority));

            if (detail.Policy.ChangeMonitors != null)
            {
                yield return(new XElement("changeMonitors", GetContent(detail.Policy.ChangeMonitors)));
            }
        }
Exemple #4
0
        private static SyndicationContent GetContent(string name, CacheItemDetail detail, CacheItemTelemetry telemetry, object value, Uri removeLink, bool expanded)
        {
            var defaultProps = new[]
            {
                new XElement("name", name),
                new XElement("type", value.GetType().ToString()),
                new XElement("remove", new XAttribute("href", removeLink))
            };

            var properties = defaultProps.Concat(GetContent(detail, telemetry)).Concat(GetContentValues(value, expanded));

            var content = new XElement("properties", properties);

            var sc = SyndicationContent.CreateXmlContent(content);

            return(sc);
        }
Exemple #5
0
        private static JObject GetJsonPolicyContent(CacheItemDetail detail)
        {
            if (detail != null)
            {
                var policyDetail = detail.Policy;

                if (policyDetail != null)
                {
                    var policy = new JObject
                    {
                        { "isStaleDataAllowed", detail.IsStaleDataAllowed },
                        { "absoluteExpiration", policyDetail.AbsoluteExpiration.UtcDateTime },
                        { "slidingExpiration", policyDetail.SlidingExpiration },
                        { "priority", policyDetail.Priority.ToString() },
                        { "changeMonitors", new JArray(policyDetail.ChangeMonitors.SelectMany(cm => cm.CacheKeys)) }
                    };

                    return(policy);
                }
            }

            return(null);
        }
Exemple #6
0
        private static IEnumerable <XElement> GetTelemetryContent(CacheItemDetail detail, CacheItemTelemetry telemetry)
        {
            yield return(new XElement("memberName", telemetry.Caller.MemberName));

            yield return(new XElement("sourceFilePath", telemetry.Caller.SourceFilePath));

            yield return(new XElement("sourceLineNumber", telemetry.Caller.SourceLineNumber));

            yield return(new XElement("duration", telemetry.Duration));

            yield return(new XElement("accessCount", telemetry.AccessCount));

            yield return(new XElement("cacheItemStatus", detail.CacheItemStatus.ToString()));

            yield return(new XElement("staleAccessCount", telemetry.StaleAccessCount));

            yield return(new XElement("lastAccessedOn", telemetry.LastAccessedOn));

            yield return(new XElement("isStartup", telemetry.IsStartup));

            yield return(new XElement("isAllColumns", telemetry.IsAllColumns));

            yield return(new XElement("attributes", telemetry.Attributes));
        }
 /// <summary>
 /// Intializes a new instance of <see cref="CacheItemContainer"/>>
 /// </summary>
 /// <param name="value">The cache value.</param>
 /// <param name="detail">The cache item detail.</param>
 public CacheItemContainer(object value, CacheItemDetail detail = null)
 {
     Value  = value;
     Detail = detail;
 }