/// <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); }
/// <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); }
/// <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); }
/// <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; } }
/// <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); }
/// <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(); } }
/// <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); } }