/// <summary>
 /// Gets the by request id.
 /// </summary>
 /// <param name="requestId">The request id.</param>
 /// <returns>
 /// Instance of the request that matches the request id.
 /// </returns>
 public GlimpseRequest GetByRequestId(Guid requestId)
 {
     lock (queueLock)
     {
         return(GlimpseRequests.FirstOrDefault(r => r.RequestId == requestId));
     }
 }
 /// <summary>
 /// Gets the top.
 /// </summary>
 /// <param name="count">The count.</param>
 /// <returns>
 /// Collection of requests that represent the top x number of requests.
 /// </returns>
 public IEnumerable <GlimpseRequest> GetTop(int count)
 {
     lock (queueLock)
     {
         return(GlimpseRequests.Take(count).ToList());
     }
 }
 /// <summary>
 /// Gets the by request parent id.
 /// </summary>
 /// <param name="parentRequestId">The parent request id.</param>
 /// <returns>
 /// Collection of requests that matches the parent request id.
 /// </returns>
 public IEnumerable <GlimpseRequest> GetByRequestParentId(Guid parentRequestId)
 {
     lock (queueLock)
     {
         return(GlimpseRequests.Where(r => r.ParentRequestId == parentRequestId).ToList());
     }
 }
        /// <summary>
        /// Saves the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        public void Save(GlimpseRequest request)
        {
            if (GlimpseRequests.Count >= BufferSize)
            {
                GlimpseRequests.Dequeue();
            }

            GlimpseRequests.Enqueue(request);
        }
        /// <summary>
        /// Gets the by request id and tab key.
        /// </summary>
        /// <param name="requestId">The request id.</param>
        /// <param name="tabKey">The tab key.</param>
        /// <returns>
        /// Instance of the tab data that matches the request id and tab key.
        /// </returns>
        /// <exception cref="System.ArgumentException">Throws an exception if <paramref name="tabKey"/> is <c>null</c>.</exception>
        public TabResult GetByRequestIdAndTabKey(Guid requestId, string tabKey)
        {
            if (string.IsNullOrEmpty(tabKey))
            {
                throw new ArgumentException("tabKey");
            }

            var request = GlimpseRequests.FirstOrDefault(r => r.RequestId == requestId);

            if (request == null || !request.TabData.ContainsKey(tabKey))
            {
                return(null);
            }

            return(request.TabData[tabKey]);
        }