internal SpanQueryResult Process(RemoteClusteredSpanQuery remoteClusteredSpanQuery, MessageContext messageContext, IndexStoreContext storeContext)
        {
            // increment the performance counter
            PerformanceCounters.Instance.SetCounterValue(
                PerformanceCounterEnum.IndexLookupAvgPerRemoteClusteredSpanQuery,
                messageContext.TypeId,
                remoteClusteredSpanQuery.IndexIdList.Count);

            // creating a spanQuery with copy ctor
            VirtualSpanQuery query = new VirtualSpanQuery(remoteClusteredSpanQuery)
            {
                CacheTypeName = storeContext.GetTypeName(messageContext.TypeId),

                // we get only reference at this point
                ExcludeData = true
            };

            SpanQueryResult queryResult = RelayClient.Instance.SubmitQuery <VirtualSpanQuery, SpanQueryResult>(query);

            GetDataItems(remoteClusteredSpanQuery.FullDataIdInfo, remoteClusteredSpanQuery.ExcludeData, messageContext, storeContext, queryResult);

            return(queryResult);
        }
        /// <summary>
        /// Processes the specified remote clustered intersection query.
        /// </summary>
        /// <param name="remoteClusteredIntersectionQuery">The remote clustered intersection query.</param>
        /// <param name="messageContext">The message context.</param>
        /// <param name="storeContext">The store context.</param>
        /// <returns>IntersectionQueryResult</returns>
        internal static IntersectionQueryResult Process(RemoteClusteredIntersectionQuery remoteClusteredIntersectionQuery, MessageContext messageContext, IndexStoreContext storeContext)
        {
            // increment performance counter
            PerformanceCounters.Instance.SetCounterValue(
                PerformanceCounterEnum.IndexLookupAvgPerRemoteClusteredIntersectionQuery,
                messageContext.TypeId,
                remoteClusteredIntersectionQuery.IndexIdList.Count);

            VirtualClusteredIntersectionQuery query = new VirtualClusteredIntersectionQuery(
                remoteClusteredIntersectionQuery.IndexIdList,
                remoteClusteredIntersectionQuery.TargetIndexName,
                storeContext.GetTypeName(messageContext.TypeId))
            {
                ExcludeData    = remoteClusteredIntersectionQuery.ExcludeData,
                GetIndexHeader = remoteClusteredIntersectionQuery.GetIndexHeader,
                Filter         = remoteClusteredIntersectionQuery.Filter,
                intersectionQueryParamsMapping = remoteClusteredIntersectionQuery.IntersectionQueryParamsMapping,
                PrimaryId     = remoteClusteredIntersectionQuery.PrimaryId,
                PrimaryIdList = remoteClusteredIntersectionQuery.PrimaryIdList
            };

            return(RelayClient.Instance.SubmitQuery <VirtualClusteredIntersectionQuery, IntersectionQueryResult>(query));
        }
        /// <summary>
        /// Processes the specified remote clustered intersection query.
        /// </summary>
        /// <param name="remoteClusteredIntersectionQuery">The remote clustered intersection query.</param>
        /// <param name="messageContext">The message context.</param>
        /// <param name="storeContext">The store context.</param>
        /// <returns>IntersectionQueryResult</returns>
        internal static IntersectionQueryResult Process(RemoteClusteredIntersectionQuery remoteClusteredIntersectionQuery, MessageContext messageContext, IndexStoreContext storeContext)
        {
            // increment performance counter
            PerformanceCounters.Instance.SetCounterValue(
                PerformanceCounterEnum.IndexLookupAvgPerRemoteClusteredIntersectionQuery,
                messageContext.TypeId,
                remoteClusteredIntersectionQuery.IndexIdList.Count);

            VirtualClusteredIntersectionQuery query = new VirtualClusteredIntersectionQuery(remoteClusteredIntersectionQuery,
                                                                                            storeContext.GetTypeName(messageContext.TypeId));

            return(RelayClient.Instance.SubmitQuery <VirtualClusteredIntersectionQuery, IntersectionQueryResult>(query));
        }