Ejemplo n.º 1
0
        /// <summary>
        /// Register a query
        /// </summary>
        public bool RegisterQuerySet <TIdentifier>(string queryId, int count, Identifier <TIdentifier>[] results, object tag)
        {
            lock (this.m_syncObject)
            {
                MemoryQueryInfo retVal = null;
                if (this.m_queryCache.TryGetValue(queryId, out retVal))
                {
                    this.m_tracer.TraceVerbose("Updating query {0} ({1} results)", queryId, results.Count());
                    retVal.Results  = results.Select(o => o.Id).OfType <Object>().ToList();
                    retVal.QueryTag = tag;
                }
                else
                {
                    this.m_tracer.TraceVerbose("Registering query {0} ({1} results)", queryId, results.Count());

                    this.m_queryCache.Add(queryId, new MemoryQueryInfo()
                    {
                        QueryTag     = tag,
                        Results      = results.Select(o => o.Id).OfType <Object>().ToList(),
                        TotalResults = results.ToArray().Count()
                    });
                }
            }
            return(true);
        }
        /// <summary>
        /// Register a query
        /// </summary>
        public bool RegisterQuerySet(Guid queryId, IEnumerable <Guid> results, object tag)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                this.m_tracer.TraceVerbose("Updating query {0} ({1} results)", queryId, results.Count());
                retVal.Results  = results;
                retVal.QueryTag = tag;
            }
            else
            {
                lock (this.m_syncObject)
                {
                    this.m_tracer.TraceVerbose("Registering query {0} ({1} results)", queryId, results.Count());

                    this.m_queryCache.Add(queryId, new MemoryQueryInfo()
                    {
                        QueryTag     = tag,
                        Results      = results,
                        TotalResults = results.Count()
                    });
                }
            }
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Set the query tag
        /// </summary>
        public void SetQueryTag(Guid queryId, object value)
        {
            MemoryQueryInfo query = null;

            if (this.m_queryCache.TryGetValue(queryId, out query))
            {
                query.QueryTag = value;
            }
        }
        /// <summary>
        /// Get the query tag
        /// </summary>
        public object GetQueryTag(Guid queryId)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                return(retVal.QueryTag);
            }
            return(null);
        }
        /// <summary>
        /// Gets the specified query results
        /// </summary>
        public IEnumerable <Guid> GetQueryResults(Guid queryId, int offset, int count)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                return(retVal.Results.Skip(offset).Take(count));
            }
            return(null);
        }
        /// <summary>
        /// Get the total results
        /// </summary>
        public long QueryResultTotalQuantity(Guid queryId)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                return(retVal.TotalResults);
            }
            return(0);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Get query results
        /// </summary>
        public Identifier <TIdentifier>[] GetQueryResults <TIdentifier>(string queryId, int startRecord, int nRecords)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                return(retVal.Results.ToArray().Distinct().Skip(startRecord).Take(nRecords).Select(o => new Identifier <Guid>((Guid)o)).OfType <Identifier <TIdentifier> >().ToArray());
            }
            return(null);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Add results to an existing query
        /// </summary>
        /// <param name="queryId">The identifier of the query to add to</param>
        /// <param name="results">The results to add</param>
        public void AddResults(Guid queryId, IEnumerable <Guid> results, int totalResults)
        {
            MemoryQueryInfo query = null;

            if (this.m_queryCache.TryGetValue(queryId, out query))
            {
                query.Results.AddRange(results);
                query.TotalResults = totalResults;
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Get query results
        /// </summary>
        public IEnumerable <Guid> GetQueryResults(Guid queryId, int startRecord, int nRecords)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                lock (retVal.Results)
                    return(retVal.Results.ToArray().Distinct().Skip(startRecord).Take(nRecords).OfType <Guid>().ToArray());
            }
            return(null);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Add results to id set
        /// </summary>
        public void AddResults(Guid queryId, IEnumerable <Guid> results)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                this.m_tracer.TraceVerbose("Updating query {0} ({1} results)", queryId, results.Count());
                lock (retVal.Results)
                    retVal.Results.AddRange(results.Where(o => !retVal.Results.Contains(o)).Select(o => o));

                //retVal.TotalResults = retVal.Results.Count();
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Add results to id set
        /// </summary>
        public bool AddResults <TIdentifier>(string queryId, Identifier <TIdentifier>[] results)
        {
            MemoryQueryInfo retVal = null;

            if (this.m_queryCache.TryGetValue(queryId, out retVal))
            {
                this.m_tracer.TraceVerbose("Updating query {0} ({1} results)", queryId, results.Count());
                lock (retVal.Results)
                    retVal.Results.AddRange(results.Where(o => !retVal.Results.Contains(o.Id)).Select(o => o.Id).OfType <Object>());

                retVal.TotalResults = retVal.Results.Count();
                return(true);
            }
            else
            {
                return(false);
            }
        }